千家信息网

kubeadm配置高可用etcd集群

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,k8s默认在控制平面节点上的kubelet管理的静态pod中运行单个成员的etcd集群,但这不是高可用的方案。etcd高可用集群至少需要三个成员组成。etcd默认端口为2379,2380,三个节点的这
千家信息网最后更新 2026年11月01日kubeadm配置高可用etcd集群

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

集群 三个 测试 命令 服务器 端口 节点 服务 运行 成员 文件 状态 腾讯 实验 登录 管理 配置 均衡 这不 两个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 美国互联网保险保险科技 互联网科技未来 互联网科技与金融科技 齐家互联网科技 四个字互联网科技公司取名 成都仁贤领冠互联网科技有限公司 佩信高科技互联网 华中科技有哪些互联网大佬 哈尔滨新华互联网科技学院 小米互联网科技园设置 互联网时代科技改变生活 互联网还是高科技吗 厦门千工互联网科技有限公司 互联网5g黑科技有哪些 互联网科技大奖都有哪些公司 山东大美朱楼互联网科技有限公司 云鲸互联网络科技有限公司 互联网科技机房 互联网科技收购价值 每日互联网科技新闻 广东万易互联网科技有限公司惠州分公司 深圳恒合互联网络科技有限公司 上海卓越科技 互联网 现代科技和互联网有关系吗 受益于互联网科技的高速发展 河南猎农互联网科技有限公司 武汉健翔互联网络科技有限公司 和信科技工业互联网 民营互联网公司国防科技 西安左小互联网科技有限公司
0