Risolvere i problemi relativi al controller manager di Kubernetes

Queste pagine mostrano come risolvere i problemi relativi al controller manager (kube-controller-manager) di Kubernetes per Google Distributed Cloud.

Se hai bisogno di ulteriore assistenza, contatta l'assistenza clienti Google Cloud.

Elezione del leader persa

Questo errore potrebbe essere osservato in un cluster regionale o in un piano di controllo replicato quando kube-controller-manager (KCM) si riavvia in modo imprevisto. Questo riavvio potrebbe comportare l'uscita o il riavvio da parte di kubelet. I log KCM potrebbero includere messaggi leaderelection lost.

Questo scenario può verificarsi quando il leader controlla se è ancora attivo come parte del controllo di integrità del KCM.

Se il leader non è più in primo piano o se il controllo del lease non va a buon fine, il controllo di integrità segnala che il sistema non è integro e il leader viene riavviato.

Lo stato dell'elezione del leader può essere recuperato ottenendo le risorse Lease del gruppo coordination.k8s.io:

  1. Per visualizzare tutti i lease, esegui il seguente comando kubectl:

    kubectl -n kube-system get lease
    
  2. Per controllare lo stato di un determinato lease, ad esempio lease/kube-controller-manager, utilizza il seguente comando kubectl describe:

    kubectl -n kube-system describe lease/kube-controller-manager
    

    Nella sezione Events, controlla gli eventi LeaderElection. Controlla chi assume il comando e quando. L'esempio di output seguente mostra che quando il primo nodo è stato arrestato manualmente, il secondo assume immediatamente il ruolo di leader:

    Events:
      Type    Reason          Age    From                     Message
      ----    ------          ----   ----                     -------
      Normal  LeaderElection  26m    kube-controller-manager  control-plane_056a86ec-84c5-48b8-b58d-86f3fde2ecdd became leader
      Normal  LeaderElection  5m20s  kube-controller-manager  control-plane2_b0475d49-7010-4f03-8a9d-34f82ed60cd4 became leader
    

    Puoi anche osservare il processo di perdita e acquisizione della leadership utilizzando la metrica kubernetes.io/anthos/leader_election_master_status raggruppata per name.

Il processo di elezione del leader si verifica solo se il leader attuale non funziona. Puoi confermare l'errore esaminando le metriche kubernetes.io/anthos/container/uptime e kubernetes.io/anthos/container/restart_count filtrate per un valore container_name di kube-controller-manager.

Se riscontri problemi con l'esecuzione o il fallimento ripetuto della procedura di elezione del leader, esamina le seguenti considerazioni per la correzione:

  • Se KCM si riavvia ogni pochi minuti o meno, controlla i log di KCM per verificare se sono presenti richieste al server API non riuscite. Le richieste non riuscite indicano problemi di connettività tra i componenti o il sovraccarico di parte del servizio.
  • Se il gestore del controller non riesce a comunicare con il server API per troppo tempo, il rinnovo non va a buon fine e l'istanza KCM perde il ruolo di leader, anche se la connessione viene ripristinata in un secondo momento.
  • Se il piano di controllo è replicato, il nuovo leader dovrebbe subentrare senza problemi senza tempi di inattività. Non è richiesto alcun intervento da parte tua. Il piano di controllo di un cluster multi-cloud o regionale viene sempre replicato. Non tentare di disattivare l'elezione del leader per un piano di controllo replicato. Non puoi riattivare l'elezione del leader senza tempi di riposo.

Passaggi successivi

Se hai bisogno di ulteriore assistenza, contatta l'assistenza clienti Google Cloud.