以下部署方案适合在预生产、生产环境中使用
准备
主机要求参考
| Host IP | Host Name | Role | 备注 | 
|---|---|---|---|
| 192.168.5.141 | master1 | master, etcd | 2C/8G/100G | 
| 192.168.5.142 | master2 | master, etcd | 2C/8G/100G | 
| 192.168.5.143 | master3 | master, etcd | 2C/8G/100G | 
| 192.168.5.145 | worker01 | worker | 4C/16G/100G | 
| 192.168.5.146 | worker02 | worker | 4C/16G/100G | 
| 192.168.5.147 | worker03 | worker | 4C/16G/100G | 
| 192.168.5.148 | vip | vip | |
| 192.168.6.156 | lb-0 | lb (Keepalived + HAProxy) | |
| 192.168.6.159 | lb-1 | lb (Keepalived + HAProxy) | 
安装负载均衡器
以下使用Keepalived + HAProxy作为负载均衡器
yum安装
yum install keepalived haproxy psmisc -y
配置HAProxy
在lb-0和lb-1上做如下配置,注意backend的服务地址:
# HAProxy Configure /etc/haproxy/haproxy.cfg
global
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    log                     global
    option                  httplog
    option                  dontlognull
    timeout connect         5000
    timeout client          5000
    timeout server          5000
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend  kube-apiserver
    bind *:6443
    mode tcp
    option tcplog
    default_backend kube-apiserver
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend kube-apiserver
    mode tcp
    option tcplog
    balance     roundrobin
    default-server inter 10s downinter 5s rise 2 fall 2 slowstart 60s maxconn 250 maxqueue 256 weight 100
    server kube-apiserver-1 192.168.5.141:6443 check
    server kube-apiserver-2 192.168.5.142:6443 check
    server kube-apiserver-3 192.168.5.143:6443 check
检查配置文件语法是否正确
haproxy -f /etc/haproxy/haproxy.cfg -c
重启HAProxy和enable HAProxy
systemctl restart haproxy && systemctl enable haproxy
Stop HAProxy
systemctl stop haproxy
配置Keepalived
配置文件在
/etc/keepalived/keepalived.conf
主HAProxy
主HAProxy 192.168.6.156
global_defs {
  notification_email {
  }
  smtp_connect_timeout 30   
  router_id LVS_DEVEL01
  vrrp_skip_check_adv_addr
  vrrp_garp_interval 0
  vrrp_gna_interval 0
}
vrrp_script chk_haproxy {
  script "killall -0 haproxy"
  interval 2
  weight 2
}
vrrp_instance haproxy-vip {
  state MASTER  
  priority 100  
  interface ens192                       
  virtual_router_id 60
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass 1111
  }
  unicast_src_ip 192.168.6.156     
  unicast_peer {
    192.168.6.159                      
  }
  virtual_ipaddress {
    #vip
    192.168.5.148/24
  }
  track_script {
    chk_haproxy
  }
}
备HAProxy
备HAProxy 192.168.6.159
global_defs {
  notification_email {
  }
  router_id LVS_DEVEL02
  vrrp_skip_check_adv_addr
  vrrp_garp_interval 0
  vrrp_gna_interval 0
}
vrrp_script chk_haproxy {
  script "killall -0 haproxy"
  interval 2
  weight 2
}
vrrp_instance haproxy-vip {
  state BACKUP
  priority 90
  interface ens192                        
  virtual_router_id 60
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass 1111
  }
  unicast_src_ip 192.168.6.159      
  unicast_peer {
    192.168.6.156                        
  }
  virtual_ipaddress {
    192.168.5.148/24
  }
  track_script {
    chk_haproxy
  }
}
启动keepalived并enable keepalived
systemctl restart keepalived && systemctl enable keepalived 
验证可用性
用于查看每个磅节点的 vip 绑定状态:ip a s
ip a s
通过以下命令暂停 VIP 节点 HAProxy:
systemctl stop haproxy
再次使用 检查每个 lb 节点的 vip 绑定,并检查 vip 是否漂移:ip a s
ip a s
或者,使用下面的命令:
systemctl status -l keepalived
创建集群
./kk create cluster -f config-v1.18.6-v3-3m3w-ha.yaml