Kubeadm: Kegunaan yang lebih baik untuk token bergabung

Dibuat pada 4 Nov 2017  ·  22Komentar  ·  Sumber: kubernetes/kubeadm

/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

areUX prioritimportant-soon

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 ):

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

Semua 22 komentar

+1 pada sesuatu seperti ini.

Beberapa riff tentang ide ini:

  • Perintah 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 getyang 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?

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.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat