<p>فشل kubeadm مع عدم وجود عنوان IPv4 على واجهة الشبكة مع defaultroute</p>

تم إنشاؤها على ٣ أكتوبر ٢٠١٨  ·  42تعليقات  ·  مصدر: kubernetes/kubeadm

هل هذا تقرير خطأ أم طلب ميزة؟

اختر واحدًا: تقرير الخطأ

إصدارات

إصدار kubeadm (استخدم kubeadm version ):
kubeadm version: &version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.2", GitCommit:"bb9ffb1654d4a729bb4cec18ff088eacc153c239", GitTreeState:"clean", BuildDate:"2018-08-07T23:14:39Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}

البيئة :

  • إصدار Kubernetes (استخدم kubectl version ):
    Client Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.2", GitCommit:"bb9ffb1654d4a729bb4cec18ff088eacc153c239", GitTreeState:"clean", BuildDate:"2018-08-07T23:17:28Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}
  • مزود السحابة أو تكوين الأجهزة : الأجهزة
  • نظام التشغيل (على سبيل المثال من / etc / os-release):
    "" NAME = "CentOS Linux"
    الإصدار = "7 (الأساسية)"
    المعرف = "centos"
    ID_LIKE = "ريل فيدورا"
    VERSION_ID = "7"
    PRETTY_NAME = "CentOS Linux 7 (Core)"
    ANSI_COLOR = "0 ؛ 31"
    CPE_NAME = "cpe: / o: centos: centos : 7"
    HOME_URL = " https://www.centos.org/ "
    BUG_REPORT_URL = " https://bugs.centos.org/ "

CENTOS_MANTISBT_PROJECT = "CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION = "7"
REDHAT_SUPPORT_PRODUCT = "سنتوس"
REDHAT_SUPPORT_PRODUCT_VERSION = "7"


- **Kernel** (e.g. `uname -a`):
`Linux node1-lab-a1-01 3.10.0-862.14.4.el7.x86_64 #1 SMP Wed Sep 26 15:12:11 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux`

