Keepalived快速使用(Ubuntu18.04)

原创
2018/12/13 16:05
阅读数 1W

Keepalived是一个用于虚拟IP自动切换的软件,可以在多个节点指定一个虚拟IP地址,遇到主节点故障时将该虚拟IP漂移到其它可用的节点,从而保障服务可以持续,用于k8s中master节点的服务IP(即kube-apiserver监听的地址)的容错。

  • 注意
    • 服务所依赖的环境需要在所有节点上预先配置好。
    • Keepalived仅对IP地址进行漂移,当前应用状态会丢失。
    • 当前应用的状态和数据需要应用自身在多节点间进行同步。

在Ubuntu18.04 LTS 安装软件(http://www.keepalived.org/):

sudo apt install keepalived

刚安装完,配置文件目录/etc/keepalived/是空的,把下面的内容保存为文件keepalived.conf和chk_k8s_master.sh,放到该目录下。

  • 注意:
    • 虚拟IP会占用一个物理网卡地址。通过配置文件指定。
    • 使用 ifconfig查看网卡的de vice接口信息,选择其它服务不用的网卡用于虚拟IP。
    • 因为keepalived会动态改变绑定网卡的IP地址,不要把其它服务绑定到该网卡端口和IP地址上。
虚拟 ip 绑定的网卡
    interface enp0s31f6

配置文件

配置文件/etc/keepalived/keepalived.conf:

! 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:

#!/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

然后重启:

sudo systemctl restart keepalived

现在,可以ping一下设定的虚拟地址10.1.1.201,看是否可用(该地址使用ifconfig显示不出来)。

K8s中使用

Keepalived可以用于k8s中master节点的服务IP(即kube-apiserver监听的地址)的容错。其它副节点需安装所有的master服务(kube-apiserver/kube-scheduler/kube-control-manager)和etcd集群元数据服务。

更多参考:

展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部