Page tree

如需转载请标注内容地址为: https://wiki.shileizcc.com/confluence/display/HAP/Haproxy+Proxy+Kubernetes+ApiServer+in+VIP

Skip to end of metadata
Go to start of metadata

未经允许不得转载

Haproxy Proxy Kubernetes APIServer in VIP

使用 Haproxy 做 K8s APIServer VIP 代理。


准备机器

主机名IP备注
node01192.166.1.12
node02192.166.1.2
node03192.166.1.13

配置每个节点的 hosts 。

使用 Centos 系统,VIP 使用 Corosync + Pacemaker 生成,文档  install Document

安装 haproxy

$ yum install -y haproxy

备份配置文件

$ mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.back

修改配置文件

$ cat > /etc/haproxy/haproxy.cfg << EOF
global
  log 127.0.0.1 local0
  log 127.0.0.1 local1 notice
  maxconn 4096
  chroot /usr/share/haproxy
  user haproxy
  group haproxy
  daemon
defaults
     log global
     mode tcp
     timeout connect 5000ms
     timeout client 50000ms
     timeout server 50000ms
frontend stats-front
  bind *:8088
  mode http
  default_backend stats-back
backend stats-back
  mode http
  balance source
  stats uri /haproxy/stats
  stats auth admin:passw0rd
listen Kubernetes-Cluster
  bind 192.166.1.222:6443
  balance leastconn
  mode tcp
  server node01 192.166.1.12:6443 check inter 2000 fall 3
  server node02 192.166.1.2:6443 check inter 2000 fall 3
  server node03 192.166.1.13:6443 check inter 2000 fall 3
EOF

启动服务

$ systemctl start haproxy
$ systemctl status haproxy

服务状态

端口状态

查看 Haproxy stats 状态

把 Haproxy 配入 PCS

所以 Haproxy 节点把开机启动项关闭,并在一台机器上使用 crm 进入 PCS 命令行模式

$ systemctl disable haproxy
$ crm config

输入配置管理参数,需要保证配置文件全部一致

# primitive haproxy systemd:haproxy \
op start interval=0 \
op start interval=0s timeout=20 \
op stop interval=0s timeout=20 \
op monitor interval=20s timeout=30s \
meta priority=100 target-role=Started
	
# colocation haproxy-with-vip inf: VIP:Started haproxy:Started
# verify
# commit

查看服务状态

可以自行试验,我把 node01 重启后变成为,直接把 node01 vip 切到了 node02 上

过几秒之后再次执行,haproxy 被 node02 成功启动,而这时候的 node01 也被探测启动成功。

查看端口时,只有 Node02 的 Haproxy 被成功启动。

  • No labels