Kubernetes: nodePort antwortet nicht auf allen nodeIPs

Erstellt am 28. Feb. 2017  ·  1Kommentar  ·  Quelle: kubernetes/kubernetes

Kubernetes-Version :
Client-Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507", GitTreeState:"clean", BuildDate:"2017-01-12T04:57: 25Z", GoVersion:"go1.7.4", Compiler:"gc", Plattform:"darwin/amd64"}
Serverversion: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.3", GitCommit:"029c3a408176b55c30846f0faedf56aae5992e9b", GitTreeState:"clean", BuildDate:"2017-02-15T06:34: 56Z", GoVersion:"go1.7.4", Compiler:"gc", Plattform:"linux/amd64"}

Docker-Version auf Master und Minions :
$ docker-v
Docker-Version 1.13.1, Build 092cba3

Umgebung :

  • Kernel (zB uname -a ):
    Linux knode-master 4.4.0-45-generic #66-Ubuntu SMP Wed Okt 19 14:12:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
  • Werkzeuge installieren :
    kubeadm

  • Andere :

Was ist passiert :
Mit der kubeadm- Seite habe ich einen Cluster mit drei Knoten installiert.

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

Installiertes Kanal-Pod-Netzwerk:

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

Knoten, Dienste und Pods waren zu diesem Zeitpunkt fehlerfrei. Also weiter zum Dashboard

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

Was Sie erwartet haben :
Der Abschnitt „nodePort“ im Dokument „Services“ gibt an, dass „nodePort“ auf allen nodeIPs sichtbar sein sollte.

In meinem Fall antworten nicht alle NodeIPs auf Anfragen am NodePort 31699 des Dashboards und leiten sie an das Dashboard-Pod weiter.
Nur der Knoten (oder Minion), der den Pod hostet, scheint auf die Browseranfragen zu reagieren. Die anderen Knoten (oder Schergen) antworten nicht.

So reproduzieren Sie es (so minimal und genau wie möglich):

_Von knode-1 (ein Diener):_

$ 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-Zugriff auf das Dashboard außerhalb des Clusters:_

Zeitüberschreitung der Verbindung zu _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

Erfolgreich heruntergeladen von 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 * :

_Von knode-1 (nodePort 31699 zugänglich):_

$ 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

_Von knode-0 (nodePort 31699 nicht erreichbar ):_

$ 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

Was wir sonst noch wissen müssen :

Das gleiche Verhalten ist auf RHEL 7.3 reproduzierbar.

sinetwork

Hilfreichster Kommentar

Ich bin auf das gleiche Problem gestoßen.
Führen Sie iptables -P FORWARD ACCEPT aus, um Ihr Problem zu beheben. Aber ich bin mir nicht sicher, ob es sich um einen Fehler handelt, wenn er in Docker v1.13.1 integriert ist

>Alle Kommentare

Ich bin auf das gleiche Problem gestoßen.
Führen Sie iptables -P FORWARD ACCEPT aus, um Ihr Problem zu beheben. Aber ich bin mir nicht sicher, ob es sich um einen Fehler handelt, wenn er in Docker v1.13.1 integriert ist

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen