kubeadm配置高可用etcd集群
admin
2023-02-26 03:41:10
0

k8s默认在控制平面节点上的kubelet管理的静态pod中运行单个成员的etcd集群,但这不是高可用的方案。

etcd高可用集群至少需要三个成员组成。

etcd默认端口为2379,2380,三个节点的这两个端口都要能通。
可以在kubeadm配置文件更改默认端口。

这个实验有五个服务器。
我开的腾讯云香港服务器做的实验,网速很快,ssh稳定。
百度云没测。
阿里云测试不给力。
推荐腾讯云。
k8s1: master1
k8s2: node1
k8s3: haproxy
k8s4: master2
k8s5: master3

1.首先在k8s master1上安装kubeadm,kubelet,kubectl,然后kubeadm init,最后kubectl get nodes,确认k8s1 master1准备就绪。
k8s安装: ubuntu18安装kubernetes v1.15

2.分别在k8s node1,k8s master2,k8s master3上安装kubeadm,kubectl,kubelet
k8s安装: ubuntu18安装kubernetes v1.15

3.在k8s master1上的kubeadm-init.out文件找到join worker node和 join control-plane node的命令。

4.分别在k8s master2和k8s master3上执行join命令,注意,—control-plane
kubeadm join k8s1:6443 --token 8vqitz.g1qyah2wpd3n723o \
--discovery-token-ca-cert-hash sha256:abd9a745b8561df603ccd58e162d7eb11b416feb4a7bbe1216a3aa114f4fecd9 \
--control-plane --certificate-key 0e1e2844d565e657465f41707d8995b2d9d64246d5f2bf90f475b7782343254f

5.在node1上执行join命令
kubeadm join k8s1:6443 --token 8vqitz.g1qyah2wpd3n723o \
--discovery-token-ca-cert-hash sha256:abd9a745b8561df603ccd58e162d7eb11b416feb4a7bbe1216a3aa114f4fecd9

6.现在master1 , master2, master3都可以执行kubectl管理k8s集群。
kubectl get nodes
显示有三个master,一个node.

7.安装haproxy负载均衡
apt-get update
apt-get install haproxy -y
cd /etc/haproxy
cp haproxy.conf haproxy.conf.bak
在defaults下面
log global
mode tcp
option tcplog
frontend proxynode
bind *:80
stats uri /proxystats
default_backend k8s-qq
backend k8s-qq
balance roundrobin
server master1 172.19.0.12:6443 check
server master2 172.19.0.8:6443 check
server master3 172.19.0.4:6443 check
systemctl restart haproxy
systemctl enable haproxy

8.查看haproxy
https://k8s3.example.com/proxystats
能看到三个后端服务器

9.查看运行etcd的pod
kubectl -n kube-system get pods | grep etcd
这里我们能看到k8s1,k8s2,k8s3上分别运行etcd

10.查看etcd的日志
kubectl -n kube-system logs etcd-k8s1
kubectl -n kube-system logs etcd-k8s1 -f

11.登录到另一个etcd的pod上检查etcd集群状态
kubectl -n kube-system exec -it k8s2 — /bin/sh
/# ETCDCTL_API=3 etcdctl -w table \
—endpoints 172.19.0.12:2379, 172.19.0.4:2379, 172.19.0.8:2379 \
—cacert /etc/kubernetes/pki/etcd/ca.crt \
—cert /etc/kubernetes/pki/etcd/server.crt \
—key /etc/kubernetes/pki/etcd/server.key \
endpoint status
这里会显示我们的三个etcd,其中一个为true,二个为false.

12.测试故障转移
12.1.假设现在k8s2为ture,ssh登录到k8s2,然后关闭docker
systemctl stop docker
12.2.查看节点信息
kubectl get node
显示k8s2为NotReady状态。
12.4.在k8s3上再次查看endpoint status,发现k8s2现在为false,现在k8s3为true
12.5.不能关闭k8s1的docker测试,关闭k8s1,整个集群不可用。
12.6.查看haproxy的统计报告。
12.7.测试完后,启动docker

相关内容

热门资讯

意大利向印尼赠送退役航母,一场... 澎湃新闻特约撰稿 林森据环球时报4月30日援引外媒报道,意大利议会4月28日批准政府的一项计划,将退...
特朗普:即便油价涨到200美元... 伊朗战争爆发搅乱全球能源供应,油价高涨,美国国内许多人苦不堪言。但是美国总统特朗普说,即便油价涨到2...
泽连斯基称乌方将“对等”回应俄... 新华社基辅5月6日电(记者李东旭) 乌克兰总统泽连斯基6日晚在社交媒体发文称,自6日凌晨以来,俄方以...
人民日报刊文:扫码用餐 吃得“... 河南信阳推进公务接待改革扫码用餐 吃得“明白”(厉行节约 反对浪费)本报记者 王乐文 毕京津《人民日...
活动回顾:心灵律动·刚柔共生 心灵律动 - 活动回顾 - “五一”期间, 东莞市工人文化宫连续举办了两场 “心灵律动·刚柔共生”心...
商业航天政策利好 全国首个卫星... 来源:21世纪经济报道 21世纪经济报道记者周慧 5月6日,工业和信息化部官网消息称,工业和信息化部...
伊朗确认前往美国参加世界杯:将... 当地时间5月6日,伊朗国家足球队主教练在接受采访时表示,伊朗国家足球队将于美加墨世界杯开始前14天抵...
雷达、机库、营房、燃料库、飞机... 据《华盛顿邮报》5月6日报道,通过卫星影像分析发现,自2月28日战事爆发以来,伊朗空袭已在中东美军军...
从买买买到租租租,“租用一代”... “五一”假期还在路上,年轻人已经“租”起来了。 “租三天,不到300块钱。”五一放假前一周,清清已给...
【品牌】摩托罗拉大折叠屏新机定... 此前联想预热将于5月19日19点举行联想天禧AI一体多端全场景新品超能之夜活动,届时将带来多款新品,...