Kubernetes: nodePort لا يستجيب على كافة nodeIPs

تم إنشاؤها على ٢٨ فبراير ٢٠١٧  ·  1تعليق  ·  مصدر: kubernetes/kubernetes

إصدار Kubernetes :
إصدار العميل: version.Info {Major: "1"، Minor: "5"، GitVersion: "v1.5.2"، GitCommit: "08e099554f3c31f6e6f07b448ab3ed78d0520507"، GitTreeState: "clean"، BuildDate: 2017-01-12T04: 57 25Z "، GoVersion:" go1.7.4 "، المترجم:" gc "، النظام الأساسي:" darwin / amd64 "}
إصدار الخادم: version.Info {Major: "1"، Minor: "5"، GitVersion: "v1.5.3"، GitCommit: "029c3a408176b55c30846f0faedf56aae5992e9b"، GitTreeState: "clean"، BuildDate: "2017-02-15T06: 34: 56Z "، GoVersion:" go1.7.4 "، المترجم:" gc "، النظام الأساسي:" linux / amd64 "}

نسخة Docker على Master and Minions :
عامل ميناء -v
إصدار Docker 1.13.1 ، بناء 092cba3

البيئة :

  • مزود السحابة أو تكوين الأجهزة :
    برنامج VMWare
  • نظام التشغيل (على سبيل المثال من / etc / os-release):
    NAME = "أوبونتو"
    الإصدار = "16.04 LTS (Xenial Xerus)"
    المعرف = ubuntu
    ID_LIKE = ديبيان
    PRETTY_NAME = "Ubuntu 16.04 LTS"
    VERSION_ID = "16.04"
    HOME_URL = " http://www.ubuntu.com/ "
    SUPPORT_URL = " http://help.ubuntu.com/ "
    BUG_REPORT_URL = " http://bugs.launchpad.net/ubuntu/ "
    UBUNTU_CODENAME = زينيال
  • Kernel (على سبيل المثال uname -a ):
    Linux knode-master 4.4.0-45-generic # 66-Ubuntu SMP الأربعاء 19 أكتوبر 14:12:37 بالتوقيت العالمي المنسق 2016 x86_64 x86_64 x86_64 GNU / Linux
  • أدوات التثبيت :
    kubeadm

  • آخرون :

ماذا حدث :
باستخدام صفحة kubeadm ، قمت بتثبيت مجموعة من ثلاث عقد.

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

شبكة جراب القناة المثبتة:

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

كانت العقد والخدمات والقرون صحية في هذا الوقت. لذا انتقل إلى لوحة القيادة

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

ما توقعت حدوثه :
يشير قسم nodePort في مستند الخدمات إلى أن nodePort يجب أن يكون مرئيًا على جميع nodeIPs.

في حالتي ، لا تستجيب جميع nodeIPs للطلبات الموجودة على nodePort 31699 بلوحة القيادة وتعيد توجيهها إلى جراب لوحة القيادة.
يبدو أن العقدة (أو العميل) التي تستضيف الحجرة فقط تستجيب لطلبات المتصفح. العقد الأخرى (أو التوابع) لا تستجيب.

كيفية إعادة إنتاجه (بأقل قدر ممكن من الدقة والدقة):

من عقدة 1 (العميل): _

$ 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 الوصول إلى لوحة القيادة خارج الكتلة: _

انتهت مهلة الاتصال بـ _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

تم التنزيل بنجاح من 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 * :

_ من knode-1 (يمكن الوصول إلى nodePort 31699): _

$ 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

_ من العقدة 0 (يتعذر الوصول إلى nodePort 31699): _

$ 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

أي شيء آخر نريد أن نعرفه :

يمكن تكرار نفس السلوك على RHEL 7.3.

sinetwork

التعليق الأكثر فائدة

واجهت نفس المشكلة.
قد يؤدي تشغيل iptables -P FORWARD ACCEPT إلى حل مشكلتك. لكن لست متأكدًا من أنه خطأ عند دمجه مع docker v1.13.1

>كل التعليقات

واجهت نفس المشكلة.
قد يؤدي تشغيل iptables -P FORWARD ACCEPT إلى حل مشكلتك. لكن لست متأكدًا من أنه خطأ عند دمجه مع docker v1.13.1

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات