使用haproxy+keepalived实现k8s集群访问总代理
k8s中所有节点做高可用,使用vip做代理.haproxy+keepalived实现
目录
一、简述安装环境
二、安装haproxy和keepalived
三、修改haproxy的配置文件
四、修改keepalived的配置文件
五、启动keepalived
六、启动haproxy
七、验证服务是否都正常启动
八、验证k8s访问环境
一、简述安装环境
操作系统: CentOS Linux release 7.5.1804 (Core)
已安装程序:kubernetes,docker
集群节点:master(192.168.52.150),node2(192.168.52.152)
二、安装haproxy和keepalived
在master和node2上分别执行如下代码
yum install -y haproxy keepalived
三、修改haproxy的配置文件
1.修改master和node2的配置文件,他们的配置文件相同
vim /etc/haporxy/haproxy.cfg
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /var/run/haproxy-admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
nbproc 1
defaults
log global
timeout connect 5000
timeout client 10m
timeout server 10m
listen admin_stats
bind 0.0.0.0:10080 #这里需要设置一个不和其他程序冲突的端口,查看端口是否占用:netstat -anp| grep 10080
mode http
log 127.0.0.1 local0 err
stats refresh 30s
stats uri /status
stats realm welcome login\ Haproxy
stats auth admin:123456
stats hide-version
stats admin if TRUE
listen kube-master
bind 0.0.0.0:8443 #这个8443端口也可以修改为其他端口,主要是keepalived中用于端口检测的
mode tcp
option tcplog
balance source
server 192.168.52.150 192.168.52.150:6443 check inter 2000 fall 2 rise 2 weight 1 #6443端口为k8s集群中apiserver的端口,需要注意
server 192.168.52.152 192.168.52.152:6443 check inter 2000 fall 2 rise 2 weight 1
需要注意和需要修改的地方我已经在段落后面添加了注释,其他地方不需要改动 ,将如上内容复制替换到2个集群服务器的/etc/haproxy/haproxy.cfg中即可
四、修改keepalived的配置文件
master和node2中keepalived的配置文件有些许的不一样,我会将2个配置文件内容都贴出来.
1. 下面是master的配置文件
global_defs {
router_id lb-master-105
}
vrrp_script check-haproxy {
script "killall -0 haproxy"
interval 5
weight -30
}
vrrp_instance VI-kube-master {
state MASTER #需要将状态设置为(MASTER)
priority 120
dont_track_primary
interface ens33 #这个地方需要特别注意,一个服务器有很多虚拟网卡,而这个网卡是真实网卡,可以通过ifconfig 命令查看你服务器中的名字,我的服务器中ip地址192.168.52.150对应的网卡名称就是ens33,这个不能写错
virtual_router_id 68 #这个id可以是其他数字,但是该数字必须在master和node2中要保持一致,也可以照我这个写,不需要修改的
advert_int 3
track_script {
check-haproxy
}
virtual_ipaddress {
192.168.52.160 #这个就是虚拟出来的ip了,简称VIP,需要确保集群环境中不能有ip与这个vip冲突,其次需要确定该vip能和集群中所有节点ping的通
}
}
2. 下面是node2的配置文件
global_defs {
router_id lb-master-105
}
vrrp_script check-haproxy {
script "killall -0 haproxy"
interval 5
weight -30
}
vrrp_instance VI-kube-master {
state BACKUP #此处需要设置为备份状态(BACKUP)
priority 110
dont_track_primary
interface ens33 #这个地方需要特别注意,一个服务器有很多虚拟网卡,而这个网卡是真实网卡,可以通过ifconfig 命令查看你服务器中的名字,我的服务器中ip地址192.168.52.150对应的网卡名称就是ens33,这个不能写错
virtual_router_id 68 #这个id可以是其他数字,但是该数字必须在master和node2中要保持一致,也可以照我这个写,不需要修改的
advert_int 3
track_script {
check-haproxy
}
virtual_ipaddress {
192.168.52.160 #这个就是虚拟出来的ip了,简称VIP,需要确保集群环境中不能有ip与这个vip冲突,其次需要确定该vip能和集群中所有节点ping的通
}
}
五、启动keepalived并设置开机自启
#启动
systemctl start keepalived
#查看状态
systemctl status keepalived
#设置开机自启
systemctl enable keepalived
六、启动haproxy
#启动
systemctl start haproxy
#查看状态
systemctl status haproxy
#设置开机自启
systemctl enable haproxy
注意:如果启动haproxy失败了的话,尝试执行下面这句话
setsebool -P haproxy_connect_any=1
七、验证服务是否都正常启动
1.master
2.node2
八、验证k8s访问环境
访问master
访问node2
访问vip
由此,大功告成!
喜欢的朋友还望点个赞+关注,后期会有更多更新等你哦,(* ̄︶ ̄)
更多推荐
所有评论(0)