5

Ho un servizio kubernetes su GKE come segue:Perché non riesco ad accedere al mio servizio Kubernetes tramite il suo IP?

$ kubectl describe service staging 
Name:   staging 
Namespace:  default 
Labels:   <none> 
Selector:  app=jupiter 
Type:   NodePort 
IP:    10.11.246.27 
Port:   <unnamed> 80/TCP 
NodePort:  <unnamed> 31683/TCP 
Endpoints:  10.8.0.33:1337 
Session Affinity: None 
No events. 

posso accedere al servizio da una VM direttamente attraverso uno dei suoi estremi (10.8.0.21:1337) oppure tramite la porta nodo (10.240.251.174:31683 nel mio caso). Tuttavia, se provo ad accedere a 10.11.246.27:80, non ottengo nulla. Ho anche provato le porte 1337 e 31683.

Perché non posso accedere al servizio tramite il suo IP? Ho bisogno di una regola del firewall o qualcosa del genere?

risposta

9

Gli IP di servizio sono IP virtuali gestiti da kube-proxy. Quindi, affinché questo IP sia significativo, il client deve anche far parte della rete "overlay" del proxy del kube (avere il proxy kube in esecuzione, che punta allo stesso apiserver).

IP pod su GCE/GKE sono gestiti da GCE Routes, che è più simile a un "underlay" di tutte le VM nella rete.

Ci sono un paio di modi per accedere a servizi non pubblici dall'esterno del cluster. Here sono più in dettaglio, ma in breve:

  1. Creare un percorso GCE bastione per i servizi del cluster.
  2. Installare il proxy kube del cluster ovunque si desideri accedere ai servizi del cluster.
Problemi correlati