背景說明
? 二進(jìn)制方式安裝的k8s集群,etcd集群有3個(gè)節(jié)點(diǎn),某天有一臺(tái)機(jī)器hang住了,無法遠(yuǎn)程ssh登陸,于是被管理員直接重啟了,重啟后發(fā)現(xiàn)k8s集群刪除一個(gè)deployment應(yīng)用,多次刷新一會(huì)有,一會(huì)沒有,于是在3個(gè)節(jié)點(diǎn)上執(zhí)行etcd命令去查詢?cè)摂?shù)據(jù),發(fā)現(xiàn)被重啟的節(jié)點(diǎn)上仍存在刪除的該應(yīng)用的數(shù)據(jù),于是判斷etcd集群的該節(jié)點(diǎn)存在臟數(shù)據(jù),和其他節(jié)點(diǎn)數(shù)據(jù)不同步。
排障過程
發(fā)現(xiàn)問題
# 刪除應(yīng)用
kubectl -n kube-system delete deploy metrics-server
# 檢查應(yīng)用狀態(tài)
kubectl -n kube-system get pod | grep metrics-server
此處多次查詢發(fā)現(xiàn)一會(huì)存在,一會(huì)不存在
# 檢查etcd節(jié)點(diǎn)狀態(tài)
etcdctl member list
etcdctl --endpoints=https://192.168.100.100:2379,https://192.168.100.101:2379,https://192.168.100.102:2379 --write-out=table endpoint status
# 在每個(gè)節(jié)點(diǎn)上執(zhí)行查詢,找出問題節(jié)點(diǎn)
ETCDCTL_API=3 etcdctl get /registry/deployments/kube-system/metrics-server
? 從上面發(fā)現(xiàn)etcd集群節(jié)點(diǎn)數(shù)據(jù)不一致的問題 ,雖然停掉該問題節(jié)點(diǎn),集群仍然可以正常使用,但這也只能是臨時(shí)的辦法,2個(gè)節(jié)點(diǎn),如果不能選舉出誰是leader,會(huì)影響集群的健壯性和服務(wù)的可靠性,因此,我們需要對(duì)該問題節(jié)點(diǎn)的etcd服務(wù)進(jìn)行修復(fù)。
如何修復(fù)
1. 備份數(shù)據(jù)
在做操作前需要做好正常數(shù)據(jù)的備份,以免修復(fù)不成功無法還原,這點(diǎn)是很重要的,特別是生產(chǎn)環(huán)境。
備份方式:
a. 直接打包數(shù)據(jù)目錄
主要打包的目錄有data? wal 兩個(gè)目錄
b. etcd 快照方式備份
之前也寫過,這里不再贅述。文章來源:http://www.zghlxwxcb.cn/news/detail-754540.html
2. 如何修復(fù)
1) 停掉問題節(jié)點(diǎn)的etcd服務(wù)
systemctl stop etcd
2) 清空數(shù)據(jù)目錄
主要清空data wal 目錄文章來源地址http://www.zghlxwxcb.cn/news/detail-754540.html
3)獲取問題節(jié)點(diǎn)etcd的id
etcdctl member list
4) 從集群中移除問題節(jié)點(diǎn)
etcdctl member remove <問題節(jié)點(diǎn)ID>
5)重新將問題節(jié)點(diǎn)加入集群
etcdctl [證書] --endpoints="https://192.168.100.100:2379,https://192.168.100.101:2379,https://192.168.100.102:2379" member add etcd-192.168.100.102 --peer-urls="https://192.168.100.102:2380"
?6)修改etcd配置文件:將initial-cluster-state的值new改成existing
sed -i 's/new/existing/g' /etc/systemd/system/etcd.service
systemctl daemon-reload
?7) 啟動(dòng)服務(wù)
systemctl start etcd
systemctl status etcd
?8) 檢查etcd集群狀態(tài)
到了這里,關(guān)于K8S集群etcd 某個(gè)節(jié)點(diǎn)數(shù)據(jù)不一致如何修復(fù) —— 筑夢之路的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!