使用阿里云ECS搭建kubernetes高可用架构
#因为服务器用的是阿里云ECS,不支持keepalived+haproxy的高可用架构,所以我直接使用haproxy去进行高可用部署
#缺点是haproxy的机器一旦宕机,k8s的集群也会宕机,haproxy的机器没事的话,k8s集群会正常保证高可用,一个挂掉,另一个顶上
环境信息:
haproxy:10.0.0.11
master-1:10.0.0.22
master-2:10.0.0.10
master-3:10.0.0.23
系统:ubuntu 22.04
#部署集群直接略过
安装haproxy
apt install haproxy -yhaproxy的配置文件:
路径:
/etc/haproxy/haproxy.cfg内容:
global
log 127.0.0.1 local0
nbproc 1 # 1 is recommended
maxconn 51200 # maximum per-process number of concurrent connections
pidfile /etc/haproxy/haproxy.pid
tune.ssl.default-dh-param 2048
defaults
mode http # { tcp|http|health }
option redispatch
option abortonclose
timeout connect 5000ms
timeout client 240m
timeout server 240m
log global
balance roundrobin
listen stats
bind 0.0.0.0:2936
mode http
stats enable
stats refresh 10s
stats hide-version
stats uri /admin
stats realm LB2\ Statistics
stats auth mathilde:Mathilde1861
listen web-service
bind 127.0.0.1:9
frontend cpaas_frontend_6443
bind *:6443
mode tcp
default_backend cpaas_6443backend cpaas_6443
mode tcp
balance roundrobin
stick-table type ip size 200k expire 30m
stick on src
server master-1 10.0.0.22:6443 check port 6443 inter 1000 maxconn 51200 #只需要修改ip即可
server master-2 10.0.0.10:6443 check port 6443 inter 1000 maxconn 51200
server master-3 10.0.0.23:6443 check port 6443 inter 1000 maxconn 51200
保存退出
启动
systemctl start haproxy
查看端口
netstat -ntlp |grep 6443
查看日志
journalctl -xefu haproxy
k8s集群配置
使用命令初始化master: #control-plane-endpoint的ip为haproxy的ip+端口
kubeadm init --control-plane-endpoint=10.0.0.11:6443 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.27.4 --service-cidr=10.10.0.0/16 --pod-network-cidr=10.244.0.0/16 --upload-certs
生成的加入集群命令上面的是加入多master的,下面的是加入node
多master集群加入节点,需要control-plane-endpoint的密钥
kubeadm join 192.168.66.50:6443 --token h305n1.vpc223usk7yze0fm --discovery-token-ca-cert-hash sha256:5d73260eb588e2f31183bfa04b63fab12f614fa6cba8c382ceb9ea555b1e70e7 --control-plane --certificate-key 74890361532bc100970cb253c7cd6e939c985694324f5233b29c721b79e4e693
如果遗忘加入master命令,使用以下两条命令生成
生成control-plane-endpoint的密钥
kubeadm init phase upload-certs --upload-certs
生成加入集群的命令
kubeadm token create --print-join-command



浙公网安备 33010602011771号