簡體   English   中英

Kops滾動更新失敗,主節點“集群未通過驗證”

[英]Kops rolling-update fails with “Cluster did not pass validation” for master node

由於某種原因,在通過kops(版本1.13.0)從kubernetes 1.11.9升級到1.12.9之后,我的主節點無法再連接到群集。 在清單中,我升級kubernetesVersion > 1.12.9 -從1.11.9。 這是我唯一要做的更改。 但是,當我運行kops rolling-update cluster --yes是時,出現以下錯誤:

Cluster did not pass validation, will try again in "30s" until duration "5m0s" expires: machine "i-01234567" has not yet joined cluster.
Cluster did not validate within 5m0s

之后,如果我運行kubectl get nodes我將不再在群集中看到該主節點。

通過切入斷開連接的主節點實例進行一些調試,我通過運行sudo cat /var/log/kube-apiserver.log在api服務器日志中發現了以下錯誤:

controller.go:135] Unable to perform initial IP allocation check: unable to refresh the service IP block: client: etcd cluster is unavailable or misconfigured; error #0: dial tcp 127.0.0.1:4001: connect: connection refused

我懷疑問題可能與etcd有關,因為當我運行sudo netstat -nap | grep LISTEN | grep etcd sudo netstat -nap | grep LISTEN | grep etcd sudo netstat -nap | grep LISTEN | grep etcd沒有輸出。

任何人都知道如何將主節點重新加入群集或對嘗試的事情有建議嗎?

我進行了一些研究,但對您的想法卻很少:

  1. 如果etcd grep沒有輸出,則意味着您的etcd服務器已關閉。 檢查“已退出” etcd容器的日志| grep Exited | grep etcd | grep Exited | grep etcd | grep Exited | grep etcd然后logs <etcd-container-id>

  2. 嘗試我發現的以下指令

1-我使用etcdctl從de etcd集群中刪除了舊的master。 您將需要在etcd-server容器上進行連接。

2-在新的主節點上,我停止了kubelet和protokube服務。

3-空Etcd數據目錄。 (數據和數據事件)

4-編輯/etc/kubernetes/manifests/etcd.manifests和etcd-events.manifest,將ETCD_INITIAL_CLUSTER_STATE從新更改為現有。

5-從新的主服務器獲取名稱和PeerURLS,並使用etcdctl在群集上添加新的主服務器。 (etcdctl成員添加“名稱”“ PeerULR”)您將需要在etcd服務器容器上進行連接。

6-在新的主服務器上啟動kubelet和protokube服務。

  1. 如果不是這種情況,則說明您的證書可能有問題。 它們是在集群創建期間提供的,其中一些具有允許的主節點端點。 如果是這種情況,則需要創建新的證書並將其滾動到api服務器/ etcd群集。

請讓我知道是否有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM