問題タブ [kops]
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 - AWS Kubernetes クラスターでの「ポッド サンドボックスの作成に失敗しました」ポッド エラー
問題の概要 1 つまたは複数のノードで 1 つまたは複数のポッドが起動しない (コンテナまたはポッド内のコンテナが起動しない) という問題でクラスターが実行されていることが何度か確認されています。ポッドに「ポッド サンドボックスの作成に失敗しました」というエラーが表示されます。「影響を受ける」ノードで docker または kubelet を再起動しても、問題は解決しません。また、影響を受ける EC2 インスタンスを終了して再作成しても、問題は解決しません。ポッド (起動に失敗したポッドと「正常な」ポッドの両方) が他のノードに再スケジュールされると、同じエラーで起動に失敗します。そのため、少なくとも 1 つのポッドが「ポッド サンドボックスの作成に失敗しました」というエラーで起動に失敗するとすぐに、完全なクラスターが壊れているようです。
環境 * Kubernetes 1.9.3 * AWS で実行されている kops (v 1.8) を使用して作成されたクラスター (プライベート ネットワーク トポロジ) * ネットワーク: weave-net * クラスター: 1 マスター、3 ノード
インシデント インスタンスのタイムライン
- kops を使用してクラスターのローリング更新を実行し、作成した新しい AMI でノードとマスターを開始しました (kops ami k8s-1.8-debian-jessie-amd64-hvm-ebs-2017-11-27 に基づく)。kops AMI の調整は決して問題ではありませんでした。Linux の更新と、Kubernetes に関係のない小さな変更をいくつか適用しました。
- Kubernetes ダッシュボードで、ポッド (ブローカー ポッド) の 1 つが次のエラーで起動に失敗したことがわかりました: 0/4 ノードが使用可能です: 1 NodeUnschedulable、1 PodToleratesNodeTaints、3 NoVolumeZoneConflich。ポッド サンドボックスの作成に失敗しました。
- 上記と同じノードでスケジュールされたデーモン セット (fluentd ポッド) によって作成された別のポッドには、わずかに異なるエラーが発生しました: ネットワークの準備ができていません:[ランタイム ネットワークの準備ができていません: NetworkReady=false reason:NetworkPluginNotReady メッセージ:docker: ネットワーク プラグインがありませんready:cni clnfig uninitialized] *影響を受けるノードは、Kubernetes によると正常です。kubectl describe nodes を見ると、影響を受けるノードには Pod を実行するのに十分なリソースがあります
kubelet ログを見ると、ブローカー ポッドについて次のことがわかりました。
/li>別のポッド (adapter-mqtt-vertx) で問題を再現し、docker デーモンと kubelet の再起動後に「影響を受けるノード」で強制的に再スケジュールすると、同様の結果が得られます
ここで何が問題なのか、何が解決策になるのか、誰にも分かりますか?
kubernetes - 監査ポリシーを kube-apiserver にセットアップする方法は?
ここでkubernetesで監査をセットアップする方法について読んでいますが、これは基本的に、監査を有効にするには、フラグを使用して、起動時にkube-apiserverにyamlポリシーファイルを指定する必要があることを示しています--audit-policy-file
。
さて、これを達成する方法について私が理解していないことが2つあります。
- kube-apiserver を実行するコマンドの起動パラメーターを追加/更新する適切な方法は何ですか? Pod を更新できないので、どうにかして Pod のクローンを作成する必要がありますか? または
kops edit cluster
、ここで提案されているように使用する必要があります: https://github.com/kubernetes/kops/blob/master/docs/cluster_spec.md#kubeapiserver。驚いたことに、kubernetes はこのためのデプロイメントを作成しません。自分で作成する必要がありますか? - 特に監査をセットアップするには、スタートアップ引数として yaml ファイルを渡す必要があります。を作成するために、この yaml ファイルをアップロード/利用可能にするにはどうすればよいですか
--audit-policy-file=/some/path/my-audit-file.yaml
。それやボリュームを使用して configMap を作成する必要がありますか? kube-apiserver 起動コマンドの実行時にファイルシステムで使用できるように、後でこのファイルを参照するにはどうすればよいですか?
ありがとう!