2016-02-17 51 views

回答

2

通常,修復程序需要您更改有關Pod(Docker鏡像,環境變量,命令行標誌等)配置的信息,在這種情況下,應該刪除舊的Pod並啓動新的Pod。如果您的羣集正在複製控制器(它應該是)下運行,那麼您可以爲新版本執行rolling update

+0

有趣的是,我們部署的「快照」裏的版本不會改變。在RC更新後,狀態不會被清除,但我會嘗試你的想法。 – user2732949

+0

更新RC還不夠,您還必須更換現有的Pod,或者通過殺死它們或執行建議的滾動更新。 –

+1

如何找到什麼是完全失敗? – holms

0

對於採用新配置新的吊艙應創建(舊的將被刪除)。

  • 如果您莢通過DeploymentDaemonSet資源自動創建的,這個動作機器會自動更新資源的YAML以後每次運行。 如果您的資源有spec.updateStrategy.type=OnDelete,則不會發生這種情況。

  • 如果問題與docker映像中的錯誤相關,您解決了問題,則應手動更新pod,您可以使用rolling-update功能實現此目的。如果新映像具有相同標記,則可以刪除損壞的pod。 (見下文)

  • 在節點發生故障的情況下,仿真器會過一段時間後重新創建新的節點上,舊的吊艙將破節點的完全恢復後去除。值得注意的是,如果您的pod是由DaemonSetStatefulSet創建的,則不會發生這種情況。

什麼辦法可以手動刪除墜毀莢:

kubectl delete pod <pod_name> 

或用CrashLoopBackOff狀態的所有吊艙:

kubectl delete pod `kubectl get pods | awk '$3 == "CrashLoopBackOff" {print $1}' 

如果你已經完全死節點,你可以添加刪除--grace-period=0 --force選項只是關於kubernetes這個吊艙的信息。