Perché le operazioni del master cluster non riescono a causa di un webhook interrotto?
Virtual Private Cloud Infrastruttura classica
Questo argomento per la risoluzione dei problemi non è per la risoluzione dei problemi webhook generali. Vedi Debug dei webhook per i problemi webhook non correlati all'aggiornamento del master cluster.
Risolvere i problemi relativi ai webhook non funzionanti che interferiscono con le operazioni del master del cluster.
Durante un'operazione del master, come l'aggiornamento della versione del tuo cluster, il cluster aveva un'applicazione webhook non funzionante.
Al momento, le operazioni principali non possono essere portate a termine. Vedi un errore simile al seguente:
Cannot complete cluster master operations because the cluster has a broken webhook application. For more information, see the troubleshooting docs: 'https://ibm.biz/master_webhook'
Il tuo cluster dispone di risorse webhook Kubernetes configurabili, i webhook di ammissione di convalida o di variazione, che possono intercettare e modificare le richieste da vari servizi nel cluster al server API nel master del cluster.
Poiché i webhook possono modificare o rifiutare le richieste, i webhook non funzionanti possono influire sulla funzionalità del cluster in vari modi, ad esempio impedendoti di aggiornare la versione del master o altre operazioni di manutenzione. Per ulteriori informazioni, consultare la sezione " Controllo dinamico dell'ammissione " nella documentazione di " Kubernetes ".
Le possibili cause di webhook non funzionanti includono:
- La risorsa sottostante che emette la richiesta è mancante o non integra, ad esempio un servizio, un endpoint o un pod Kubernetes.
- Il webhook fa parte di un componente aggiuntivo o di un'altra applicazione del plugin che non è stata installata correttamente o non è integra.
- Il tuo cluster potrebbe avere un problema di connettività di rete che impedisce al webhook di comunicare con il server API Kubernetes nel master del cluster.
Eseguire i seguenti comandi per creare un pod di prova e ottenere un errore che identifichi il webhook non funzionante. Se il test viene superato, il guasto potrebbe essere stato temporaneo e può essere riprovato.
-
Eseguire i seguenti comandi per creare il pod di prova ed etichettare lo spazio dei nomi
ibm-systemoc run webhook-test --image us.icr.io/armada-master/pause:3.10 -n ibm-system oc delete pod -n ibm-system webhook-test --ignore-not-found oc label ns ibm-system ibm-cloud.kubernetes.io/webhook-test-at="$(date -u +%FT%H_%M_%SZ)" --overwriteIl messaggio di errore potrebbe avere il nome del webhook non funzionante. Nell'esempio di output riportato di seguito, il webhook è
trust.hooks.securityenforcement.admission.cloud.ibm.com.Error from server (InternalError): Internal error occurred: failed calling webhook "trust.hooks.securityenforcementadmission.cloud.ibm.com": Post https://ibmcloud-image-enforcement.ibm-system.svc:443/mutating-pods?timeout=30s: dialtcp 172.21.xxx.xxx:443: connect: connection timed out -
Ottieni il nome del webhook non funzionante.
- Se il messaggio di errore presenta un webhook non funzionante, sostituisci
trust.hooks.securityenforcement.admission.cloud.ibm.comcon il webhook non funzionante che hai identificato in precedenza.
oc get mutatingwebhookconfigurations,validatingwebhookconfigurations -o jsonpath='{.items[?(@.webhooks[*].name=="trust.hooks.securityenforcement.admission.cloud.ibm.com")].metadata.name}{"\n"}' ``` Output di esempio ```sh {: pre} image-admission-config ``` * Se l'errore non presenta un webhook non funzionante, elenca tutti i webhook nel tuo cluster e verificane le configurazioni nei seguenti passi. ```sh {: pre} oc get mutatingwebhookconfigurations,validatingwebhookconfigurations ``` - Se il messaggio di errore presenta un webhook non funzionante, sostituisci
-
Esamina i dettagli di servizio e ubicazione della configurazione dei webhook di variazione o di convalida nella sezione
clientConfigdell'output del seguente comando. Sostituisciimage-admission-configcon il nome che hai identificato in precedenza. Se il webhook esiste al di fuori del cluster, contatta il proprietario del cluster per verificare lo stato del webhook.oc get mutatingwebhookconfiguration image-admission-config -o yamloc get validatingwebhookconfigurations image-admission-config -o yamlOutput di esempio
clientConfig: caBundle: <redacted> service: name: <name> namespace: <namespace> path: /inject port: 443 -
Opzionale: Eseguire il backup dei webhook, soprattutto se non si sa come reinstallare il webhook o non si dispone delle autorizzazioni necessarie per creare webhook.
oc get mutatingwebhookconfiguration <name> -o yaml > mutatingwebhook-backup.yamloc get validatingwebhookconfiguration <name> -o yaml > validatingwebhook-backup.yaml -
Controlla lo stato del servizio e dei pod correlati per il webhook.
- Controlla i campi Type, Selector e Endpoint del servizio.
oc describe service -n <namespace> <service_name> ``` 2. Se il tipo di servizio è **ClusterIP**, verificare che il pod Konnectivity sia nello stato "**Running** ", in modo che il webhook possa connettersi in modo sicuro all'API Kubernetes nel master del cluster. Se il pod non è integro, controlla gli eventi del pod, i log , l'integrità del nodo di lavoro e altri componenti per la risoluzione dei problemi. * Controllare i pod dell'agent Konnectivity. ```sh {: pre} oc describe pods -n kube-system -l app=konnectivity-agent ``` 1. Se il servizio non ha un endpoint, controlla l'integrità delle risorse di supporto, ad esempio una distribuzione o un pod. Se la risorsa non è integra, controlla gli eventi del pod, i log , l'integrità del nodo di lavoro e altri componenti per la risoluzione dei problemi. Per ulteriori informazioni, vedi [Debug delle distribuzioni dell'applicazione](/docs/openshift?topic=openshift-debug_apps). ```sh {: pre} oc get all -n my-service-namespace -l <key=value> ``` 1. Se il servizio non dispone di risorse di supporto, oppure se la risoluzione dei problemi relativi ai pod non risolve il problema, rimuovere la configurazione del webhook di mutazione o di convalida individuata in precedenza. ```sh {: pre} oc delete validatingwebhookconfiguration NAME ``` ```sh {: pre} oc delete mutatingwebhookconfiguration NAME ``` -
Riprova l'operazione del master cluster, ad esempio l'aggiornamento del cluster.
-
Se visualizzi ancora l'errore, potresti avere problemi con i nodi di lavoro o con la connettività di rete.
- Risoluzione dei problemi dei nodi di lavoro.
- Assicurati che il webhook possa connettersi al server API Kubernetes nel master del cluster. Ad esempio, se utilizzi politiche di rete Calico, gruppi di sicurezza o altri tipi di firewall, configura il tuo cluster classico o VPC con l'accesso appropriato.
- Se il webhook è gestito da un componente aggiuntivo che hai installato, disinstalla il componente aggiuntivo. I componenti aggiuntivi comuni che causano problemi con il webhook includono:
-
Ricrea il webhook o reinstalla il componente aggiuntivo.
-
Se il problema persiste, contattare il supporto. Apri un caso di supporto. Nei dettagli del caso, assicurarsi di includere qualsiasi file di registro, messaggio di errore o output di comando pertinente.