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