Je sais donc comment ajouter un nœud de travail à un cluster Kubernetes 1.14 existant (qui a été configuré avec kubeadm
): kubeadm token create --print-join-command
imprimera une jointure kubeadm
valide commande avec des valeurs correctes pour les arguments --token
et --discovery-token-ca-cert-hash
.
Je comprends actuellement que pour ajouter un autre nœud au plan de contrôle (nœud maître) kubeadm join
nécessite les arguments supplémentaires --experimental-control-plane
(sans valeur) et --certificate-key
. Ceci est pour le plan de contrôle empilé et les nœuds etcd.
Comment (dans quel fichier) puis-je obtenir la valeur correcte pour --certificate-key
pour un cluster existant?
MISE À JOUR Mon premier nœud maître (et actuellement le seul) a été créé sans l'argument --experimental-upload-certs
dans kubeadm init
( mais par kubeadm init --pod-network-cidr = 10.244.0.0 / 16
à la place). Par conséquent, la distribution manuelle des certificats devrait s'appliquer et une séquence possible de les étapes pourraient donc être:
/etc/kubernetes/pki/{ca.*,sa.*,front-proxy-sa.*,etcd/ca.*}
du premier au nouveau nœud maître kubeadm token create --print-join-command
sur le premier nœud maître kubeadm join
avec l'argument supplémentaire --experimental-control-plane
sur le nouveau nœud maître Est-ce la bonne procédure?
3 Réponses :
Selon la documentation , cette commande fournit une nouvelle clé de description:
kubeadm init phase upload-certs --experimental-upload-certs
J'avais du mal avec cela dans la version 1.17 et j'ai finalement trouvé que cette commande donnerait une pré-génération d'une clé de certificat que je pourrais utiliser à la fois dans kubeadmn init
et kubeadmn join
. Pour que cela fonctionne, vous devez passer --upload-certs
ainsi que lorsque vous exécutez kubeadmn init
similaire à ce que vous avez noté pour 1.14.
# générer une clé de certificat à utiliser
kubeadm alpha certs clé de certificat
# initialise le premier maître en utilisant la clé ci-dessus, --upload-certs (et d'autres paramètres)
kubeadm init --control-plane-endpoint $ API_SERVER: 6443 --upload-certs --apiserver-cert-extra-sans $ API_SERVER --certificate-key $ CERT-KEY
# rejoindre d'autres maîtres en utilisant la même clé de certificat
kubeadm join $ API_SERVER: 6443 --token $ TOKEN --discovery-token-ca-cert-hash $ CAHASH --control-plane --certificate-key $ CERT-KEY
Une alternative aux réponses données est d'utiliser kubeadm
pour gérer les certificats en téléchargeant les certificats en tant que secret sur kube-system
(il expirera dans 2 heures). Il n'est pas nécessaire de passer une clé de certificat lors de la phase d'initialisation
Vous pouvez donc le faire
kubeadm join LOAD_BALANCER_DNS:LOAD_BALANCER_PORT --token <token> \ --discovery-token-ca-cert-hash <hash> \ --control-plane \ --certificate-key <key from previous commmand>
Et plus tard
kubeadm init phase upload-certs --upload-certs