IBM Cloud Docs
デフォルトの istio-ingressgateway ポッドが pending でスタックするのはなぜですか?

デフォルトの istio-ingressgateway ポッドが pending でスタックするのはなぜですか?

kubectl get pod -n istio-system を実行すると、 istio-ingressgateway ポッドが pending でスタックします。

さらに、 kubectl describe pods -n istio-system -l app=istio-ingressgateway を実行していずれかのポッドの詳細を取得し、出力の Events セクションを確認すると、以下のようなメッセージが表示されます。

Events:
  Type     Reason            Age                From               Message
  ----     ------            ----               ----               -------
  Warning  FailedScheduling  18s (x4 over 15m)  default-scheduler  0/3 nodes are available: 3 node(s) didn't match Pod's node affinity/selector. preemption: 0/3 nodes are available: 3 Preemption is not helpful for scheduling..

istio-ingressgateway ポッドのゾーン・ラベル・キーが、どのノードのラベルとも一致しない場合があります。 これにより、ノード・アフィニティー・ルールがポッドをノードにスケジュールしないようにします。

ゾーン・ラベル・キーを確認するには、 kubectl describe cm managed-istio-custom -n ibm-operators を実行して、マネージド Istio カスタム ConfigMapを表示します。 ConfigMap で、 istio-ingressgateway-zone-1 などの istio-ingressgateway-zone-<#> 形式のキーを確認します。 鍵が ConfigMapに存在しない場合、ポッドとワーカー・ノードのラベルが一致しません。

この問題を解決するには、ゾーン・ラベルを ConfigMapに追加する Istio セットアップ・ジョブを再始動します。

  1. ibm-system 名前空間内の Istio セットアップ・ジョブを削除します。

    kubectl delete job -n ibm-system -l addon.cleanup=istio
    
  2. ジョブが ConfigMap を更新し、 istio-ingressgateway ポッドがゾーン・ラベルを取得するまで 15 分待ちます。

  3. kubectl get pod -n istio-system を実行して、ポッドの状況を確認します。