资源 | 大小 |
---|---|
硬盘 | >= 20G |
cpu | >= 2核 |
内存 | >= 2G |
主机名 | IP | 配置 |
---|---|---|
master | 192.168.10.155 | 3核+2G+20G |
worker1 | 192.168.10.234 | 3核+2G+20G |
worker2 | 192.168.10.147 | 3核+2G+20G |
所有机器都要执行
yum 更新
sudo yum update -y
bash-completion: tab命令补全wget:下载工具vim-enhanced:vim编辑器net-tools:网络工具gcc: 编译器sudo yum install -y bash-completion wget vim-enhanced net-tools gcc
3.设置主机名查看主机名hostname
设置主机名以下三条命令分别在三个节点执行
(资料图)
#master节点hostnamectl set-hostname k8s-master#worker1节点hostnamectl set-hostname k8s-worker1#woker2节点hostnamectl set-hostname k8s-worker2
4.配置hosts文件将节点加入到 hosts 文件中
编辑/etc/hosts
文件
vi /etc/hosts
添加以下内容
192.168.10.155 k8s-master192.168.10.234 k8s-worker1192.168.10.147 k8s-worker2
5.设置时间同步sudo yum -y install ntpdatesudo ntpdate ntp1.aliyun.comsudo systemctl status ntpdatesudo systemctl start ntpdatesudo systemctl status ntpdatesudo systemctl enable ntpdate
6.关闭防火墙或者开通指定端口这里使用关闭防火墙
sudo systemctl stop firewalld.service sudo systemctl disable firewalld.service
7.关闭 swap 交换空间#查看free -h#临时关闭swapsudo swapoff -a#久关闭swap分区sudo sed -i "s/.*swap.*/#&/" /etc/fstab
8.关闭selinux#查看getenforcecat /etc/selinux/config#临时关闭sudo setenforce 0#永久关闭sudo sed -i "s/^SELINUX=enforcing$/SELINUX=permissive/" /etc/selinux/config
9. 安装 docker, Containerd安装 docker, Containerd# 删除 docker(如果有的话)sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine# 安装必备工具sudo yum install -y yum-utils device-mapper-persistent-data lvm2# 加入 docker 源sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 安装 dockersudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin# 安装 containerdsudo yum install -y containerd
配置# 停止 containerdsudo systemctl stop containerd.service# 生成并修改配置文件sudo cp /etc/containerd/config.toml /etc/containerd/config.toml.baksudo containerd config default > $HOME/config.tomlsudo cp $HOME/config.toml /etc/containerd/config.tomlsudo sed -i "s#registry.k8s.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g" /etc/containerd/config.tomlsudo sed -i "s#SystemdCgroup = false#SystemdCgroup = true#g" /etc/containerd/config.toml# 将 containerd 加入开机自启sudo systemctl enable --now containerd.service# 启动 dockersudo systemctl start docker.service# 将 docker 加入开机自启sudo systemctl enable docker.servicesudo systemctl enable docker.socketsudo systemctl list-unit-files | grep dockersudo systemctl daemon-reloadsudo systemctl restart dockersudo docker infosudo systemctl status docker.servicesudo systemctl status containerd.service
10.添加阿里云 k8s 镜像仓库添加/etc/yum.repos.d/kubernetes.repo
文件;文件内容如下
[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/# 是否开启本仓库enabled=1# 是否检查 gpg 签名文件gpgcheck=0# 是否检查 gpg 签名文件repo_gpgcheck=0gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
11.设置 docker 镜像加速sudo mkdir -p /etc/dockervi /etc/docker/daemon.json
/etc/docker/daemon.json
文件添加如下内容
{ "registry-mirrors": [ "https://dockerproxy.com", "https://hub-mirror.c.163.com", "https://mirror.baidubce.com", "https://ccr.ccs.tencentyun.com" ], "exec-opts": ["native.cgroupdriver=systemd"]}
12. 将桥接的IPv4流量传递到iptables的链cat >/etc/modules-load.d/k8s.conf </etc/sysctl.d/k8s.conf <
13.安装k8s# 安装 1.27.1 版本sudo yum install -y kubelet-1.27.1-0 kubeadm-1.27.1-0 kubectl-1.27.1-0 --disableexcludes=kubernetes --nogpgchecksystemctl daemon-reloadsudo systemctl restart kubeletsudo systemctl enable kubelet
安装最新版本(生产环境不建议)
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes --nogpgcheck
14.k8s配置master 初始化(仅在master节点主机上执行)kubeadm init --image-repository=registry.aliyuncs.com/google_containers --apiserver-advertise-address=192.168.42.150 --kubernetes-version=v1.27.1
--image-repository
: 镜像加速地址,一般不动
--apiserver-advertise-address
: master节点IP地址
--kubernetes-version
: kubernetes版本,自己选择的什么版本就改成什么版本
初始化失败可以使用kubeadm reset
重置;失败原因多半是因为网络问题,可以换个网络试试
mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config
将 node 加入集群(仅在node节点主句执行)kubeadm init
命令执行成功后,会打印以下内容 (不要直接复制,每个人不一样):
kubeadm join 192.168.10.155:6443 --token pn5997.vkugw8cmdpc407y2 \--discovery-token-ca-cert-hash sha256:b625d6be2a3ccb56f3277e835b343d33a0b2e93e56e238a48daf830d3b7219f2
如果忘记或者过期可以使用以下命令重新生成
kubeadm token create --print-join-command
查看集群状态(master 节点执行)kubectl get nodes
输出
NAME STATUS ROLES AGE VERSIONk8s-master NotReady control-plane 8m42s v1.27.1k8s-worker1 NotReady 82s v1.27.1k8s-worker2 NotReady 84s v1.27.1
可以看到所有节点都是 NotReady ,是因为还没有配置网络
配置网络(仅在master节点执行)k8s版本要与Calico版本对应上,具体查看
https://docs.tigera.io/calico/latest/getting-started/kubernetes/requirements
下载calico.yaml
文件
wget --no-check-certificate https://projectcalico.docs.tigera.io/archive/v3.25/manifests/calico.yaml
修改calico.yaml
文件
在- name: CLUSTER_TYPE
下方添加如下内容
- name: CLUSTER_TYPE value: "k8s,bgp" #下方为新增内容- name: IP_AUTODETECTION_METHOD value: "interface=master节点主机的网卡名称"
配置网络
kubectl apply -f calico.yaml
再次查看节点信息
kubectl get nodes
依然还是没有成功;查看 pod 状态,没有正常启动
kubectl get pods --all-namespaces -o wide | grep kube-system
使用crictl logs
命令查看任何一个pod,发现有如下错误
crictl logs coredns-7bdc4cb885-28jnf
kubectl logs -n kube-system
命令查看状态不是running的pod,发现有如下错误
kubectl logs -n kube-system calico-node-bfxtkkubectl logs -n kube-system coredns-7bdc4cb885-28jnf
新建/etc/crictl.yaml
文件,写入如下内容
runtime-endpoint: unix:///run/containerd/containerd.sockimage-endpoint: unix:///run/containerd/containerd.socktimeout: 10debug: false
使用kubectl delete pod -n kube-system
命令删除那些状态不是running的pod。例如
kubectl delete pod -n kube-system calico-kube-controllers-6c99c8747f-kmkdl
再次查看pod的启动状态,全部都是在running状态
kubectl get pod -n kube-system
另外crictl ps
也可以使用了。
crictl ps -a
使用crictl logs
也可以查看日志了
crictl logs 4838afe83150e
15.其他k8s命令补全! grep -q kubectl "$HOME/.bashrc" && echo "source /usr/share/bash-completion/bash_completion" >>"$HOME/.bashrc"! grep -q kubectl "$HOME/.bashrc" && echo "source <(kubectl completion bash)" >>"$HOME/.bashrc"! grep -q kubeadm "$HOME/.bashrc" && echo "source <(kubeadm completion bash)" >>"$HOME/.bashrc"! grep -q crictl "$HOME/.bashrc" && echo "source <(crictl completion bash)" >>"$HOME/.bashrc"source "$HOME/.bashrc"
常用命令# 获取节点kubectl get nodes -o wide# 实时查询nodes状态watch kubectl get nodes -o wide# 获取podkubectl get pods --all-namespaces -o wide# 查看镜像列表kubeadm config images list# 节点加入集群kubeadm token create --print-join-command# 描述nodekubectl describe node k8s-master# 描述podkubectl describe pod kube-flannel-ds-hs8bq --namespace=kube-system
16.测试以下命令在主节点执行
创建一个 nginxkubectl create deployment nginx --image=nginx
查看状态kubectl get pods -o wide
等待ContainerCreating
变成Running
后执行下一个步骤
kubectl expose deployment nginx --port=80 --type=NodePort
查看 pos 及服务信息kubectl get pod,svc
在浏览器中访问http://192.168.10.155:31930/
地址根据你自己的主机变化,端口上面输出的信息中 PORT(S) 这一栏会有
上一篇: 电脑辐射大还是手机辐射大呀(电脑辐射大还是手机辐射大)
下一篇: 最后一页
X 关闭
X 关闭
爱美之心人皆有之。都说头发是人的第二张脸,如果头发毛躁、像枯草一样,就算再美的颜值,在别人眼中也会大打折扣。怎么样打造柔顺健康的秀
(上海战疫录)上海高校架“云梯” 校企隔空交流保就业服务不断线 中新网上海4月23日电(记者陈静)新冠肺炎疫情防控之下,即将走上社
中新网西宁4月23日电 (孙睿 赵倩)记者23日从青海省格尔木市官方获悉,柴达木盆地首家“护蕾女童温馨小屋”——青海省妇女儿童保护“
(上海战疫录)守“沪”日志:沪人居家“读”处 “文艺团购”线上送“书香” 中新网上海4月23日电 题:守“沪”日志:沪人居家“读
(抗击新冠肺炎)内蒙古满洲里新增3例本土确诊病例 年龄最大的86岁 中新网满洲里4月23日电 (记者 张玮)23日,内蒙古自治区满洲里市
中新网北京4月23日电 (徐婧)北京市疾病预防控制中心副主任、全国新型冠状病毒肺炎专家组成员庞星火在23日的疫情防控新闻发布会上通报
中新网兰州4月23日电 (记者 冯志军)中国核城“四〇四”,曾被网友称为“一个地图上找不到的地方”,近年开始在甘肃嘉峪关市城区建起
(上海战疫录)增援民警诉说方舱里的“生活百态” 中新网上海4月23日电 题:增援民警诉说方舱里的“生活百态” 作者 李姝徵 宋
中新网北京4月23日电(徐婧)北京市朝阳区人民政府副区长杨蓓蓓在23日召开的北京疫情防控新闻发布会上表示,全区学校每周进行三次全员核
中新网北京4月23日电(徐婧)北京市朝阳区人民政府副区长杨蓓蓓在23日召开的北京疫情防控新闻发布会上表示,潘家园街道松榆东里11号楼、4