2017-02-03 45 views
0

希望有人可以提供幫助。 我有一個運行Kubernetes的3x節點CoreOS羣集。節點如下: 192.168.1.201 - 控制器 192.168.1.202 - 工作節點 192.168.1.203 - 工作節點無法在Kubernetes上啓動kube-dns

羣集是啓動和運行,並且我可以運行下面的命令:

> kubectl get nodes 

NAME   STATUS      AGE 
192.168.1.201 Ready,SchedulingDisabled 1d 
192.168.1.202 Ready      21h 
192.168.1.203 Ready      21h 

> kubectl get pods --namespace=kube-system 

NAME         READY  STATUS    RESTARTS AGE 
kube-apiserver-192.168.1.201   1/1  Running   2   1d 
kube-controller-manager-192.168.1.201 1/1  Running   4   1d 
kube-dns-v20-h4w7m      2/3  CrashLoopBackOff 15   23m 
kube-proxy-192.168.1.201    1/1  Running   2   1d 
kube-proxy-192.168.1.202    1/1  Running   1   21h 
kube-proxy-192.168.1.203    1/1  Running   1   21h 
kube-scheduler-192.168.1.201   1/1  Running   4   1d 

正如您所見,kube-dns服務運行不正常。它不斷重新啓動,我正在努力理解爲什麼。任何幫助調試這將不勝感激(或指示在哪裏閱讀有關調試這個。運行kubectl日誌不會帶來任何回...不知道是否附加功能不同標準pod。

運行一個kubectl描述莢,我可以看到容器被殺害由於不健康:

16m   16m    1  {kubelet 192.168.1.203} spec.containers{kubedns}  Normal   Created   Created container with docker id 189afaa1eb0d; Security:[seccomp=unconfined] 
16m   16m    1  {kubelet 192.168.1.203} spec.containers{kubedns}  Normal   Started   Started container with docker id 189afaa1eb0d 
14m   14m    1  {kubelet 192.168.1.203} spec.containers{kubedns}  Normal   Killing   Killing container with docker id 189afaa1eb0d: pod "kube-dns-v20-h4w7m_kube-system(3a545c95-ea19-11e6-aa7c-52540021bfab)" container "kubedns" is unhealthy, it will be killed and re-created 

請找到該命令的完整輸出作爲GitHub的要點在這裏:https://gist.github.com/mehstg/0b8016f5398a8781c3ade8cf49c02680

在此先感謝

+0

嗨 - 刪除和重新部署kube-dns會導致相同的問題? – pagid

+0

嗨。是。已嘗試刪除並重新部署。同樣的問題很不幸 – mehstg

回答

1

如果您使用kubeadm安裝羣集,則應在安裝後添加pod網絡。

如果你選擇flannel作爲你的pod網絡,你應該在你的init命令kubeadm init --pod-network-cidr 10.244.0.0/16中有這個參數。

法蘭絨YAML文件可以在coreOS flannel repo中找到。

所有你需要做的,如果你的集羣是正確初始化(讀以上),是運行kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

一旦啓動並運行(它會創建每個節點上的豆莢),您KUBE-DNS莢應上來。

如果您需要重置安裝(例如將參數添加到kubeadm init),則可以在所有節點上使用kubeadm reset

通常情況下,您可以在主服務器上運行init命令,然後添加一個pod網絡,然後添加其他節點。

這在Getting started guide的步驟3/4中關於pod網絡更詳細地描述。

+0

非常感謝Morten。我將在明天解決這個問題,並讓你知道我如何繼續。 – mehstg

+0

Hi Morten。我今天瀏覽了入門指南,但是這與我在CoreOS網站上關注的不同。我使用了這個 - https://coreos.com/kubernetes/docs/latest/kubernetes-on-generic-platforms.html並使用構建腳本來啓動框。我還在CoreOS盒子上放置了絨布,因此不確定我是否仍然需要pod網絡。 – mehstg

+0

我正面對問題中提到的完全相同的問題,但使用編織網。 同樣的解決方案適用於我的問題嗎?據我所知,我們只在絨布的情況下指定pod-network-cidr – Yudi

0

作爲你的要點說你的pod網絡似乎被打破。您正在使用10.10.10.X的一些自定義podnetwork。您應該將這些IP傳送給所有組件。

請檢查,是否與其他現有的網絡沒有衝突。

我建議你用印花布設置,因爲這是解決方案爲我帶來了CoreOS K8S了工作

+0

嗨大衛。我一定在日誌輸出中錯過了。在我的要點中,它表明網絡已經斷開(在我調試時供將來參考)。 Morten已經在下面回覆了,我會嘗試他的建議,我似乎正在瀏覽說明網絡已損壞的日誌行。 – mehstg

0

隨後與絨布網絡正式kubeadm文檔的步驟後,我遇到了類似的問題

http://janetkuo.github.io/docs/getting-started-guides/kubeadm/

它顯示爲網絡莢陷入錯誤狀態:

KUBE-DNS-XXXXXXXX-xxxvn(RPC錯誤)

KUBE絨布-DS-XXXXX(CrashLoopBackOff)

KUBE絨布-DS-XXXXX(CrashLoopBackOff)

KUBE絨布-DS-XXXXX(CrashLoopBackOff)

在我的情況是有關RBAC權限錯誤,並通過運行

解決kubectl創建-f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml

之後,所有KUBE-系統吊艙進入運行狀態。上游問題在github上討論https://github.com/kubernetes/kubernetes/issues/44029