华为云 K8s 高可用集群 VIP 漂移后无法访问公网

这是我在配置k8s高可用架构时遇到的问题,集群部署在华为云上,3master 3worker架构,3台master配置了keepalived做高可用。

问题:主节点的keeplived挂掉后,管理员再手动恢复时,VIP也会恢复到主网卡上,但是ping不通公网了,公网能访问到服务器,但是服务器不能主动访问公网,只能被动被外界访问(跟NAT反过来一样。。。)

我是怎么搭建该集群的:第一个要解决的是虚拟IP(即VIP)的问题,keepalived在指定网卡上生成一个VIP用于公网对本集群的访问,那么这个VIP就不能是内网IP,在购买了弹性公网IP后,在 虚拟私有云->子网->subnet_xxx->IP地址管理
在这里插入图片描述
处申请虚拟IP,然后和弹性公网IP绑定,再和3台高可用服务器绑定。具体步骤可以看官方文档:https://support.huaweicloud.com/usermanual-vpc/vpc_vip_0011.html#section0

故障点:这里其实是由于默认路由在VIP切换时被内核自动删除了,重启keepalived,VIP切换回来后,默认路由并没有自动恢复,导致数据走的还是内网网络,自然无法访问公网。

解决办法:在keepalived配置中添加自动脚本,服务down掉时删除默认路由,恢复时添加默认路由。
编辑配置文件 /etc/keepalived/keepalived.conf,主要在于下面注释的3行:

[root@k8s-master-0001 ~]# vim /etc/keepalived/keepalived.conf 
! Configuration File for keepalived

global_defs {
   router_id k8s
}
vrrp_script check_haproxy {
    script "killall -0 haproxy"
    interval 3
    weight -2
    fall 10
    rise 2
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.100.154
    }
    track_script {
        check_haproxy
    }
    notify_master "/etc/keepalived/add_route.sh"  #增添默认路由
    notify_backup "/etc/keepalived/del_route.sh"  #删除默认路由
    notify_fault  "/etc/keepalived/del_route.sh"  #删除默认路由
}

添加脚本,这里请参考我的自行添加:

[root@k8s-master-0001 ~]# ls /etc/keepalived/
add_route.sh  del_route.sh  keepalived.conf
[root@k8s-master-0001 ~]# cat /etc/keepalived/add_route.sh 
#!/bin/bash
ip route replace default via 192.168.100.1 dev eth0 src 192.168.100.154
[root@k8s-master-0001 ~]# cat /etc/keepalived/del_route.sh 
#!/bin/bash
ip route del default via 192.168.100.1 dev eth0 src 192.168.100.154 2>/dev/null || true

再修改另外两条高可用服务器,和主节点相似,只要保证这三行内容在配置文件里存在:

    notify_master "/etc/keepalived/add_route.sh"  #增添默认路由
    notify_backup "/etc/keepalived/del_route.sh"  #删除默认路由
    notify_fault  "/etc/keepalived/del_route.sh"  #删除默认路由

还有add_route.sh,del_route.sh脚本文件在合适的位置即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值