Istio Ingress ゲートウェイ用の ibm-cloud-provider-ip ポッドが pending のままになるのはなぜですか?
仮想プライベートクラウド クラシック・インフラストラクチャー
複数ゾーン・クラスターのみ
kubectl get pod -n ibm-system を実行すると、Istio Ingress ゲートウェイの外部 IP アドレスを提供する ibm-cloud-provider-ip ポッドは pending 状況のままになります。
また、kubectl describe pod <pod_name> -n ibm-system を ibm-cloud-provider-ip ポッドに対して実行すると、スケジューリング競合エラーが出力の「ポッドのイベント」セクションで見つかります。
ご使用のゲートウェイ用の ibm-cloud-provider-ip ポッドを識別するには、kubectl get service -n istio-system を実行してゲートウェイのロード・バランサー・サービスを検出し、そのサービスの EXTERNAL-IP をメモして、ibm-cloud-provider-ip ポッド名内で IP アドレスを探します。
istio-ingressgateway ロード・バランサー・サービスが作成されると、ibm-cloud-provider-ip ポッドが作成されて、そのロード・バランサーに外部 IP アドレスが提供されます。
これらの ibm-cloud-provider-ip ポッドにはノード・アフィニティー・ルールが割り当てられているため、これらのポッドは IP アドレスの取得元サブネットと同じゾーン内で作成されます。 ただし、ExternalTrafficPolicy ロード・バランサー・サービスの istio-ingressgateway 設定が Local に設定されている場合は、ibm-cloud-provider-ip ポッドにも、ゲートウェイ・ロード・バランサー・ポッドと同じゾーンにデプロイされるためのポッド・アフィニティー・ルールが割り当てられます。 IP アドレスとゲートウェイ・ロード・バランサーがクラスター内の異なるゾーンに存在する場合、ibm-cloud-provider-ip ポッドは適切にデプロイできません。
ibm-cloud-provider-ip ポッドと istio-ingressgateway ポッドが同じゾーンに存在していないことを確認するには、以下の手順に従ってください。
-
** ポッドのデプロイ先である **NODE
istio-ingressgatewayを特定します。kubectl get pod -n istio-system -o wide -
ゲートウェイのロード・バランサー・サービスの EXTERNAL-IP を取得します。
kubectl get service -n istio-system -
ロード・バランサーの ** ポッドのデプロイ先である **NODE
ibm-cloud-provider-ipを特定します。<IP-with-hyphens>を、前のステップで見つかった IP アドレスで置き換えます。 IP アドレスでは、ピリオド (.) の代わりにハイフン (-) を使用します。例えば、169.12.345.67は169-12-345-67になります。kubectl get pod -n ibm-system -o wide -l ibm-cloud-provider-ip=<IP-with-hyphens> -
ワーカー・ノードが存在しているゾーンをリストします。 ステップ 1 と 3 で特定したワーカー・ノードを比較して、ポッドが異なるゾーン内のワーカー・ノードにデプロイされているかどうかを確認します。
kubectl get node --no-headers -L ibm-cloud.kubernetes.io/zone出力例
10.176.48.106 Ready <none> 529d v1.36+IKS dal10 10.176.48.107 Ready <none> 196d v1.36+IKS dal10 10.184.58.23 Ready <none> 2y38d v1.36+IKS dal12 10.184.58.42 Ready <none> 529d v1.36+IKS dal12
この問題を解決するには、istio-ingressgateway ポッドを ibm-cloud-provider-ip ポッドが存在しているゾーンに移動するか、その逆を行います。
istio-ingressgatewayポッドの移動 : ゲートウェイのロード・バランサーについては、移動後も同じ外部 IP アドレスが保持されます。 ただし、バージョン 1.9 以前のアドオンでは、Istio パッチ更新時にゲートウェイのゾーン・ラベルが自動的に入力されたときに、加えた変更内容は上書きされる可能性があります。ibm-cloud-provider-ipポッドの移動: ゲートウェイについては、移動後に同じ外部 IP アドレスは保持されず、新しい IP アドレスが割り当てられます。 ただし、アドオンの更新時にどの変更内容も上書きされません。
istio-ingressgateway ポッドの移動
istio-ingressgateway ポッドを ibm-cloud-provider-ip ポッドと同じゾーンに移動します。
managed-istio-custom構成マップ・リソースを編集します。kubectl edit cm managed-istio-custom -n ibm-operators- 移動するゲートウェイについて、
istio-ingressgateway-zone-1|2|3設定をibm-cloud-provider-ipポッドが存在しているゾーンに変更します。 - 構成ファイルを保存して閉じます。
istio-ingressgatewayポッドはibm-cloud-provider-ipポッドと同じゾーン内のワーカー・ノードに移動されて、ibm-cloud-provider-ipポッドは適切にデプロイされます。 - これらのポッドが同じゾーンに存在していることを確認するには、『現象の理由』セクションのステップに従います。
ibm-cloud-provider-ip ポッドの移動
ibm-cloud-provider-ip ポッドを istio-ingressgateway ポッドと同じゾーンに移動します。
-
managed-istio-custom構成マップ・リソースを編集します。kubectl edit cm managed-istio-custom -n ibm-operators -
ゲートウェイの
istio-ingressgateway-zone-<1|2|3>設定の名前を書き留めておきます。 この構成マップ例では、dal10に存在するゲートウェイのibm-cloud-provider-ipポッドを移動するために、istio-ingressgateway-zone-1というキーを書き留めておきます。apiVersion: v1 data: istio-ingressgateway-zone-1: dal10 istio-ingressgateway-zone-2: dal12 istio-ingressgateway-public-1-enabled: "true" istio-ingressgateway-public-2-enabled: "true" istio-monitoring: "true" kind: ConfigMap ... -
対応する
istio-ingressgateway-public-<1|2|3>-enabled設定を"false"に変更して、ゲートウェイを一時的に無効にします。 この例の構成マップでは、ibm-cloud-provider-ipに存在しているゲートウェイのdal10ポッドを移動するには、istio-ingressgateway-public-1-enabledを"false"に変更します。apiVersion: v1 data: istio-ingressgateway-zone-1: dal10 istio-ingressgateway-zone-2: dal12 istio-ingressgateway-public-1-enabled: "false" istio-ingressgateway-public-2-enabled: "true" istio-monitoring: "true" kind: ConfigMap ... -
構成ファイルを保存して閉じます。
-
ゲートウェイのロード・バランサー・ポッドが削除されたことを確認します。 変更が完了するまでに、最大で 30 分かかることがあるので注意してください。
kubectl get service -n istio-system -o wide -
managed-istio-custom構成マップ・リソースを開きます。kubectl edit cm managed-istio-custom -n ibm-operators -
istio-ingressgateway-public-<1|2|3>-enabled設定を"true"に戻して、ゲートウェイを再び有効にします。 -
構成ファイルを保存して閉じます。 ゲートウェイ (
istio-ingressgatewayポッド) 用の新しいロード・バランサー・サービスが作成されて、そのロード・バランサーの新しいibm-cloud-provider-ipポッドが、istio-ingressgatewayポッドと同じゾーン内のワーカー・ノードにデプロイされます。 -
これらのポッドが同じゾーンに存在していることを確認するには、『現象の理由』セクションのステップに従います。