本地搭建,我们可以使用LVS+KEEPALIVED方式轻松实现Kubernetes中的Api-server的高可用。但是,阿里的ECS不能使用KEEPALIVED。因为VPC不支持组播,没组播VRRP拿什么周期发通告报文(224.0.0.18)。所以我们*只能使用阿里的 slb了,阿里官方答复因为你的虚拟VIP是假的,他们需要IP与MAC地址绑定证明这个真是存在的才可以(但是我觉得不支持组播才是真正原因)。唯一的解决办法就是用弹性网卡,把那个IP配置在那个网卡上,出问题吧那个网卡迁移走。心好累。
弹性网卡使用方法我方下面了:
https://help.aliyun.com/document_detail/56955.html#section-zx6-9u0-9b0
既然KEEPALIVED不能用那就用阿里的SLB作高可用呗,因为考虑到安全性与不需要对外提供接口那么就用内网IP的SLB吧(负载分为公网IP的和内网的IP)。但是,重点来了。坑已挖好,需要运维来填。
一小坑一个大坑
先说小坑,在ECS购买的时候。记得可用区,不同可用区属于不同的网段。即使因为VPC网络互通。但是,从网络上看那是三层领域。还有VIP可以配置在弹性网卡上解决联通性问题,但配置弹性网卡的时候第一会规定你配置的地址要是与虚拟交换机同段,第二不用说既然与虚拟交换机同段那么就一定会有选择归属那个虚拟交换机。可有一个问题不是所有ECS都支持弹性网卡,就算支持也不是都支持热插拔,就算支持热插拔了,每块弹性网卡绑定虚拟交换机,虚拟交换机IP可不是同一个段。三台机器一个可用区还好,如果是两个或者两个以上那不就凉了。出问题你怎么迁移,注定有一个可用区的机器傻傻看着你。
再说说大坑,阿里云SLB有一个说法就是SLB后端的服务器不能在作为服务端同时又作为客户端,什么意思?