Keepalived快速使用(Ubuntu18.04)

Keepalived是一個用於虛擬IP自動切換的軟件,能夠在多個節點指定一個虛擬IP地址,遇到主節點故障時將該虛擬IP漂移到其它可用的節點,從而保障服務能夠持續,用於k8s中master節點的服務IP(即kube-apiserver監聽的地址)的容錯。api

  • 注意
    • 服務所依賴的環境須要在全部節點上預先配置好。
    • Keepalived僅對IP地址進行漂移,當前應用狀態會丟失。
    • 當前應用的狀態和數據須要應用自身在多節點間進行同步。

在Ubuntu18.04 LTS 安裝軟件(http://www.keepalived.org/):bash

sudo apt install keepalived

剛安裝完,配置文件目錄/etc/keepalived/是空的,把下面的內容保存爲文件keepalived.conf和chk_k8s_master.sh,放到該目錄下。spa

  • 注意:
    • 虛擬IP會佔用一個物理網卡地址。經過配置文件指定。
    • 使用 ifconfig查看網卡的de vice接口信息,選擇其它服務不用的網卡用於虛擬IP。
    • 由於keepalived會動態改變綁定網卡的IP地址,不要把其它服務綁定到該網卡端口和IP地址上。
虛擬 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

K8s中使用

Keepalived能夠用於k8s中master節點的服務IP(即kube-apiserver監聽的地址)的容錯。其它副節點需安裝全部的master服務(kube-apiserver/kube-scheduler/kube-control-manager)和etcd集羣元數據服務。server

更多參考:blog

相關文章
相關標籤/搜索