Kubeadm: Meilleure utilisabilité du jeton de jointure

Créé le 4 nov. 2017  ·  22Commentaires  ·  Source: kubernetes/kubeadm

/ fonction gentille
@kubernetes/sig-cli
Que s'est-il passé :
J'ai découvert que s'il n'est pas si facile d'ajouter de nouvelles machines si vous n'avez pas de sortie de chaîne joun originale de kubeadm. "Y a-t-il un moyen de générer l'intégralité de la commande de jointure? J'ai l'impression que je dois réinitialiser l'ensemble du cluster pour pouvoir "atteindre" la chaîne magique " (c) @alexellis

Ce à quoi vous vous attendiez :
De même dans Docker Swarm, vous pouvez toujours dire au maître d'imprimer une chaîne de jointure copier-coller à ajouter.. ou à assimiler? plus de machines.

Exemple de saisie :

kubeadm token string

Exemple de sortie :

kubeadm join --token TOK MASTER_IP:6443 --discovery-token-ca-cert-hash sha256:HASH

Autre chose que nous devons savoir ? :
Tu es incroyable!

(Suivi de : https://github.com/kubernetes/kubernetes/pull/41663)
@luxas @mattmoyer @jamiehannaford

areUX prioritimportant-soon

Commentaire le plus utile

@zcalusic la méthode actuelle consiste à calculer le hachage avec OpenSSL comme ceci (exécutez sur le maître ou partout où vous avez une copie de /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/^.* //'

Tous les 22 commentaires

+1 sur quelque chose comme ça.

Quelques riffs sur cette idée :

  • Une nouvelle commande kubeadm ca-cert-hash (nom à déterminer) qui imprime simplement le hachage CA actuel. Ce serait essentiellement la même chose que la commande openssl nous donnons dans les kubeadm join docs .
  • Ajoutez un indicateur --print-join-command pour kubeadm token create qui imprime toute la commande de jointure comme le fait kubeadm init . Cela faciliterait, espérons-le, l'automatisation en exécutant quelque chose comme kubeadm token create --print-join-command >> worker_init.sh pendant le provisionnement.

  • Une nouvelle commande kubeadm token get <token id> qui obtient le jeton complet en fonction de l'ID, avec un indicateur --print-join-command pour imprimer éventuellement la commande de jointure complète au lieu de simplement le jeton.

Merci de m'avoir tagué là-dedans. Prenez note de l'UX de Docker Swarm - à tout moment, vous pouvez saisir docker swarm join-token worker et avoir une commande à coller dans un travailleur ou à envoyer via SSH. Avec Kubeadm, c'est tellement difficile que je détruis littéralement le cluster pour ajouter un nouveau nœud - je suis assez confiant avec les CLI donc je suis sûr que je ne suis pas le seul.

De plus, la sortie init est si lourde que vous ne pouvez pas vraiment obtenir la commande join et la ranger quelque part... actuellement, j'ai recours à kubeadm init ... | grep 'kubeadm join --token' > /some_file .
Ce serait cool d'avoir un mode silencieux où la seule chose sur stdout est la commande join.

Quoi qu'il en soit, quel est le moyen d'obtenir ce ca-cert-hash maintenant ? Bien sûr, la sortie kubeadm init disparu depuis longtemps à ce stade... et je ne l'ai pas sauvegardée en m'attendant à ce qu'il soit facile d'extraire cette information plus tard, à la demande.

J'ai réussi à obtenir un jeton de jointure avec kubeadm token list et j'ai rejoint un autre nœud avec kubeadm join --token , mais cela dit :

[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.

Alors, avant que cela ne devienne une erreur, comment passer ce paramètre ? Merci pour toute aide!

@zcalusic la méthode actuelle consiste à calculer le hachage avec OpenSSL comme ceci (exécutez sur le maître ou partout où vous avez une copie de /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/^.* //'

Merci @mattmoyer pour l'astuce. Votre oneliner a parfaitement fonctionné.

Bien sûr, je dois convenir que --print-join-command serait une bien meilleure expérience utilisateur.

D'accord avec --print-join-command

Nous avons conclu lors de la réunion SIG que nous allons procéder à la fois avec https://github.com/kubernetes/kubernetes/pull/55468 _et_ cet ajout de fonctionnalité.
On verra sous quelle forme exactement dans un instant

Cela a été discuté lors de l'appel zoom du 21 novembre 2017 ; minutes pour cet appel sont à https://docs.google.com/document/d/1deJYPIF4LmhGjDVaqrswErIrV7mtwJgovtLnPCDxP7U/edit#

Je viens d'y jeter un coup d'œil hier mais je n'ai pas encore travaillé dessus :)

Ajoutez un indicateur --print-join-command pour la création de jeton kubeadm qui imprime l'intégralité de la commande de jointure, tout comme le fait kubeadm init. Cela faciliterait, espérons-le, l'automatisation en exécutant quelque chose comme kubeadm token create --print-join-command >> worker_init.sh pendant le provisionnement.

Si nous préférons celui-ci, je pense qu'il existe déjà la même logique dans bootstrap token create . Nous pouvons l'utiliser ici.

Une nouvelle commande kubeadm token getqui obtient le jeton complet étant donné l'ID, avec un indicateur --print-join-command pour éventuellement imprimer la commande de jointure complète au lieu de simplement le jeton.

Je préfère celui-ci personnellement. Mais il semble que les deux idées nécessitent plus de contexte lors de la mise en œuvre, par exemple, nous avons besoin de MasterConfiguration pour obtenir l'adresse de publicité apiserver. Actuellement, les token create n'ont pas la configuration.

MISE À JOUR : peut-être pouvons-nous mettre en œuvre les deux idées ? @luxas @mattmoyer

J'ai mis en œuvre juste la première idée dans https://github.com/kubernetes/kubernetes/pull/56185. Je ne suis pas opposé à la mise en œuvre de l'idée kubeadm get , mais nous manquons de temps.

Au lieu de créer un nouveau kubeadm get , IMO, nous devrions imprimer le hachage/la déclaration de jointure kubeadm à la fin du kubeadm token list déjà existant.

Je pense que kubeadm token list --print-join-command serait super !

J'aime cette idée @luxas. Je pense que nous pourrions le rendre moins verbeux, je trouve que je tape des drapeaux très longs kubeadm par rapport à la CLI docker .

kubeadm token list --verbose

kubeadm token list --tokens

kubeadm token list --join-token

kubeadm token list --verbose|-v fonctionne aussi pour moi

Hé, c'est fait ?
Comment puis-je obtenir le jeton pour rejoindre de nouveaux nœuds dans mon cluster ?

@tzurE il est fusionné mais pas encore publié, il fera partie de Kubernetes 1.9 qui devrait sortir plus tard cette semaine .

La nouvelle fonctionnalité vous permet d'exécuter cette commande pour joindre des nœuds :

# 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

bien merci.
y a t'il une solution en attendant ? Un moyen de l'extraire sans utiliser les commandes habituelles ?

@tzurE voir ce commentaire : https://github.com/kubernetes/kubeadm/issues/519#issuecomment -343192126

Salut @mattmoyer

La commande "kubeadm token create --print-join-command" fonctionne très bien dans la version 1.9. Mais j'obtiens le statut NotReady sur mon nœud. J'utilise ubuntu 16.04 avec k8s 1.9.0. Aucune suggestion?

@ siddharthjoshi745 Déployez un réseau de
Veuillez ne pas commenter les anciens problèmes, ouvrez-en un nouveau si vous avez trouvé quelque chose qui ne va pas, ou demandez de l'aide sur Slack
Passe une bonne journée!

Comment pouvons-nous sortir une seule valeur ? Dites le jeton ou le jeton de découverte sha, etc.

Cette page vous a été utile?
0 / 5 - 0 notes