Title

使用阿里云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 -y

haproxy的配置文件:
路径:
/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_6443

backend 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

 

posted @ 2023-12-19 15:43  Esurts~  阅读(45)  评论(0)    收藏  举报