/jenis fitur
@kubernetes/sig-cli
Apa yang terjadi :
Saya telah menemukan bahwa jika tidak mudah untuk menambahkan mesin baru jika Anda tidak memiliki keluaran string joun asli dari kubeadm. "Apakah ada cara untuk menghasilkan seluruh perintah join? Saya merasa harus mengatur ulang seluruh cluster untuk dapat "mencapai" string ajaib " (c) @alexellis
Apa yang Anda harapkan terjadi :
Demikian juga di Docker Swarm, Anda selalu dapat memberi tahu master untuk mencetak string gabung yang dapat disalin untuk ditambahkan.. atau berasimilasi? lebih banyak mesin.
Contoh masukan:
kubeadm token string
Contoh keluaran:
kubeadm join --token TOK MASTER_IP:6443 --discovery-token-ca-cert-hash sha256:HASH
Ada lagi yang perlu kita ketahui? :
Kamu Menakjubkan!
(Tindak lanjut dari: https://github.com/kubernetes/kubernetes/pull/41663)
@luxas @mattmoyer @jamiehannaford
+1 pada sesuatu seperti ini.
Beberapa riff tentang ide ini:
kubeadm ca-cert-hash
(nama TBD) yang baru saja mencetak hash CA saat ini. Ini pada dasarnya akan sama dengan perintah openssl
kita berikan di kubeadm join
docs .Tambahkan flag --print-join-command
untuk kubeadm token create
yang mencetak seluruh perintah join seperti yang dilakukan kubeadm init
. Mudah-mudahan ini akan memudahkan untuk mengotomatisasi sekitar dengan menjalankan sesuatu seperti kubeadm token create --print-join-command >> worker_init.sh
selama penyediaan.
Perintah baru kubeadm token get <token id>
yang mendapatkan token lengkap yang diberikan ID, dengan flag --print-join-command
untuk mencetak perintah join lengkap, bukan hanya token.
Terima kasih telah menandai saya dalam hal ini. Catat dari UX Docker Swarm - kapan saja Anda dapat mengetikkan docker swarm join-token worker
dan memiliki perintah untuk menempel ke pekerja atau mengirim melalui SSH. Dengan Kubeadm sangat sulit saya benar-benar meruntuhkan cluster untuk menambahkan menambahkan node baru - saya cukup percaya diri dengan CLI jadi saya yakin saya bukan satu-satunya.
Juga output init sangat berat sehingga Anda tidak bisa mendapatkan perintah join dan menyimpannya di suatu tempat... saat ini saya menggunakan kubeadm init ... | grep 'kubeadm join --token' > /some_file
.
Akan keren untuk memiliki mode senyap di mana satu-satunya hal di stdout adalah perintah gabung.
Lagi pula, apa cara untuk mendapatkan ca-cert-hash itu sekarang? Tentu saja, output kubeadm init
sudah lama hilang pada saat ini... dan saya tidak menyimpannya dengan harapan akan mudah untuk mengekstrak info itu nanti, sesuai permintaan.
Saya berhasil mendapatkan token bergabung dengan kubeadm token list
dan bergabung dengan simpul lain dengan kubeadm join --token
, tetapi dikatakan:
[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.
Jadi, sebelum menjadi kesalahan, bagaimana cara melewati parameter itu? Terima kasih atas bantuannya!
@zcalusic cara saat ini adalah menghitung hash dengan OpenSSL seperti ini (jalankan di master atau di mana pun Anda memiliki salinan /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/^.* //'
Terima kasih @mattmoyer atas petunjuknya. Oneliner Anda bekerja dengan sempurna.
Tentu saja, saya harus setuju bahwa --print-join-command
akan menjadi pengalaman pengguna yang jauh lebih baik.
Setuju dengan --print-join-command
Kami menyimpulkan dalam pertemuan SIG bahwa kami akan melanjutkan https://github.com/kubernetes/kubernetes/pull/55468 _dan_ penambahan fitur ini.
Kita lihat nanti dalam bentuk apa tepatnya
Ini dibahas pada panggilan zoom 21 November 2017; menit untuk panggilan itu ada di https://docs.google.com/document/d/1deJYPIF4LmhGjDVaqrswErIrV7mtwJgovtLnPCDxP7U/edit#
Saya baru saja melihat ini kemarin tetapi belum mengerjakannya :)
Tambahkan flag --print-join-command untuk token create kubeadm yang mencetak seluruh perintah join seperti yang dilakukan kubeadm init. Mudah-mudahan ini akan memudahkan untuk mengotomatisasi dengan menjalankan sesuatu seperti kubeadm token create --print-join-command >> worker_init.sh selama penyediaan.
Jika kita lebih suka yang ini, saya pikir sudah ada logika yang sama di bootstrap token create . Kita bisa menggunakannya di sini.
Perintah baru kubeadm token get
yang mendapatkan token lengkap yang diberikan ID, dengan flag --print-join-command untuk mencetak perintah join penuh secara opsional, bukan hanya token.
Saya lebih suka yang ini secara pribadi. Tetapi sepertinya kedua ide tersebut membutuhkan lebih banyak konteks saat diterapkan, misalnya, kita memerlukan MasterConfiguration untuk mendapatkan alamat iklan apiserver. Saat ini token create
tidak memiliki konfigurasi.
UPDATE: mungkin kita bisa menerapkan kedua ide itu? @luxas @mattmoyer
Saya hanya menerapkan ide pertama di https://github.com/kubernetes/kubernetes/pull/56185 . Saya juga tidak menentang penerapan ide kubeadm get
, tetapi kami kekurangan waktu.
Alih-alih membuat kubeadm get
, IMO kita harus mencetak pernyataan hash/the kubeadm join di akhir kubeadm token list
.
Saya pikir kubeadm token list --print-join-command
akan bagus!
Saya suka ide itu @luxas. Saya pikir kita bisa membuatnya kurang bertele-tele, saya menemukan saya mengetikkan flag kubeadm
sangat panjang dibandingkan dengan CLI docker
.
kubeadm token list --verbose
kubeadm token list --tokens
kubeadm token list --join-token
kubeadm token list --verbose|-v
bekerja untuk saya juga
Hei, apakah ini sudah selesai?
Bagaimana saya bisa mendapatkan token untuk bergabung dengan node baru di cluster saya?
@tzurE sudah digabung tapi belum dirilis, ini akan menjadi bagian dari Kubernetes 1.9 yang dijadwalkan akan dirilis akhir minggu ini .
Fungsionalitas baru memungkinkan Anda menjalankan perintah ini untuk bergabung dengan node:
# 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
bagus, terima kasih.
apakah ada solusi sementara? Cara mengekstraknya tidak menggunakan perintah biasa?
@tzurE lihat komentar ini: https://github.com/kubernetes/kubeadm/issues/519#issuecomment -343192126
Hai @mattmoyer
Perintah "kubeadm token create --print-join-command" berfungsi dengan baik di 1.9. Tetapi saya mendapatkan status NotReady di node saya. Saya Menggunakan ubuntu 16.04 dengan k8s 1.9.0. Ada saran?
@siddharthjoshi745 Menyebarkan Jaringan Pod seperti Weave Net (seperti yang dapat dilihat di dokumen kami).
Tolong jangan mengomentari masalah lama, alih-alih buka yang baru jika Anda menemukan sesuatu yang salah, atau minta bantuan di Slack
Semoga hari mu menyenangkan!
Bagaimana kita bisa menghasilkan hanya satu nilai? Ucapkan token atau token penemuan sha, dll.
Komentar yang paling membantu
@zcalusic cara saat ini adalah menghitung hash dengan OpenSSL seperti ini (jalankan di master atau di mana pun Anda memiliki salinan
/etc/kubernetes/pki/ca.crt
):