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