/ 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
+1 sur quelque chose comme ça.
Quelques riffs sur cette idée :
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 get
qui 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.
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
):