Kubernetes: nodePort no responde en todas las IP de nodo

Creado en 28 feb. 2017  ·  1Comentario  ·  Fuente: kubernetes/kubernetes

Versión de Kubernetes :
Versión del cliente: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507", GitTreeState:"clean", BuildDate:"2017-01-12T04:57: 25Z", GoVersion:"go1.7.4", Compilador:"gc", Plataforma:"darwin/amd64"}
Versión del servidor: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.3", GitCommit:"029c3a408176b55c30846f0faedf56aae5992e9b", GitTreeState:"clean", BuildDate:"2017-02-15T06:34: 56Z", GoVersion:"go1.7.4", Compilador:"gc", Plataforma:"linux/amd64"}

Versión de Docker en maestro y minions :
$ ventana acoplable -v
Docker versión 1.13.1, compilación 092cba3

Medio ambiente :

  • Proveedor de la nube o configuración de hardware :
    VMWare
  • SO (por ejemplo, de /etc/os-release):
    NOMBRE="Ubuntu"
    VERSIÓN="16.04 LTS (Xenial Xerus)"
    identificación = ubuntu
    ID_LIKE=debian
    PRETTY_NAME="Ubuntu 16.04 LTS"
    VERSION_ID="16.04"
    URL_INICIAL=" http://www.ubuntu.com/ "
    SOPORTE_URL=" http://help.ubuntu.com/ "
    BUG_REPORT_URL=" http://bugs.launchpad.net/ubuntu/ "
    UBUNTU_CODENAME=xenial
  • Núcleo (por ejemplo uname -a ):
    Linux knode-master 4.4.0-45-generic #66-Ubuntu SMP miércoles 19 de octubre 14:12:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
  • Instalar herramientas :
    kubeadm

  • Otros :

que paso :
Usando la página kubeadm , instalé un clúster de tres nodos.

$ kc describe nodes | awk '/Addresses/ {print $2}' | awk -F',' '{print $3}' 
knode-0
knode-1
knode-master

Red de canales instalada:

kubectl create -f https://raw.githubusercontent.com/tigera/canal/master/k8sinstall/kubeadm/canal.yaml

Los nodos, los servicios y los pods estaban en buen estado en este momento. Entonces procedió al tablero

kubectl create -f https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml

$ kubectl get -n kube-system services
NAME                   CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
canal-etcd             10.96.232.136    <none>        6666/TCP        5m
kube-dns               10.96.0.10       <none>        53/UDP,53/TCP   13h
kubernetes-dashboard   10.110.163.186   <nodes>       80:31699/TCP    1m

Lo que esperabas que sucediera :
La sección nodePort en el documento de Servicios indica que nodePort debería estar visible en todas las direcciones IP de nodo.

En mi caso, no todos los IP de nodo responden a las solicitudes en el puerto de nodo 31699 del tablero y las reenvían al módulo del tablero.
Solo el nodo (o minion) que aloja el pod parece responder a las solicitudes del navegador. Los otros nodos (o minions) no responden.

Cómo reproducirlo (de la forma más mínima y precisa posible):

_De knode-1 (un siervo):_

$ sudo docker ps -a | grep dashboard
79e23eff2c26        gcr.io/google_containers/kubernetes-dashboard-amd64:v1.5.1   "/dashboard --port..."   44 minutes ago      Up 43 minutes 

_curl acceso al tablero fuera del clúster:_

Se agotó el tiempo de conexión a _knode-0:31699

$ curl -m 2 -O http://knode-0:31699/#/workload?namespace=default
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0curl: (28) Connection timed out after 2003 milliseconds

Descargado con éxito desde knode-1:31699

$ curl -m 2 -O http://knode-1:31699/#/workload?namespace=default
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   811  100   811    0     0  18097      0 --:--:-- --:--:-- --:--:-- 18431

*iptables * :

_Desde knode-1 (nodePort 31699 accesible):_

$ sudo iptables-save | grep dashboard
-A KUBE-NODEPORTS -p tcp -m comment --comment "kube-system/kubernetes-dashboard:" -m tcp --dport 31699 -j KUBE-MARK-MASQ
-A KUBE-NODEPORTS -p tcp -m comment --comment "kube-system/kubernetes-dashboard:" -m tcp --dport 31699 -j KUBE-SVC-XGLOHA7QRQ3V22RZ
-A KUBE-SEP-4CN2KLL64AIMJOUC -s 192.168.92.6/32 -m comment --comment "kube-system/kubernetes-dashboard:" -j KUBE-MARK-MASQ
-A KUBE-SEP-4CN2KLL64AIMJOUC -p tcp -m comment --comment "kube-system/kubernetes-dashboard:" -m tcp -j DNAT --to-destination 192.168.92.6:9090
-A KUBE-SERVICES -d 10.110.163.186/32 -p tcp -m comment --comment "kube-system/kubernetes-dashboard: cluster IP" -m tcp --dport 80 -j KUBE-SVC-XGLOHA7QRQ3V22RZ
-A KUBE-SVC-XGLOHA7QRQ3V22RZ -m comment --comment "kube-system/kubernetes-dashboard:" -j KUBE-SEP-4CN2KLL64AIMJOUC

_Desde knode-0 (nodePort 31699 inaccesible):_

$ sudo iptables-save | grep dashboard
-A KUBE-NODEPORTS -p tcp -m comment --comment "kube-system/kubernetes-dashboard:" -m tcp --dport 31699 -j KUBE-MARK-MASQ
-A KUBE-NODEPORTS -p tcp -m comment --comment "kube-system/kubernetes-dashboard:" -m tcp --dport 31699 -j KUBE-SVC-XGLOHA7QRQ3V22RZ
-A KUBE-SEP-4CN2KLL64AIMJOUC -s 192.168.92.6/32 -m comment --comment "kube-system/kubernetes-dashboard:" -j KUBE-MARK-MASQ
-A KUBE-SEP-4CN2KLL64AIMJOUC -p tcp -m comment --comment "kube-system/kubernetes-dashboard:" -m tcp -j DNAT --to-destination 192.168.92.6:9090
-A KUBE-SERVICES -d 10.110.163.186/32 -p tcp -m comment --comment "kube-system/kubernetes-dashboard: cluster IP" -m tcp --dport 80 -j KUBE-SVC-XGLOHA7QRQ3V22RZ
-A KUBE-SVC-XGLOHA7QRQ3V22RZ -m comment --comment "kube-system/kubernetes-dashboard:" -j KUBE-SEP-4CN2KLL64AIMJOUC

Cualquier otra cosa que necesitemos saber :

El mismo comportamiento es reproducible en RHEL 7.3.

sinetwork

Comentario más útil

Encontré el mismo problema.
Ejecute iptables -P FORWARD ACCEPT puede solucionar su problema. Pero no estoy seguro de que sea un error cuando se integra con docker v1.13.1

>Todos los comentarios

Encontré el mismo problema.
Ejecute iptables -P FORWARD ACCEPT puede solucionar su problema. Pero no estoy seguro de que sea un error cuando se integra con docker v1.13.1

¿Fue útil esta página
0 / 5 - 0 calificaciones