在三台k8s master节点上配置Keepalived 和 HAproxy高可用
1、在三个 Kubernetes 主节点上安装 Keepalived 和 HAproxy。
2、配置 Keepalived 的主配置文件 /etc/keepalived/keepalived.conf。该配置文件应包括以下内容:
global_defs {
router_id kube-router
}
vrrp_script haproxy-check {
script "killall -0 haproxy"
interval 2
weight 2
}
vrrp_instance VI_1 {
interface eth0
state MASTER
priority 101
virtual_router_id 51
unicast_src_ip <master1-ip>
unicast_peer {
<master2-ip>
<master3-ip>
}
authentication {
auth_type PASS
auth_pass password
}
virtual_ipaddress {
<haproxy-virtual-ip>
}
track_script {
haproxy-check
}
}
该配置文件将配置一个名为 VI_1 的 VRRP 实例,并指定其中一个 Kubernetes 主节点作为 MASTER,另外两个节点作为 BACKUP。VRRP 实例还配置了一个 haproxy-check 脚本来检查 HAproxy 进程的运行状况。此外,virtual_ipaddress 部分将指定 HAproxy 的虚拟 IP 地址,它将被用于向客户端提供服务。
3、在每个 Kubernetes 主节点上配置 HAproxy,例如 /etc/haproxy/haproxy.cfg。该配置文件应包括以下内容:
global
log 127.0.0.1 local0 notice
maxconn 4096
user haproxy
group haproxy
defaults
log global
mode tcp
option tcplog
option dontlognull
option redispatch
retries 3
timeout client 50s
timeout server 50s
timeout connect 5s
frontend k8s-frontend
bind <haproxy-virtual-ip>:6443
mode tcp
default_backend k8s-backend
backend k8s-backend
mode tcp
balance roundrobin
server k8s-master-1 <master1-ip>:6443 check inter 1000
server k8s-master-2 <master2-ip>:6443 check inter 1000
server k8s-master-3 <master3-ip>:6443 check inter 1000
该配置文件将配置一个名为 k8s-frontend 的 HAproxy 前端,该前端将绑定到 HAproxy 的虚拟 IP 地址和端口 6443 上。它还配置了一个名为 k8s-backend 的 HAproxy 后端,该后端将负载均衡到三个 Kubernetes 主节点的 IP 地址上。
4、在每个 Kubernetes 主节点上启动 Keepalived 和 HAproxy 服务,并验证服务是否正常运行。
以上就是在三个 Kubernetes 主节点上配置 Keepalived 和 HAproxy 高可用的步骤。请注意,在配置过程中需要将 、、 和 替换为适当的值,以便与您的环境匹配。此外,建议您在配置之前备份重要的配置文件,以便在出现问题时进行恢复。
在配置完成后,您可以通过以下方式测试高可用性:
1、在当前主节点上停止 HAproxy 服务并验证是否有其他节点接管了服务。
2、在当前主节点上停止 Keepalived 服务并验证是否有其他节点接管了虚拟 IP 地址。
3、在当前主节点上停止 kube-apiserver 服务并验证是否可以从其他节点访问 Kubernetes API。
如果所有测试都通过,则说明您已成功配置了 Kubernetes 主节点上的 Keepalived 和 HAproxy 高可用。
以前的
# 选两个节点安装 Keepalived 和 HAproxy
yum install keepalived haproxy psmisc -y
# 在这两台机器上修改配置文件
vi /etc/haproxy/haproxy.cfg
# 只需要修改最后这里,两台机器都这样改 6443 是 apiserver 端口
backend app
balance roundrobin
server app-1 10.110.159.15:6443 check
server app-2 10.110.159.16:6443 check
systemctl restart haproxy
systemctl enable haproxy
# Keepalived
vi /etc/keepalived/keepalived.conf
# 注意修改注释部分 两台机器的 src ip 和 peer ip 对调
interface eno1 # Network card
unicast_src_ip 10.110.159.15 # The IP address of this machine
unicast_peer {
10.110.159.16 # The IP address of peer machines
}
virtual_ipaddress {
10.110.159.25/24 # The VIP address
}
systemctl restart keepalived
systemctl enable keepalived