cppla带你玩k8s之二(kubernets-ha高可用集群)

cppla带你玩k8s之二(kubernets-ha高可用集群)

kubernetes-ha集群介绍

kubernetes master默认只有1个节点,当master宕机后是无法继续调度的。这里把kubernetes master节点扩展到3个节点,结合keepalived(ip飘移)技术完成高可用kubernetes集群组建,安装过程参考:https://github.com/cookeem/kubeadm-ha

VIP(virtual ip address)地址HA: 10.10.10.100 (使用keepalived实现)

kubernetes-ha集群架构图

kubernetes-ha集群准备过程

kubernetes集群安装准备不再重复,详细参考教程一:https://www.cpp.la/230.html

初始化inventory文件

调整集群配置

启动kubernetes集群

验证kubernetes集群是否成功

所有master节点安装keepalived 和 haproxy

所有master节点配置haproxy

keepalived模式是一主二备

node1 master keepalived配置

  • VIP 所在的接口(interface ${VIP_IF})为 eth0;
  • 使用 killall -0 haproxy 命令检查所在节点的 haproxy 进程是否正常。如果异常则将权重减少(-30),从而触发重新选主过程;
  • router_id、virtual_router_id 用于标识属于该 HA 的 keepalived 实例,如果有多套 keepalived HA,则必须各不相同;

node2 and node3 backup keepalived配置

  • VIP 所在的接口(interface ${VIP_IF})为 eth0;
  • 使用 killall -0 haproxy 命令检查所在节点的 haproxy 进程是否正常。如果异常则将权重减少(-30),从而触发重新选主过程;
  • router_id、virtual_router_id 用于标识属于该 HA 的 keepalived 实例,如果有多套 keepalived HA,则必须各不相同;
  • priority 的值必须小于 master 的值;
  • node2节点priority设置为110,node2节点priority设置为100,同时注意配置:unicast_src_ip 和 unicast_peer。

kubernetes-ha-cluster遇到的坑

AWS,DigitalOcean等公有云主机默认禁止了组播,所以Keepalived这里推荐采用单播的心跳方式
另外由于公有云都为虚拟机,限制比较严重,已知有网关或其他arp得原因。

  • 建议在局域网或自有IDC测试该集群。
  • 生产环境联系机房,通过网络设置使得Virtual ip这个VIP可以通过内网访问。

IP飘移演示

首先在所有master节点启动服务systemctl start haproxy; systemctl start keepalived;

gif动图演示如下 cpp.la

kubernetes-VIP高可用演示

其他参考配置

以上测试on centos7.6, time:20190125, by: cpp.la

发表评论

电子邮件地址不会被公开。 必填项已用*标注