- **Others**:
Our hosts are setup using IPv4 BGP over IPv6 (rfc5549: https://tools.ietf.org/html/rfc5549).
The host ip address is attached to a loopback address and FRR bgp announces that IP to connected TOR switches (spine and leaf fabric). There is no IPv4 address on the connected interfaces, but I do have a default route that allows access to the world:

```# ip route
default proto bgp metric 20
    nexthop via 169.254.0.1 dev em1 weight 1 onlink
    nexthop via 169.254.0.1 dev em2 weight 1 onlink
10.101.155.0/24 proto bgp metric 20
    nexthop via 169.254.0.1 dev em1 weight 1 onlink
    nexthop via 169.254.0.1 dev em2 weight 1 onlink
10.101.246.0/24 dev em3 proto kernel scope link src 10.101.246.11
169.254.0.0/16 dev em3 scope link metric 1002
169.254.0.0/16 dev em1 scope link metric 1003
169.254.0.0/16 dev em2 scope link metric 1005
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1

ماذا حدث؟

وجود مشكلة مشابهة لمشكلة # 982

ركض

# kubeadm config images pull
unable to select an IP from default routes.
# kubeadm config images pull -v 10
I1003 20:56:35.880474   87226 interface.go:360] Looking for default routes with IPv4 addresses
I1003 20:56:35.880550   87226 interface.go:365] Default route transits interface "em1"
I1003 20:56:35.881831   87226 interface.go:174] Interface em1 is up
I1003 20:56:35.881925   87226 interface.go:222] Interface "em1" has 1 addresses :[fe80::266e:96ff:fe5f:7b48/64].
I1003 20:56:35.881957   87226 interface.go:189] Checking addr  fe80::266e:96ff:fe5f:7b48/64.
I1003 20:56:35.881989   87226 interface.go:202] fe80::266e:96ff:fe5f:7b48 is not an IPv4 address
I1003 20:56:35.882027   87226 interface.go:360] Looking for default routes with IPv6 addresses
I1003 20:56:35.882051   87226 interface.go:376] No active IP found by looking at default routes
unable to select an IP from default routes.

نفس الخطأ يحدث مع عمل kubeadm init

ماذا توقعت أن يحدث؟

أتوقع أن يعمل kubeadm وسحب الصور أو يؤدي عملية تهيئة.
ربما يكون لديك طريقة لتحديد عنوان IP أو واجهة مضيفي.

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

أي شيء آخر نحن بحاجة إلى معرفته؟

areecosystem kinbug prioritimportant-longterm sinetwork

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

كما أنه من الصعب بعض الشيء تحليله مع جميع المخرجات الأخرى والتباعد ؛)

لقد فعلت الكثير في حياتي ومن المحتمل أن أكون غير حساس للغاية ؛-)

ال 42 كومينتر

@ bart0shkad - هل لديك أي الاجهزة الشبكة التي تشبه هذا؟

scheuk ما هو عنوان IPv4 المحلي
هل يمكنك إضافته إلى / etc / hosts وتحديد kubeadm config؟

/ cc @ kubernetes / sig-network-bugs

timothysc هل نعرف ما إذا كان خادم api سيعمل مع هذا النوع من البيئة؟ أنا فقط أتساءل عما إذا كنا نجعل kubeadm يعمل في إعداد هذه الشبكة ، فهل سنواجه المزيد من المشاكل على الطريق؟

إذا كان لديك محول إيثرنت محدد يلف التفاصيل ويمكنك الارتباط أو تجاوز المضيفين / etc / hosts ، فأعتقد أنه يجب أن "يعمل فقط".

تضمين التغريدة
عنوان IP للمضيف المحلي الخاص بي يجلس على lo0:

# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 10.101.228.11/32 brd 10.101.228.11 scope global lo:0
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever

عنوان ip 10.101.228.11

قضيت الصباح في عمل kubeadm init .
تمكنت من إضافة هذا إلى التكوين وعملت init مثل السحر.

api:
  advertiseAddress: 10.101.228.11

ومع ذلك ، ما زلت عالقًا في حاجة إلى مسار لأداء الأمر kubeadm config images pull
بالإضافة إلى kubeadm token create --print-join-command للحصول على أمر الانضمام لإضافة عقد عاملة إلى الكتلة.

تضمين التغريدة
هل يمكنك شرح تجاوز / etc / hosts؟

لقد حاولت للتو إضافة 10.101.228.11 hostname إلى / etc / hosts.
لكن kubeadm لا يزال يبحث في الواجهة مع المسار.

لذلك يجب أن يتم ذلك مع تفاصيل تكوين الشبكة الخاصة بك ، إلى جانب السلوك الافتراضي للنظام.

أنا متأكد تمامًا مما إذا كنت ستصنع محولًا موصلاً لربط عنوان IPv4 بـ ، مقابل الارتباط بالاسترجاع ، فإنه سيكتشف بشكل صحيح.

أنا أحفر الآن لمعرفة ما إذا كان هناك تجاوز عالمي لـ nic الذي يعمل عبر *.

لذلك سيكون مزيجًا من عناوين --api-advertise - و- hostname-override ، لست متأكدًا من أن كل هذه الخيارات تنتقل إلى جميع الأوامر الفرعية ، ولا تزال تبحث.

scheuk هل يمكنك تشغيل

kubeadm config images pull --config yourconfig.yaml

مع تحديد ملف التكوين الخاص بك: advertiseAddress

قد تحتاج إلى تمرير --config لكل أمر فرعي b / c بالطريقة التي يتم بها إعداد شبكتك.

يمكنك تشغيل kubeadm token create --print-join-command من أي مضيف أو خط أنابيب بعلامة --kubeconfig .

هناك حل محتمل حول الصور التي تسحب الشيء نظرًا للتكوين سيكون شيئًا مثل:
kubeadm config images list | xargs -n1 -I {} docker pull {}
تشغيل قبل الحرف الأول

تضمين التغريدة

لا تستمر - kubeconfig:

# kubeadm token create --print-join-command --kubeconfig /etc/kubernetes/admin.conf
unable to select an IP from default routes.

أيضًا إذا حاولت باستخدام --config ، فإنه يقول إنه لا يمكنك الجمع بين هذين:

# kubeadm token create --print-join-command --config /etc/kubernetes/kubeadm.conf
can not mix '--config' with arguments [print-join-command]

نجح هذا ، وسوف أقوم بتحديث النشر الخاص بي للقيام بذلك

# kubeadm config images pull --config /etc/kubernetes/kubeadm.conf

أعني أنه يمكنك استخدام kubeadm token create من جهاز ذو مسار افتراضي مثل الكمبيوتر المحمول الخاص بك طالما أنه يمكنه الوصول إلى apiserver قيد التشغيل ومستوى مشرف kubeconfig

تضمين التغريدة

""

إنشاء رمز kubeadm --print-Join-command --config /etc/kubernetes/kubeadm.conf

لا يمكن خلط "--config" مع الوسائط [print-Join-command]
""

هو خطأ بسيط يمكننا إصلاحه في 1.13

هل ما زلت محجوبًا؟

تضمين التغريدة

ما زلت محجوبًا.
نستخدم ansible لأداء كل هذه الخطوات وأنا أعمل حاليا
kubeadm token create --print-join-command على المعلم الأول للحصول على الأمر لربط العقد العاملة في الكتلة. ومع ذلك ، قد أتمكن من إلغاء حظر نفسي مؤقتًا عن طريق القيام بما يقوله mauilion ، وإعداد kubeadm محليًا (حيث يتم تشغيل ansible من) لتنفيذ هذا الإجراء.

شكرا لكل المساعدة حتى الآن!

نستخدم ansible لأداء كل هذه الخطوات وأنا أعمل حاليا
kubeadm token قم بإنشاء --print-Join-command على المعلم الأول للحصول على الأمر لضم العقد العاملة إلى الكتلة.

ناتج init يحتوي على الأمر الذي يجب عليك تنفيذه على العقد الأخرى.

يتم ذلك عادةً بشكل غير مرئي لأن الرمز المميز قصير العمر ومن الأسهل التقاط إخراج أمر الانضمام من إنشاء الرمز المميز بدلاً من init.

كما أنه من الصعب بعض الشيء تحليله مع جميع المخرجات الأخرى والتباعد ؛)

كما أنه من الصعب بعض الشيء تحليله مع جميع المخرجات الأخرى والتباعد ؛)

لقد فعلت الكثير في حياتي ومن المحتمل أن أكون غير حساس للغاية ؛-)

لذا فإن مضيفي المحلي حيث يمكنني تشغيل kubeadm من ansible هو جهاز Mac.
من صفحة تثبيت kubeadm ، لا يدعم نظام التشغيل Mac OS X.

docker run --net=host --rm -v /path/to/kubeconfig:/kubeconfig quay.io/mauilion/kubeadm:v1.11.3  kubeadm token create --print-join-command --kubeconfig=/kubeconfig

output:
kubeadm join 10.192.0.2:6443 --token iwikby.5u4wc05jnbdldq5e --discovery-token-ca-cert-hash sha256:f19311dfe7034d14c48002fd4f29e285270a573b9e9066735d5749ca89b9c89f

:)

تضمين التغريدة لكن هذا رائع لديك كوناتين kubeadm :)

لقد قمت للتو بتحديث ansible لتنفيذ:
docker run --rm -v /etc/kubernetes/admin.conf:/kubeconfig quay.io/mauilion/kubeadm:v1.11.3 kubeadm token create --print-join-command --kubeconfig=/kubeconfig 2>/dev/null على المعلم الأول. دع الحاوية تستخدم شبكة عامل الإرساء بدلاً من الشبكة المضيفة لإخفاء إعداد الشبكة.

لطيف

هل أنت غير محظورscheuk

نعم غير محظور الآن! شكرا لجميع التعليمات!

@ bart0shkad - هل لديك أي الاجهزة الشبكة التي تشبه هذا؟

ليس لدينا مثل هذا تمامًا ، لكنني أعتقد أنه يمكننا محاكاة هذا الإعداد بشكل أبسط ولكن قريبًا.

scheuk ، هل يمكنك عرض أمثلة ماذا لديك في جدول توجيه

kad انتقل فريق شبكتنا تمامًا إلى ipv6 حتى الآن ، لكنهم اشتروا في توجيه cumulus linux على المضيف باستخدام العناوين المحلية لرابط ipv6 و RFC المذكورة أعلاه.
هنا رابط لكيفية عملها: https://docs.cumulusnetworks.com/display/ROH/Routing+on+the+Host
ضمن قسم BGP و OSPF Unnumbered Interfaces .

مرفق هنا الإخراج إذا كان جدول توجيه IPv6 وواجهات:

# ip -6 route
unreachable ::/96 dev lo metric 1024 error -113 pref medium
unreachable ::ffff:0.0.0.0/96 dev lo metric 1024 error -113 pref medium
unreachable 2002:a00::/24 dev lo metric 1024 error -113 pref medium
unreachable 2002:7f00::/24 dev lo metric 1024 error -113 pref medium
unreachable 2002:a9fe::/32 dev lo metric 1024 error -113 pref medium
unreachable 2002:ac10::/28 dev lo metric 1024 error -113 pref medium
unreachable 2002:c0a8::/32 dev lo metric 1024 error -113 pref medium
unreachable 2002:e000::/19 dev lo metric 1024 error -113 pref medium
unreachable 3ffe:ffff::/32 dev lo metric 1024 error -113 pref medium
fe80::/64 dev fabric0 proto kernel metric 256 mtu 9000 pref medium
fe80::/64 dev em1 proto kernel metric 256 pref medium
fe80::/64 dev em2 proto kernel metric 256 pref medium
fe80::/64 dev em3 proto kernel metric 256 pref medium
fe80::/64 dev docker0 proto kernel metric 256 pref medium

# ip addr show em1
4: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
    link/ether 24:6e:96:5f:7b:48 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::266e:96ff:fe5f:7b48/64 scope link
       valid_lft forever preferred_lft forever

# ip addr show em2
5: em2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
    link/ether 24:6e:96:5f:7b:4a brd ff:ff:ff:ff:ff:ff
    inet6 fe80::266e:96ff:fe5f:7b4a/64 scope link
       valid_lft forever preferred_lft forever

kad انتقل فريق شبكتنا تمامًا إلى ipv6 حتى الآن ، لكنهم اشتروا في توجيه cumulus linux على المضيف باستخدام العناوين المحلية لرابط ipv6 و RFC المذكورة أعلاه.
هنا رابط لكيفية عملها: https://docs.cumulusnetworks.com/display/ROH/Routing+on+the+Host
ضمن قسم BGP و OSPF Unnumbered Interfaces .

scheuk شكرا على التوضيحات. لذا ، لتلخيص الصورة بأكملها (لمعرفة ما إذا كنت قد فهمت الإعداد الخاص بك تمامًا):

  • مضيفك لديه على lo واجهة واحدة (أو أكثر؟) / 32 عنوان ipv4.
  • ليس لديك عناوين unicast ipv6 / 128 على lo (مشابه لسيناريوهات ipv4)
  • تستخدم واجهات الشبكة الروابط المحلية على bofh ipv4 / ipv6.
  • ospf / bgp المُستخدم للإعلان عن المسارات الحقيقية للمضيف والمضيف / 32 أو / 128 يتم الإعلان عنها مرة أخرى إلى TORs.

هل هذا صحيح ؟

إذا كان هذا صحيحًا أعلاه ، فهل يمكنك مشاركة ناتج إضافي ip ro get 8.8.8.8 ؟
(بدلاً من 8.8.8.8 يمكنك استخدام أي عنوان IP أحادي الإرسال. أحاول فهم ما سيستخدمه kernel كعنوان مصدر صادر للمسار الافتراضي والمسارات التي حصلت عليها عبر ospf / bgp ، خارج نطاق IP للمجموعة الخاصة بك ).

scheuk ، يمكنك تجربة التصحيح من # 69578 لمعرفة ما إذا كان يعمل في الإعداد الخاص بك.
إذا كنت بحاجة إلى بعض المساعدة ، يمكنني توفير نظام ثنائي مدمج مع تطبيق التصحيح.

kad فهمك للإعداد لدينا صحيح.
تعلن BGP عن مسارات أخرى أيضًا ، وقد تم تكوينها لالتقاط مسارات الثقب الأسود المحلية والإعلان عنها ، ولكن هذا مخصص لاتصال POD مقابل اتصال المضيف.

هذا ناتج ip ro get على المضيف:

# ip ro get 8.8.8.8
8.8.8.8 via 169.254.0.1 dev em2 src 10.101.228.11
    cache

سأحاول أيضًا اختبار التصحيح من # 69578 وإعلامك بذلك

kad ، هل يمكنك أن ترسل لي ثنائيًا ، قد يستغرق وقتًا أقل ثم أقوم بإعداد go / معرفة كيفية إضافة تصحيح :)

kad ، هل يمكنك أن ترسل لي ثنائيًا ، قد يستغرق وقتًا أقل ثم أقوم بإعداد go / معرفة كيفية إضافة تصحيح :)

جرب http://orava.kad.name/kubeadm/kubeadm-69578
تم بناء هذا الكوبيدم من الفرع الرئيسي. ولكن إلى الحد الأدنى ، يجب أن يكون الأمر جيدًا لمحاولة الإعداد الخاص بك.

@ kad تبدو جيدة:

# ./kubeadm-69578 config images pull -v 10
I1009 21:53:05.336396   47234 interface.go:384] Looking for default routes with IPv4 addresses
I1009 21:53:05.336485   47234 interface.go:389] Default route transits interface "em1"
I1009 21:53:05.337591   47234 interface.go:196] Interface em1 is up
I1009 21:53:05.337687   47234 interface.go:244] Interface "em1" has 1 addresses :[fe80::266e:96ff:fe5f:7b48/64].
I1009 21:53:05.337721   47234 interface.go:211] Checking addr  fe80::266e:96ff:fe5f:7b48/64.
I1009 21:53:05.337742   47234 interface.go:224] fe80::266e:96ff:fe5f:7b48 is not an IPv4 address
I1009 21:53:05.337768   47234 interface.go:398] Default route exists for IPv4, but interface "em1" does not have unicast addresses. Checking loopback interface
I1009 21:53:05.338779   47234 interface.go:196] Interface lo is up
I1009 21:53:05.338884   47234 interface.go:244] Interface "lo" has 4 addresses :[127.0.0.1/8 10.101.228.11/32 192.0.2.1/24 ::1/128].
I1009 21:53:05.338918   47234 interface.go:211] Checking addr  127.0.0.1/8.
I1009 21:53:05.338958   47234 interface.go:221] Non-global unicast address found 127.0.0.1
I1009 21:53:05.338977   47234 interface.go:211] Checking addr  10.101.228.11/32.
I1009 21:53:05.338995   47234 interface.go:218] IP found 10.101.228.11
I1009 21:53:05.339025   47234 interface.go:250] Found valid IPv4 address 10.101.228.11 for interface "lo".
I1009 21:53:05.339044   47234 interface.go:404] Found active IP 10.101.228.11 on loopback interface
I1009 21:53:05.339186   47234 version.go:156] fetching Kubernetes version from URL: https://dl.k8s.io/release/stable-1.txt
I1009 21:53:05.687024   47234 feature_gate.go:206] feature gates: &{map[]}

جيد. لذا ، يرجى التعليق على العلاقات العامة :)

/ ccrdodev - بخصوص

العلاقات العامة ذات الصلة بهذا في رحلة طيران من kad لكن المراجعات معلقة:
https://github.com/kubernetes/kubernetes/pull/69578

/ تعيين rdodev

دعنا نتحدث في الصباح على هذا.

kubeadm token create --print-Join-command --config /etc/kubernetes/kubeadm.conf لا يمكنه مزج "--config" مع الوسائط [print-Join-command]

من حيث cli ، فقد تم بالفعل الاهتمام بهذاtimothysc

https://github.com/kubernetes-csi/driver-registrar/blob/87d0059110a8b4a90a6d2b5a8702dd7f3f270b80/vendor/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation/validation.

عظيم!

فقط ضع عنوان IP الخاص بالسيد بدلاً من $ (hostname -i)
على سبيل المثال:
kubeadm init - عنوان الخادم الإعلاني 192.168.1.2

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