Etcd 高可用故障演练

2023-06-19 22:55:02 浏览数 (3)

目的

本次演练旨在测试 Kubernetes 的 etcd 高可用性,检验是否能够在其中一个 etcd 节点发生故障的情况下,其他 etcd 节点能够接管其工作,确保集群仍能正常运行。

集群架构

演练场景

在一个三节点的 Kubernetes 集群中,我们将模拟其中一个 etcd 节点的故障,观察剩余的 etcd 节点是否能够正常运行。

演练过程

  1. 确认集群当前健康状态 kubectl get componentstatuses # 确认所有组件状态均为正常 kubectl -n kube-system get endpoints | grep etcd # 确认 etcd Endpoints 列表 kubectl -n kube-system get pods | grep etcd # 确认 etcd Pod 的数量 # 确认etcd 集群状态 ETCD_CA_CERT="/etc/kubernetes/pki/etcd/ca.crt" ETCD_CERT="/etc/kubernetes/pki/etcd/server.crt" ETCD_KEY="/etc/kubernetes/pki/etcd/server.key" ETCDCTL_API=3 /usr/local/bin/etcdctl --endpoints=https://127.0.0.1:2379 --cacert="${ETCD_CA_CERT}" --cert="${ETCD_CERT}" --key="${ETCD_KEY}" member list ETCDCTL_API=3 /usr/local/bin/etcdctl --endpoints=${HOST1},${HOST2},${HOST3} --cacert="${ETCD_CA_CERT}" --cert="${ETCD_CERT}" --key="${ETCD_KEY}" endpoint health
  2. 停止 M3 节点 etcd 服务 mkdir -p /home/clay/etcdbak mv /etc/kubernetes/manifests/etcd.yaml /home/clay/etcdbak/
  3. 确认剩余节点是否能正常提供服务 # 重复执行步骤一命令 在其他 etcd 节点上执行 kubectl create 命令测试 Kubernetes 集群是否能够正常运行,例如 kubectl create deployment nginx 持续通过 vip 域名两种方式,调用 apiserver 服务,统计影响时长
  4. 启动 M3 节点 etcd 服务 mv /home/clay/etcdbak/etcd.yaml /etc/kubernetes/manifests/
  5. 确认集群当前健康状态 # 重复执行步骤一命令

1 人点赞