资源包(calico.tar.gz,calico.yaml,k8s22images.tar.gz)链接:https://pan.baidu.com/s/1WKXk1v3uIUs3GpKcS11aXQ
提取码:t8yg
把这些包都上传到/root/下就可以
环境案例:
192.168.8.10 master01
192.168.8.20 worker01
192.168.8.30 worker02
前提环境三台都需要操作
#修改hosts文件
[root@master01 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.8.10 master01
192.168.8.20 worker01
192.168.8.30 worker02
#设置ssh互信
#修改主机名称
#先修改ip地址
#关闭selinux
[root@master01 ~]# cat /etc/selinux/config
SELINUX=disabled
#关闭防火墙
[root@master01 ~]# systemctl stop firewalld
#配置iptables
[root@master01 ~]# cat /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
#将桥接的IPv4流量传递到iptables的链
[root@master01 ~]# sysctl -p /etc/sysctl.d/k8s.conf
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: 没有那个文件或目录
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: 没有那个文件或目录
net.ipv4.ip_forward = 1
#如果报错则加载模块
[root@master01 ~]# modprobe br_netfilter
#然后在从新执行上一条命令
#关闭swap
[root@master01 ~]# swapoff -a
然后还需要设置时间同步首先需要在master01上设置时间源
[root@master01 ~]# vim /etc/chrony.conf
server ntp.aliyun.com iburst
allow 192.168.8.0/24
[root@master01 ~]# systemctl restart chronyd
然后在其他的两台节点上配置时间指向192.168.8.10
[root@worker01 ~]# vim /etc/chrony.conf
server 192.168.8.10 iburst
[root@worker01 ~]# systemctl restart chronyd
[root@worker02 ~]# vim /etc/chrony.conf
server 192.168.8.10 iburst
[root@worker02 ~]# systemctl restart chronyd
然后所有主机都需要安装docker
如果主机上没有docker-ce源则先配置docker-ce源
[root@master01 ~]# sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
如果主机上有docker-ce源则直接安装docker就可以,安装docker需要指定版本
[root@master01 ~]# yum install docker-ce-20.10.24 -y
[root@master01 ~]# systemctl start docker
[root@master01 ~]# vim /etc/docker/daemon.json
{ "exec-opts":["native.cgroupdriver=systemd"], "registry-mirrors": [ "https://19zk62zw.mirror.aliyuncs.com", "https://hub-mirror.c.163.com", "https://reg-mirror.qiniu.com" ]}
[root@master01 ~]# systemctl restart docker
需要下载镜像这里有下载好的镜像
接下来三台主机都需要导入k8s的镜像(三台都需要)
[root@master01 ~]# docker load -i calico.tar.gz
[root@master01 ~]# docker load -i k8s22images.tar.gz
导入完成之后就在master01上初始化master01节点
[root@master01 ~]# kubeadm init --apiserver-advertise-address 192.168.8.10 --pod-network-cidr 10.244.0.0/16
初始化成功之后会提示一条命令复制这条命令道worker01和worker02上操作
还需要在master01上修改配置文件
[root@master01 ~]# mkdir -p $HOME/.kube
[root@master01 ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master01 ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
[root@master01 ~]# export KUBECONFIG=/etc/kubernetes/admin.conf
然后根据初始化完成提示的命令在worker01和worker02上添加节点
[root@worker01 ~]# kubeadm join 192.168.8.10:6443 --token eqwmj1.q69dg1g3omzqpwd7 \
--discovery-token-ca-cert-hash sha256:8153defc32d52ea41e30131abb4c2bade3f2105131b1452c2fe746504c9572f0
[root@worker02 ~]# kubeadm join 192.168.8.10:6443 --token eqwmj1.q69dg1g3omzqpwd7 \
--discovery-token-ca-cert-hash sha256:8153defc32d52ea41e30131abb4c2bade3f2105131b1452c2fe746504c9572f0
然后在master01上启动calico.yaml文件
[root@master01 ~]# kubectl apply -f calico.yaml
然后在master01上可以看到节点了
[root@master01 ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
master01 NotReady control-plane,master 9m15s v1.22.17
worker01 Ready <none> 7m36s v1.22.17
worker02 Ready <none> 7m v1.22.17
如果想要在添加一台主机worker03,则需要把这台主机加入到master01的集群里
添加节点
同样这台主机也是需要配置好前提的环境
添加节点我们初始化完成的token的值默认是2个小时如果过期了就执行 kubeadm token create在生成一个新的token值
在worker03上添加就可以
[root@worker03 ~]# kubeadm join 192.168.8.10:6443 --token eqwmj1.q69dg1g3omzqpwd7 \
--discovery-token-ca-cert-hash sha256:8153defc32d52ea41e30131abb4c2bade3f2105131b1452c2fe746504c9572f0
删除节点
先在需要删除节点的主机上退出节点集群的链接
[root@worker03 ~]# kubeadm reset
然后在master01上删除节点
[root@master01 ~]# kubectl delete node worker03