实验环境
原理
生成kube-vip静态pod配置清单
export VIP=192.168.215.200 # 我的vip是192.168.215.200
export INTERFACE=ens33 #可以用 ip a 查看接口名称
# kube-vip最新镜像为v0.8.0,但我装时无法成功,后来降到v0.7.2后安装成功了
ctr image pull docker.io/plndr/kube-vip:v0.7.2
ctr run --rm --net-host docker.io/plndr/kube-vip:v0.7.2 vip \
/kube-vip manifest pod \
--interface $INTERFACE \
--vip $VIP \
--controlplane \
--services \
--arp \
--leaderElection | tee /etc/kubernetes/manifests/kube-vip.yaml
将kube-vip.yaml复制到另外两台控制平面节点的/etc/kubernetes/manifests/目录
使用kubeadm初始化master节点的集群
kubeadm init --control-plane-endpoint="192.168.215.200" --kubernetes-version=v1.28.2 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --image-repository=registry.aliyuncs.com/google_containers --upload-certs
--control-plane-endpoint填vip地址
使用kubeadm join命令加入另外两台控制平面的节点
验证
三个kube-vip静态pod都成功运行
使用ip a查看vip地址
关闭vip所在主机,vip会飘移都另外一台主机上,集群仍保存正常运行
爬坑记录
我用kube-vip:v0.8.0装了好几天都没装成功,后来换了kube-vip:v0.7.2就装成功了
控制平面节点最少要3台,两台不行,vip不会飘移
问题
当我关闭vip所在主机后,原vip所在主机的所有pod仍显示为running,不知道为何
参考文章
- Say good-bye to HAProxy and Keepalived with kube-vip on your HA K8s control plane | by Kohei Ota | Medium
- 使用 kube-vip 搭建高可用 Kubernetes 集群-阳明的博客|Kubernetes|Istio|Prometheus|Python|Golang|云原生 (qikqiak.com)