私は4ノードkubernetesクラスタを持っています。私のアプリケーションは2つのレプリカインスタンスで動作します。私はレプリカセットを持つ展開リソースを使用しています。ドキュメントごとに、レプリカセットは常に指定されたno。アプリケーションのインスタンスの実行されます。私は1つのポッドのインスタンスを削除する場合は、同じまたは別のノードで再起動されます。しかし、私は1つのノードでドッカーエンジンを停止してポッドインスタンスの障害をシミュレートした。 Kubectlは、ポッドインスタンスのエラーとしてステータスを表示しますが、別のノードでポッドを再起動しません。それは期待された行動か何かが欠けているか?Kubernetesが他のノードで失敗したポッドをスケジューリングしない
0
A
答えて
2
AFAIS Kubernetesがバージョン1.5でその動作を変更しました。 docsを正しく解釈すると、障害が発生したノードのポッドは突然終了し、ポッドの登録を解除できなかったため、依然としてAPserverに登録されます。ポッドはまだ登録されているので、ReplicaSetはそれを置き換えません。
この理由は、Kubernetesがネットワークエラー(スプリットブレインなど)かノード障害かどうかを判断できないためです。 StatefulSetsが導入されると、KubernetesはPodが何度も開始されないようにする必要があります。
これはバグのように聞こえるかもしれませんが、クラウドプロバイダ(GCEやAWSなど)が正しく設定されている場合、Kubernetesはそのノードがまだ実行中かどうかを確認できます。そのノードをシャットダウンするとき、コントローラはノードとそのポッドの登録を解除し、別のノードに新しいポッドを作成する必要があります。ノードのヘルスチェックとノードの置き換えとともに、クラスタは自身を修復できます。
クラウドプロバイダーの設定方法は、Kubernetesの設定に大きく依存します。
0
ノードまたはドッカーをドローダウンしてから約5分待ってください。 Kubernetesは、そのノードで実行されていたすべてのポッドの状態を「不明」とマークし、残りの有効な適格ノードでそれらを起動します。障害が発生したノードが復旧すると、K8Sがすでに他のノードにそれらを置き換えた場合、そのノード上のポッドは削除されます。
関連する問題
- 1. Kubernetes異なるノードにポッドをスケジューリング
- 2. kubernetesポッドは、私がkubernetes単一ノードのセットアップを持っているだけで、他のポッドのコンテナ
- 3. Kubernetesマスターでポッドのスケジューリングを許可しますか?
- 4. Kubernetes:各ポッドがポートを公開したときのノード内の複数のポッド
- 5. Kubernetes DNSはポッドで失敗しますが、Dockerコンテナで動作します
- 6. Kubernetes Web UIで失敗したポッドを削除できません
- 7. ノード間のKubernetesポッド配信
- 8. Kubernetes - PersistentVolumeClaimが失敗しました
- 9. Kubernetesポッドが起動していない
- 10. Kubernetesノードは失敗します(CoreOS/AWS/Kubernetesスタック)
- 11. Kubernetes上のプライベートドッカーレジストリが他のポッドに見えない
- 12. Kubernetesでスケジューラなしでポッドを実行
- 13. Kubernetes DNSがKubernetes 1.2で失敗する
- 14. Kubernetesでスケジューリング可能なノードを特定する方法
- 15. kubernetesクラスタの1つのポッドに他のポッドを接続できないのはなぜですか?
- 16. Kubernetesでノードを追加した後にポッドを再配布する
- 17. ポッドとノードを実行するためのKubernetes prometheusメトリック
- 18. サービス再デプロイ後にKubernetes Public IPが失敗しました
- 19. ネイティブとポッドのインストールに失敗しました
- 20. Openshift V3:mysqlポッドの作成に失敗しました
- 21. KubernetesのインストールがACSで失敗する
- 22. Kubernetesでの複数のポッドとノードの管理
- 23. centos7.1.1503のKubernetes API Serverの起動に失敗しました
- 24. JenkinsのKubernetesプラグインの設定に失敗しました
- 25. RAMが約10GのときVoltdbノードが失敗しました
- 26. 私kubernetesポッド
- 27. マルチコンテナkubernetesポッド
- 28. 他のOpenGL ContextでGPUImageが失敗しました
- 29. ネイティブパッケージャがノード6.5で失敗しました
- 30. kube-apiserverでノードが失敗しました
お返事ありがとうございます。私はKubernetes 1.5.4を使用しています。私はドキュメントのリンクをチェックし、ステートフルセットに適用できます。ステートフルセット以外のすべてのコントローラーでは、コントローラーがポッド名を再使用しないため(つまり、generate-nameを使用するため)、コントローラーがポッドを置き換える機能には影響しません。 また、私はkubbernetesクラスタをubuntu vmsに配備しています。 –
ノードはまだ 'kubectl get nodes'にリストされていますか?失敗したノードを削除して、何が起こるかを確認できますか? – svenwltr
また、「ノードコントローラはapi-serverからポッドを強制的に削除しなくなりました。すべての種類のポッド用です。コントローラーがポッドを削除できない場合でも、有効なレプリカです。少なくとも私の経験から、行動は1.5で変わった。 – svenwltr