すべてのワーカー・ノードを削除した後で、新しいワーカー・ノードでポッドが始動しないのはなぜですか?

ワーカーノードの削除に失敗した場合や、ポッドが応答しなくなった場合のトラブルシューティングを行います。

仮想プライベートクラウド クラシック・インフラストラクチャー

クラスター内のすべてのワーカー・ノードを削除し、ワーカー・ノードがゼロになりました。 その後、1 つ以上のワーカー・ノードを追加しました。 以下のコマンドを実行したところ、Kubernetes コンポーネントのいくつかのポッドが ContainerCreating 状況になり、calico-node ポッドが CrashLoopBackOff 状況になって、そのまま進展がありません。

oc -n calico-system get pods

クラスター内のすべてのワーカー・ノードを削除すると、calico-kube-controllers ポッドを実行するワーカー・ノードがなくなることになります。 Calico コントローラー・ポッドのデータを更新して、削除されたワーカー・ノードのデータを削除することはできません。 Calico コントローラー・ポッドが新しいワーカー・ノード上で実行を再開するとき、そのデータは新しいワーカー・ノード用に更新されておらず、そのため calico-node ポッドは開始されません。

既存の calico-node ワーカー・ノード・エントリーを削除し、新しいポッドを作成できるようにします。

始める前に: Calico CLI をインストールします。

  1. ibmcloud oc cluster config コマンドを実行し、出力をコピー・アンド・ペーストして KUBECONFIG 環境変数を設定します。 --admin コマンドに --network オプションと ibmcloud oc cluster config オプションを指定します。 --admin オプションは、インフラストラクチャー・ポートフォリオにアクセスし、ワーカー・ノードで Calico コマンドを実行するためのキーをダウンロードします。 --network オプションは、すべての Calico コマンドを実行するための Calico 構成ファイルをダウンロードします。

    ibmcloud oc cluster config --cluster CLUSTER_NAME_OR_ID --admin --network
    
  2. calico-node 状況のままになっている CrashLoopBackOff ポッドの NODE IP アドレスをメモします。

    oc -n calico-system get pods -o wide
    

    この出力例では、ワーカー・ノード 10.176.48.106calico-node ポッドを開始できません。

    NAME                                           READY   STATUS              RESTARTS   AGE     IP              NODE            NOMINATED NODE   READINESS GATES
    ...
    calico-kube-controllers-656c5785dd-kc9x2       1/1     Running             0          25h     10.176.48.107   10.176.48.107   <none>           <none>
    calico-node-mkqbx                              0/1     CrashLoopBackOff    1851       25h     10.176.48.106   10.176.48.106   <none>           <none>
    coredns-7b56dd58f7-7gtzr                       0/1     ContainerCreating   0          25h     172.30.99.82    10.176.48.106   <none>           <none>
    
  3. calico-node ワーカー・ノード・エントリーの ID を取得します。 前のステップで取得したワーカー・ノード IP アドレスの ID のみをコピーします。

    calicoctl get nodes -o wide
    
  4. ID を使用して、ワーカー・ノード・エントリーを削除します。 ワーカー・ノード・エントリーの削除後、Calico コントローラーにより、新しいワーカー・ノード上で calico-node ポッドが再スケジュールされます。

    calicoctl delete node <node_ID>
    
  5. calico-node ポッドを含む Kubernetes コンポーネント・ポッドが実行されるようになったことを確認します。 calico-node ポッドが再スケジュールされ、新しいコンポーネント・ポッドが作成されるまでには数分かかることがあります。

    oc -n calico-system get pods
    

今後このエラーが発生しないようにするためにも、クラスター内のすべてのワーカー・ノードの削除はしないでください。 クラスター内で常に少なくとも 1 つのワーカー・ノードを実行します。Ingress または経路を使用してアプリを公開する場合は、ゾーンごとに少なくとも 2 つのワーカー・ノードを実行します。