在運維工作中,在k8s集群使用命令查看etcd集群狀態
在 Kubernetes (k8s) 集群中,etcd 是集群的核心鍵值存儲,用于保存所有集群數據(如 Pod、Node、Service 狀態等)。要檢查 etcd 集群的健康狀態,通常需要直接訪問運行 etcd 的控制平面節點,因為 etcd 一般不對外暴露。
以下是查看 etcd 集群狀態的常用命令和步驟:
?? 前提條件
-
登錄到控制平面節點(Master Node):
ssh user@master-node-ip -
確保你有權限執行命令:
- 通常需要
sudo權限。 etcdctl工具必須已安裝(Kubernetes 安裝時通常會包含)。
- 通常需要
-
設置環境變量(推薦):
etcd默認啟用 TLS 加密通信,因此需要指定證書路徑。這些路徑通常可以在etcd的靜態 Pod 配置文件(位于/etc/kubernetes/manifests/etcd.yaml)中找到。export ETCDCTL_API=3 export ETCDCTL_CACERT=/etc/kubernetes/pki/etcd/ca.crt export ETCDCTL_CERT=/etc/kubernetes/pki/etcd/server.crt export ETCDCTL_KEY=/etc/kubernetes/pki/etcd/server.key?? 路徑可能因安裝方式(kubeadm、二進制、云廠商等)略有不同,請根據實際情況調整。
? 常用命令查看 etcd 集群狀態
1. 查看 etcd 成員列表(Member List)
etcdctl member list
或(指定 endpoints):
etcdctl --endpoints=https://127.0.0.1:2379 member list
輸出示例:顯示所有
etcd成員的 ID、名稱、peer 和 client URLs。可用于確認集群是否為多節點,以及成員是否在線。
2. 檢查 etcd 集群健康狀態(Health Check)
etcdctl endpoint health --cluster
輸出示例:
https://192.168.1.10:2379 is healthy: successfully committed proposal: took = 2.345678ms https://192.168.1.11:2379 is healthy: successfully committed proposal: took = 3.123456ms如果所有節點都返回
is healthy,說明集群正常。
3. 查看 etcd 集群狀態(Status)
etcdctl endpoint status --cluster -w table
輸出示例(表格形式):
ENDPOINT ID VERSION DB SIZE IS LEADER RAFT TERM RAFT INDEX https://...:2379 abcd1234... 3.5.4 50MB true 10 123456 這個命令非常有用,可以查看:
- 各節點是否為 Leader
- 數據庫大小(DB SIZE)
- Raft 協議的 Term 和 Index(用于判斷同步狀態)
4. 獲取 etcd 鍵值數量(可選)
etcdctl endpoint status --cluster --write-out=json | grep "keys"
可以粗略了解集群中存儲的數據量。
?? 如果未設置環境變量,可直接指定證書參數
etcdctl \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key \
endpoint health
??? 常見問題排查
Failed to dial ...: x509: certificate signed by unknown authority- 證書路徑錯誤或證書不匹配,請檢查
/etc/kubernetes/pki/etcd/下的證書。
- 證書路徑錯誤或證書不匹配,請檢查
No endpoints specified- 忘記使用
--endpoints參數。
- 忘記使用
- 某個節點顯示 unhealthy
- 檢查該節點的
etcd進程是否運行:systemctl status etcd或crictl ps | grep etcd - 檢查網絡連通性和防火墻設置(端口 2379, 2380)。
- 檢查該節點的
? 總結
最常用的命令組合是:
# 設置 API 版本和證書
export ETCDCTL_API=3
export ETCDCTL_CACERT=/etc/kubernetes/pki/etcd/ca.crt
export ETCDCTL_CERT=/etc/kubernetes/pki/etcd/server.crt
export ETCDCTL_KEY=/etc/kubernetes/pki/etcd/server.key
# 查看健康狀態
etcdctl endpoint health --cluster
# 查看詳細狀態(推薦)
etcdctl endpoint status --cluster -w table
# 查看成員
etcdctl member list
通過這些命令,你可以全面掌握 etcd 集群的運行狀況,是 Kubernetes 運維和故障排查的重要技能。

浙公網安備 33010602011771號