Debug delle connessioni di rete tra i pod
Esamina le opzioni e strategie per il debug dei problemi di connessione tra i pod.
Controlla lo stato dei tuoi componenti cluster e dei tuoi pod di rete
Risolvere i problemi relativi alla rete dei pod e alla connettività.
Seguire questa procedura per verificare lo stato dei componenti. I problemi di rete potrebbero verificarsi se i tuoi componenti del cluster non sono aggiornati o non sono in uno stato integro.
-
Controlla che il tuo master cluster e i tuoi nodi di lavoro siano in esecuzione su una versione supportata e che siano in uno stato integro. Se il master cluster o i nodi di lavoro non eseguono una versione supportata, effettuare gli aggiornamenti necessari in modo che eseguano una versione supportata. Se lo stato di un componente non è
NormaloReady, rivedere gli stati di salute del master del cluster, stati del cluster, stati dei nodi worker, o fasi per la risoluzione dei problemi diCriticaloNotReadynodi worker per ulteriori informazioni. Assicurarsi che tutti i problemi correlati siano risolti prima di continuare.Per controllare l'integrità e la versione del master cluster:
ibmcloud oc cluster get -c CLUSTER-IDPer controllare l'integrità e le versioni del nodo di lavoro:
ibmcloud oc workers -c CLUSTER-ID -
Per ogni nodo di lavoro, verifica che i pod DNS del cluster e Calico siano presenti e in esecuzione in uno stato integro.
-
Esegui il comando per ottenere i dettagli dei pod del tuo cluster.
oc get pods -A -o wide | grep -e calico -e dns-default -
Nell'output, assicurati che il tuo cluster includa i seguenti pod. Assicurati che lo stato di ogni pod' sia
Runninge che i pod non abbiano troppi riavvii.- Esattamente un pod
calico-nodeper nodo di lavoro. - Almeno un pod
calico-typhaper cluster. I cluster più grandi potrebbero averne più di uno. - Esattamente un pod
calico-kube-controllersper cluster. - Un
dns-defaultpod per nodo. Tuttavia, alcuni nodi potrebbero non avere il poddns-defaultse hanno etichette allegate. Questo è normale e non causa problemi di rete.
Output di esempio
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED READINESS GATES calico-system calico-kube-controllers-1a1a1a1 1/1 Running 0 37m 172.17.61.195 10.245.0.5 <none> <none> calico-system calico-node-1a1a1a1 1/1 Running 0 37m 10.245.0.5 10.245.0.5 <none> <none> calico-system calico-node-1a1a1a1 1/1 Running 0 37m 10.245.0.4 10.245.0.4 <none> <none> calico-system calico-typha-1a1a1a1 1/1 Running 0 37m 10.245.0.5 10.245.0.5 <none> <none> openshift-dns dns-default-1a1a1a1 2/2 Running 0 33m 172.17.36.144 10.245.0.4 <none> <none> openshift-dns dns-default-1a1a1a1 2/2 Running 0 33m 172.17.61.210 10.245.0.5 <none> <none> - Esattamente un pod
-
Se uno dei pod elencati non è presente o si trova in uno stato non integro, consulta la documentazione sulla risoluzione dei problemi del nodo di lavoro e del cluster inclusa nei passi precedenti. Assicurati che eventuali problemi con i pod in questo passo siano risolti prima di procedere.
-
Debug con pod di test
Per determinare la causa dei problemi di rete nei tuoi pod, puoi creare un pod di test su ogni tuo nodo di lavoro. Quindi, puoi eseguire i test e osservare l'attività di rete all'interno del pod, che potrebbe rivelare l'origine del problema.
Configurazione dei pod
-
Crea un nuovo spazio dei nomi privilegiato per i tuoi pod di test. La creazione di un nuovo spazio dei nomi impedisce che le politiche o le configurazioni personalizzate negli spazi dei nomi esistenti influenzino i tuoi pod di test. In questo esempio, il nuovo spazio dei nomi è denominato
pod-network-test.Crea lo spazio dei nomi.
oc create ns pod-network-test -
Aggiungere le etichette al nuovo spazio dei nomi privilegiato.
oc label namespace pod-network-test --overwrite=true \ pod-security.kubernetes.io/enforce=privileged \ pod-security.kubernetes.io/enforce-version=latest \ pod-security.kubernetes.io/audit=privileged \ pod-security.kubernetes.io/audit-version=latest \ pod-security.kubernetes.io/warn=privileged \ pod-security.kubernetes.io/warn-version=latest \ security.openshift.io/scc.podSecurityLabelSync="false" -
Eseguire il comando per consentire allo spazio dei nomi di eseguire i pod con un contesto di sicurezza privilegiato.
oc adm policy add-scc-to-group privileged system:serviceaccounts:pod-network-test -
Creare e applicare il seguente set di demoni per creare un pod di prova su ogni nodo.
apiVersion: apps/v1 kind: DaemonSet metadata: labels: name: webserver-test app: webserver-test name: webserver-test spec: selector: matchLabels: name: webserver-test template: metadata: labels: name: webserver-test app: webserver-test spec: tolerations: - operator: "Exists" containers: - name: webserver securityContext: privileged: true image: us.icr.io/armada-master/network-alpine:latest env: - name: ENABLE_ECHO_SERVER value: "true" - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name restartPolicy: Always terminationGracePeriodSeconds: 1 -
Applicare il daemonset per distribuire un pod di prova su ogni nodo worker.
oc apply --namespace pod-network-test -f <daemonset-file> -
Verificare che i pod vengano avviati correttamente, elencando tutti i pod nello spazio dei nomi.
oc get pods --namespace pod-network-test -o wide
Esecuzione dei test all'interno dei pod
Esegui i comandi curl, ping e nc per verificare la connessione di rete di ciascun pod e il comando dig per verificare il DNS del cluster. Esaminare ciascun output, quindi consultare Identificazione dei problemi per individuare il significato dei risultati.
-
Elencare i pod di test e annotare il nome e l'IP di ciascun pod.
oc get pods --namespace pod-network-test -o wideOutput di esempio
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES webserver-test-2fv7c 1/1 Running 0 68s 172.17.36.169 10.245.0.4 <none> <none> webserver-test-4mktb 1/1 Running 0 68s 172.17.61.240 10.245.0.5 <none> <none> -
Esegui il comando "
exec" per accedere a un pod.kubectl exec -it --namespace pod-network-test <pod_name> -- sh -
Esegui il comando
curlsul pod e prendi nota dell'output. Specificare l'IP di un pod di prova a cui non si è effettuato l'accesso. Questo verifica la connessione di rete tra i pod su nodi differenti.curl <pod_ip>:8080Output di esempio riuscito.
Hostname: webserver-test-4mktb Pod Information: node name: env var NODE_NAME not set pod name: webserver-test-4mktb pod namespace: env var POD_NAMESPACE not set pod IP: env var POD_IP not set Connection Information: remote address: 172.17.36.169 remote port: 56042 local address: 172.17.61.240 local port: 8080 -
Esegui il comando
pingsul pod e prendi nota dell'output. Specificare l'IP di un pod di prova a cui non ci si è connessi con il comandoexec. Questo verifica la connessione di rete tra i pod su nodi differenti.ping -c 5 <pod_ip>Output di esempio riuscito.
PING 172.17.61.240 (172.17.61.240) 56(84) bytes of data. 64 bytes from 172.17.61.240: icmp_seq=1 ttl=62 time=0.473 ms 64 bytes from 172.17.61.240: icmp_seq=2 ttl=62 time=0.449 ms 64 bytes from 172.17.61.240: icmp_seq=3 ttl=62 time=0.381 ms 64 bytes from 172.17.61.240: icmp_seq=4 ttl=62 time=0.438 ms 64 bytes from 172.17.61.240: icmp_seq=5 ttl=62 time=0.348 ms --- 172.17.61.240 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4086ms rtt min/avg/max/mdev = 0.348/0.417/0.473/0.046 ms -
Esegui il comando
ncsul pod e prendi nota dell'output. Specificare l'IP di un pod di prova a cui non ci si è connessi con il comandoexec. Questo verifica la connessione di rete tra i pod su nodi differenti.nc -vzw 5 <pod_ip> 8080Output di esempio riuscito.
nc -vzw 5 172.17.61.240 8080 172.17.61.240 (172.17.61.240:8080) open -
Eseguire i comandi
digper verificare il DNS.dig +short kubernetes.default.svc.cluster.localOutput di esempio
172.21.0.1dig +short ibm.comOutput di esempio
23.50.74.64 -
Eseguire i comandi
curlper testare una connessione completa TCP o HTTPS al servizio. Questo esempio verifica la connessione tra il pod e il master cluster richiamando le informazioni sulla versione del cluster. Il corretto richiamo della versione del cluster indica una connessione integra.curl -k https://kubernetes.default.svc.cluster.local/versionOutput di esempio
"major": "1", "minor": "34", "emulationMajor": "1", "emulationMinor": "34", "minCompatibilityMajor": "1", "minCompatibilityMinor": "33", "gitVersion": "v1.34.7+IKS", "gitCommit": "67bf12be5abc8e65743a243172693ad1a098a2c4", "gitTreeState": "clean", "buildDate": "2026-04-16T04:24:50Z", "goVersion": "go1.25.9", "compiler": "gc", "platform": "linux/amd64" -
Esci dal pod.
exit -
Ripeti i passi precedenti con i pod rimanenti.
Identificazione dei problemi
Esamina gli output della precedente sezione per trovare la causa dei tuoi problemi di rete del pod. Questa sezione elenca alcune cause comuni che possono essere identificate dalla sezione precedente.
-
Se i comandi funzionano normalmente sui pod di prova, ma si riscontrano ancora problemi di rete con i pod dell'applicazione nello spazio dei nomi predefinito, è possibile che ci siano problemi legati specificamente alla propria applicazione.
- Potresti avere in atto Calico o le politiche di sicurezza della rete Kubernetes che limitano il traffico di rete. Se una politica di rete viene applicata a un pod, tutto il traffico non specificamente consentito da tale politica viene eliminato. Per ulteriori informazioni sulle politiche di rete, consulta la documentazione diKubernetes.
- Se si utilizza Istio o Red Hat OpenShift Service Mesh, potrebbero verificarsi problemi di configurazione del servizio che fanno cadere o bloccano il traffico tra i pod. Per ulteriori informazioni, consultare la documentazione per la risoluzione dei problemi di Istio e Red Hat OpenShift Service Mesh.
- Il problema potrebbe essere correlato ai bug nell'applicazione piuttosto che al tuo cluster e potrebbe richiedere la tua risoluzione indipendente dei problemi.
-
Se i comandi
curl,pingoncnon sono riusciti per determinati pod, identifica i nodi di lavoro su cui si trovano tali pod. Se il problema esiste solo su alcuni dei tuoi nodi di lavoro, sostituisci tali nodi di lavoro o visualizza ulteriori informazioni sulla risoluzione dei problemi del nodo di lavoro. -
Se le ricerche DNS dai comandi
dignon sono riuscite, consultare Red Hat Informazioni sulla risoluzione dei problemi DNS.
Se non riesci ancora a risolvere il tuo problema di rete del pod, apri un caso di supporto e includi una descrizione dettagliata del problema, come hai provato a risolverlo, quali tipi di test hai eseguito e log pertinenti per i tuoi pod e nodi di lavoro. Per ulteriori informazioni sull'apertura di un caso di supporto e quali informazioni includere, consultare la guida generale al debug.