Ho installato minikube sulla mia macchina Ubuntu 16.04 e hanno iniziato un cluster, con un messaggiominikube: non è possibile collegare un servizio nginx distribuito a livello locale
"Kubernetes is available at https://192.168.99.100:443"
Avanti, ho schierato un servizio nginx con il seguente comando
> kubectl.sh run my-nginx --image=nginx --replicas=2 --port=80 --expose
> kubectl.sh get pods -o wide
NAME READY STATUS RESTARTS AGE NODE
my-nginx-2494149703-8jnh4 1/1 Running 0 13m 127.0.0.1
my-nginx-2494149703-q09be 1/1 Running 0 13m 127.0.0.1
> kubectl.sh get services -o wide
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
kubernetes 10.0.0.1 <none> 443/TCP 14m <none>
my-nginx 10.0.0.83 <none> 80/TCP 13m run=my-nginx
> kubectl.sh get nodes -o wide
NAME STATUS AGE
127.0.0.1 Ready 16m
Domande:
1) Il nodo 127.0.0.1 è il mio computer di sviluppo locale? Questo mi ha confuso di più.
2) La seguente comprensione è corretta: il cluster (nodi, server API kubernetes) ha indirizzi IP interni in 10.0.0.x ei loro indirizzi IP esterni corrispondenti sono 192.168.99.x. I 2 pod avranno quindi IP nell'intervallo come 10.0.1.xe 10.0.2.x?
3) Perché l'IP esterno per i servizi non esiste? Nemmeno, per il servizio di kubernetes. Il 192.168.99.43 non è un IP esterno qui?
4) Ancora più importante, come posso connettermi al servizio nginx dal mio laptop?
Grazie Steve! Un altro modo per accedere al servizio (se non si desidera utilizzare un NodePort), è usare kubectl port-forward per accedere al pod sottostante. Ad esempio, è possibile eseguire: 'kubectl port-forward mypod 8080: 8080', per rendere il pod disponibile su http: // localhost: 8080 – dlorenc
Grazie Steve. Per quanto riguarda la tua prima risposta, intendi dire che 127.0.0.1 è l'unica interfaccia nw del nodo (VM in questo caso) che i pod al suo interno possono comunicare, giusto? In secondo luogo, quando eseguo 'kubectl exec my-nginx-yczg9 - sh -c "ifconfig -a'", dà eth0 con alcuni IP come 172.17.0.4 Ora, a quanto ho capito, my-nginx-yczg9 è un pod e pod possono avere contenitori N. Quindi è corretto dire che 172.17.0.4:80 è un IP Pod (endpoint virtuale IP?), che verrà inoltrato al contenitore nginx appropriato in esecuzione all'interno del pod e che il contenitore avrà IP nella sottorete della finestra mobile all'interno? – soupybionics
Grazie diorec, Come funziona il comando port forward qui? Si prega di correggermi se ho torto: Per quanto ne so, l'host locale host (host) della mia macchina (cioè 127.0.0.1:8080) funge da proxy per 192.168.99.100:30001? in cui il comando sarà kubectl port-forward mypod 8080: 30001 – soupybionics