2017-07-12 61 views
1

當創建/添加節點到kubernetes時,我們還必須創建一個運河吊艙。在新節點上安排豆莢之前等待運河吊艙

目前,kubernetes不等待運河吊艙試圖安排豆莢前準備,導致故障(以下錯誤)

Error syncing pod, skipping: failed to "CreatePodSandbox" for "nginx-2883150634-fh5s2_default(385d61d6-6662-11e7-8989-000d3af349de)" with CreatePodSandboxError: "CreatePodSandbox for pod \"nginx-2883150634-fh5s2_default(385d61d6-6662-11e7-8989-000d3af349de)\" failed: rpc error: code = 2 desc = NetworkPlugin cni failed to set up pod \"nginx-2883150634-fh5s2_default\" network: failed to find plugin \"loopback\" in path [/opt/loopback/bin /opt/cni/bin]" 

一旦運河吊艙向上運行-,簡單地刪除失敗的pod(s)將解決這個問題。

我的問題是:在嘗試在節點上安排pod之前,告知kubernetes等待網絡pod準備就緒的正確方法是什麼?

  • 我應該玷污節點只允許運河,並且一旦它準備好就重繪嗎?
  • 一旦Canal準備就緒,我應該腳本刪除失敗的吊艙嗎?
  • 是否有配置或方法可以解決問題?
+0

你能描述更多導致這個問題的步驟嗎?也許實際的'kubectl'命令或至少是工作流程,爲什麼你需要做這個工作流程?在部署其他Pod之前是不是Canal部署到所有集羣的東西? –

+0

>是不是Canal部署其他Pod之前部署到所有集羣的東西? 我認爲是這樣,但不是1.6.6 您的評論,我已更新到最新版本的運河。問題已修復。 這裏現在發生了什麼: 1:新的吊艙創建 2:K8S嘗試安排新的吊艙,失敗 3:新節點創建 4:K8S嘗試新的節點上安排新吊艙,由於失敗運河不準備就緒 5:運河準備就緒 6:??重試在新節點上安排新的pod,它可以工作。 – Mia

+0

在我看來,這些類型的故障在這種情況下是正常的。設計重試和失敗而不是聲明明確的依賴關係。 –

回答

0

這是常見問題,所以我會發布答案。

這種行爲是正常的,特別是在自託管的k8s集羣中。在自我託管的環境中,所有部署,包括控制平面元素(例如,kube-apiserver,運河)都是同時安排的。

一旦控制平面運行,失敗的窗格應該最終正常啓動。 k8s將繼續重新啓動失敗的窗格,直到它正常啓動。清單可以與其他控制平面清單(例如kube-apiserver,kube-controller-manager)一起部署在k8s節點中。它通常在/etc/kubernetes/manifests中找到,但路徑完全是任意的。但是,如果Canal運行時間過長,則會出現相同的錯誤。