問題タブ [kubernetes-deployment]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kubernetes - Kubernetes - デッド ノードからポッドが削除されない
kubeadm init (ほとんどデフォルト) を使用して kube クラスターをセットアップしています。Running
ポッドの実行中にノードの 1 つがオフラインになると、ポッドが無期限にステータスのままになることを除いて、すべてが意図したとおりに機能します。私が読んだことから、それらはUnknown
またはFailure
ステータスに移動する必要があり、--pod-eviction-timeout (デフォルト 5m) の後、別の正常なノードに再スケジュールする必要があります。
ノード 7 が 20 分以上オフラインになった後のポッドを次に示します (再スケジュールせずに 2 日間以上放置したこともあります)。
Pod にはまだフラグが付けられていますがRunning
、それらのデプロイメントにはReady: 0/1
.
ここに私のノードがあります:
問題は何ですか?私のすべてのコンテナーには、readiness プローブと liveness プローブがあります。ドキュメントなどを検索してみましたが、これを解決するものは見つかりませんでした。
現在、ノードがダウンした場合、そのノード上にあったポッドをライブ ノードに再スケジュールする唯一の方法は、--force および --graceperiod=0 を使用してそれらを手動で削除することです。 Kubernetes の目標: 自動化と自己修復。
ドキュメントによると: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-lifetime
If a node dies or is disconnected from the rest of the cluster, Kubernetes applies a policy for setting the phase of all Pods on the lost node to Failed.
- - - - - 追加情報 - - - - - - - -
liveness と readiness プローブの失敗は、起動が遅かったことが原因だと思います。ノードがダウンした後の活性/準備状況をチェックしていないようです (最後のチェックは 37 分前でした)。
これは、次のバージョンの自己ホスト型クラスターです。
助けてくれたすべての人に感謝します。
編集: kubeadm で最初にブートストラップするときのバグまたは潜在的な設定ミスのいずれかでした。kubernetes クラスターを完全に再インストールし、1.17.4 から 1.18 に更新することで問題が解決し、ポッドがデッド ノードから再スケジュールされるようになりました。