/ نوع الميزة
@ kubernetes / sig-cli
ماذا حدث :
لقد اكتشفت أنه إذا لم يكن من السهل إضافة آلات جديدة إذا لم يكن لديك إخراج سلسلة joun الأصلي من kubeadm. "هل هناك طريقة لإنشاء أمر الانضمام بالكامل؟ أشعر أنه يتعين علي إعادة تعيين المجموعة بأكملها لأتمكن من " الوصول إلى "السلسلة السحرية " (c) alexellis
ما توقعت حدوثه :
وبالمثل في Docker Swarm ، يمكنك دائمًا إخبار المعلم بطباعة سلسلة ربط قابلة للنسخ ولصقها لإضافة .. أو استيعاب؟ المزيد من الآلات.
إدخال مثال:
kubeadm token string
مثال الإخراج:
kubeadm join --token TOK MASTER_IP:6443 --discovery-token-ca-cert-hash sha256:HASH
أي شيء آخر نحن بحاجة إلى معرفته؟ :
أنت رائع!
(متابعة من: https://github.com/kubernetes/kubernetes/pull/41663)
luxasmattmoyerjamiehannaford
إجراء 1+ على شيء من هذا القبيل.
بعض الانتقادات حول هذه الفكرة:
kubeadm ca-cert-hash
(الاسم TBD) يقوم فقط بطباعة تجزئة المرجع المصدق الحالية. سيكون هذا في الأساس نفس الشيء مثل الأمر openssl
الذي نقدمه في مستندات kubeadm join
.أضف علامة --print-join-command
لـ kubeadm token create
تطبع أمر الصلة بالكامل كما يفعل kubeadm init
. نأمل أن يؤدي ذلك إلى تسهيل التشغيل التلقائي عن طريق تشغيل شيء مثل kubeadm token create --print-join-command >> worker_init.sh
أثناء التزويد.
أمر جديد kubeadm token get <token id>
يحصل على الرمز الكامل الممنوح للمعرف ، مع علامة --print-join-command
لطباعة أمر الانضمام الكامل اختياريًا بدلاً من الرمز المميز فقط.
شكرا لتوصيفي في هذا. قم بتدوين ملاحظة من UX of Docker Swarm - في أي وقت يمكنك كتابة docker swarm join-token worker
ولديك أمر للصقه في عامل أو للإرسال عبر SSH. مع Kubeadm ، من الصعب جدًا أن أقوم فعليًا بتمزيق الكتلة لإضافة عقدة جديدة - أنا واثق تمامًا من CLIs لذلك أنا متأكد من أنني لست الوحيد.
كما أن إخراج init ثقيل جدًا بحيث لا يمكنك الحصول على أمر الانضمام فقط وإخفائه في مكان ما ... ألجأ حاليًا إلى kubeadm init ... | grep 'kubeadm join --token' > /some_file
.
سيكون من الرائع أن يكون لديك وضع صامت حيث يكون الشيء الوحيد على stdout هو أمر الانضمام.
على أي حال ، ما هي طريقة الحصول على ca-cert-hash الآن؟ بالطبع ، انتهى الإنتاج kubeadm init
منذ فترة طويلة في هذه المرحلة ... ولم أحفظه متوقعًا أنه سيكون من السهل استخراج هذه المعلومات لاحقًا ، عند الطلب.
تمكنت من الحصول على رمز الانضمام بـ kubeadm token list
وانضممت إلى عقدة أخرى بـ kubeadm join --token
، لكنها تقول:
[validation] WARNING: using token-based discovery without DiscoveryTokenCACertHashes can be unsafe (see https://kubernetes.io/docs/admin/kubeadm/#kubeadm-join).
[validation] WARNING: Pass --discovery-token-unsafe-skip-ca-verification to disable this warning. This warning will become an error in Kubernetes 1.9.
لذا ، قبل أن يتحول إلى خطأ ، كيف يمكنني تمرير هذا المعامل؟ شكرا على اي مساعدة!
zcalusic الطريقة الحالية هي حساب التجزئة باستخدام OpenSSL مثل هذا (تشغيل على المستوى الرئيسي أو في أي مكان لديك نسخة من /etc/kubernetes/pki/ca.crt
):
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
شكرا لك mattmoyer على التلميح. يعمل برنامج oneliner الخاص بك على أكمل وجه.
بالطبع، يجب أن نتفق على أن --print-join-command
سيكون تجربة أفضل للمستخدم من ذلك بكثير.
أتفق مع --print-join-command
خلصنا في اجتماع SIG إلى أننا سنمضي قدمًا في كل من https://github.com/kubernetes/kubernetes/pull/55468 _و إضافة هذه الميزة.
سنرى في أي شكل بالضبط قليلا
نوقش هذا في مكالمة التكبير / التصغير 21 نوفمبر 2017 ؛ دقائق لهذه المكالمة على https://docs.google.com/document/d/1deJYPIF4LmhGjDVaqrswErIrV7mtwJgovtLnPCDxP7U/edit#
لقد ألقيت نظرة سريعة على هذا بالأمس ولكني لم أعمل عليه بعد :)
أضف علامة --print-Join-command لإنشاء kubeadm token الذي يطبع أمر الانضمام بالكامل تمامًا كما يفعل kubeadm init. من المأمول أن يجعل ذلك من السهل التشغيل التلقائي عن طريق تشغيل شيء مثل إنشاء الرمز المميز kubeadm - print-connect-command >> worker_init.sh أثناء التوفير.
إذا كنا نفضل هذا ، أعتقد أن هناك بالفعل نفس المنطق في إنشاء رمز تمهيد التشغيل . يمكننا استخدام ذلك هنا.
أمر جديد kubeadm token get
التي تحصل على الرمز المميز الكامل المعطى للمعرف ، مع علامة --print-Join-command لطباعة أمر الانضمام الكامل اختياريًا بدلاً من الرمز المميز فقط.
انا افضل هذا شخصيا ولكن يبدو أن كلا الفكرتين بحاجة إلى مزيد من السياق عند التنفيذ ، على سبيل المثال ، نحتاج إلى MasterConfiguration للحصول على عنوان إعلان apiserver. في الوقت الحالي ، لا يتوفر ملف التكوين token create
.
تحديث: ربما يمكننا تنفيذ كلتا الفكرتين؟ تضمين التغريدة
لقد نفذت الفكرة الأولى فقط في https://github.com/kubernetes/kubernetes/pull/56185. أنا لا أعارض تطبيق فكرة kubeadm get
أيضًا ، لكن الوقت المتاح لدينا قصير.
بدلاً من إنشاء kubeadm get
، يجب أن نطبع IMO التجزئة / عبارة الانضمام kubeadm في نهاية kubeadm token list
الموجود بالفعل.
أعتقد أن kubeadm token list --print-join-command
سيكون رائعًا!
أحب هذه الفكرةluxas. أعتقد أنه يمكننا تقليل الإسهاب ، أجد أنني أكتب علامات طويلة جدًا kubeadm
مقارنة بـ docker
CLI.
kubeadm token list --verbose
kubeadm token list --tokens
kubeadm token list --join-token
kubeadm token list --verbose|-v
يعمل معي أيضًا
مرحبًا ، هل تم ذلك؟
كيف يمكنني الحصول على الرمز المميز للانضمام إلى عقد جديدة في المجموعة الخاصة بي؟
tzurE تم دمجه ولكن لم يتم إصداره بعد ، سيكون جزءًا من Kubernetes 1.9 والذي من المقرر إصداره في وقت لاحق من هذا الأسبوع .
تتيح لك الوظيفة الجديدة تشغيل هذا الأمر للانضمام إلى العقد:
# on a master node (or any node with admin access to your cluster)
$ kubeadm token create --print-join-command
kubeadm join --token 447067.20b55955bd6abe6c 192.168.99.100:8443 --discovery-token-ca-cert-hash sha256:17023a5c90b996e50c514e63e161e46f78be216fd48c0c3df3be67e008b28889
# on the new node (copy-pasted from the output above)
$ kubeadm join --token 447067.20b55955bd6abe6c 192.168.99.100:8443 --discovery-token-ca-cert-hash sha256:17023a5c90b996e50c514e63e161e46f78be216fd48c0c3df3be67e008b28889
جميل شكرا لك.
هل يوجد حل في هذه الأثناء؟ طريقة لاستخراجه لا باستخدام الأوامر العادية؟
tzurE انظر هذا التعليق: https://github.com/kubernetes/kubeadm/issues/519#issuecomment -343192126
مرحبًا @ matmoyer
الأمر "kubeadm token create --print-Join-command" يعمل بشكل رائع في 1.9. لكنني أحصل على حالة NotReady على عقدي. أنا أستخدم أوبونتو 16.04 مع k8s 1.9.0. أي اقتراحات؟
@ siddharthjoshi745 انشر شبكة بود مثل Weave Net (كما يمكن رؤيته في مستنداتنا).
يُرجى عدم التعليق على المشكلات القديمة ، وبدلاً من ذلك افتح واحدة جديدة إذا وجدت شيئًا خاطئًا ، أو اطلب المساعدة على Slack
أتمنى لك يوما عظيما!
كيف يمكننا إخراج قيمة واحدة فقط؟ قل الرمز المميز أو رمز الاكتشاف ، إلخ ..
التعليق الأكثر فائدة
zcalusic الطريقة الحالية هي حساب التجزئة باستخدام OpenSSL مثل هذا (تشغيل على المستوى الرئيسي أو في أي مكان لديك نسخة من
/etc/kubernetes/pki/ca.crt
):