Dopo aver eliminato tutti i nodi di lavoro, perché i miei pod non iniziano sui nuovi nodi di lavoro?

Risolvere i problemi relativi agli errori di eliminazione dei nodi di lavoro e ai pod bloccati.

Virtual Private Cloud Infrastruttura classica

Hai eliminato tutti i nodi di lavoro nel tuo cluster in modo che non esistano nodi di lavoro. Quindi, hai aggiunto uno o più nodi di lavoro. Quando si esegue il seguente comando, diversi pod per i componenti Kubernetes sono bloccati nello stato ContainerCreating e i pod calico-node sono bloccati nello stato CrashLoopBackOff.

oc -n calico-system get pods

Quando elimini tutti i nodi di lavoro nel tuo cluster, non esiste alcun nodo di lavoro su cui eseguire il pod calico-kube-controllers. I dati del pod del controller Calico non possono essere aggiornati per rimuovere i dati dei nodi worker eliminati. Quando il pod del controllore Calico ricomincia a funzionare sui nuovi nodi worker, i suoi dati non sono aggiornati per i nuovi nodi worker e non avvia i pod calico-node.

Elimina le voci nodo di lavoro calico-node esistenti in modo che possano essere creati nuovi pod.

Prima di iniziare: installa la CLI Calico.

  1. Esegui il comando ibmcloud oc cluster config e copia e incolla l'output per impostare la variabile di ambiente KUBECONFIG. Includi le opzioni --admin e --network con il comando ibmcloud oc cluster config. L'opzione --admin scarica le chiavi per accedere al tuo portfolio dell'infrastruttura ed eseguire i comandi Calico sui tuoi nodi di lavoro. L'opzione --network scarica il file di configurazione Calico per eseguire tutti i comandi Calico.

    ibmcloud oc cluster config --cluster CLUSTER_NAME_OR_ID --admin --network
    
  2. Per i pod calico-node bloccati nello stato CrashLoopBackOff, prendi nota degli indirizzi IP NODE.

    oc -n calico-system get pods -o wide
    

    In questo output di esempio, il pod calico-node non può iniziare sul nodo di lavoro 10.176.48.106.

    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. Ottieni gli ID delle voci del nodo di lavoro calico-node. Copia gli ID per solo gli indirizzi IP del nodo di lavoro che hai richiamato nel passo precedente.

    calicoctl get nodes -o wide
    
  4. Utilizzare gli ID per eliminare le voci del nodo di lavoro. Dopo aver eliminato le voci del nodo di lavoro, il controllore Calico ripianifica i pod calico-node sui nuovi nodi di lavoro.

    calicoctl delete node <node_ID>
    
  5. Verifica che i pod dei componenti Kubernetes, inclusi i pod calico-node, siano ora in esecuzione. Potrebbero essere necessari alcuni minuti per la pianificazione dei pod calico-node e per la creazione di nuovi pod del componente.

    oc -n calico-system get pods
    

Per evitare questo errore in futuro, non eliminare mai tutti i nodi di lavoro nel cluster. Esegui sempre almeno un nodo di lavoro nel cluster e se utilizzi Ingress o le rotte per esporre le applicazioni, esegui almeno due nodi di lavoro per zona.