Keepalived是一个用于虚拟IP自动切换的软件,能够在多个节点指定一个虚拟IP地址,遇到主节点故障时将该虚拟IP漂移到其它可用的节点,从而保障服务能够持续,用于k8s中master节点的服务IP(即kube-apiserver监听的地址)的容错。api
在Ubuntu18.04 LTS 安装软件(http://www.keepalived.org/):bash
sudo apt install keepalived
刚安装完,配置文件目录/etc/keepalived/是空的,把下面的内容保存为文件keepalived.conf和chk_k8s_master.sh,放到该目录下。spa
虚拟 ip 绑定的网卡 interface enp0s31f6
配置文件/etc/keepalived/keepalived.conf:.net
! Configuration File for keepalived global_defs { } vrrp_script check_k8s { # 自身状态检测 script "/etc/keepalived/chk_k8s_master.sh" interval 3 weight 5 } vrrp_instance VI_1 { # 初始化状态 state MASTER # 虚拟 ip 绑定的网卡 interface enp0s31f6 # 此 ID 要与 Backup 配置一致 virtual_router_id 80 # 默认启动优先级,要比 Backup 大点,但要控制量,保证自身状态监测生效 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { # 虚拟 ip 地址 10.1.1.201 } track_script { check_k8s } }
存活状态检测模块/etc/keepalived/chk_k8s_master.sh:rest
#!/bin/bash count=`ss -tnl | grep 6443 | wc -l` if [ $count = 0 ]; then exit 1 else exit 0 fi
$ vi /etc/keepalived/back_k8s.sh #!/bin/bash systemctl stop kube-apiserver.service sleep 5s systemctl restart kube-kubelet.service systemctl start kube-apiserver.service
而后重启:code
sudo systemctl restart keepalived
如今,能够ping一下设定的虚拟地址10.1.1.201,看是否可用(该地址使用ifconfig显示不出来)。router
Keepalived能够用于k8s中master节点的服务IP(即kube-apiserver监听的地址)的容错。其它副节点需安装全部的master服务(kube-apiserver/kube-scheduler/kube-control-manager)和etcd集群元数据服务。server
更多参考:blog