3
votes

Clé de certificat lors de l'ajout d'un nœud au plan de contrôle Kubernetes

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:

  1. copier les certificats et les clés dans /etc/kubernetes/pki/{ca.*,sa.*,front-proxy-sa.*,etcd/ca.*} du premier au nouveau nœud maître
  2. exécutez kubeadm token create --print-join-command sur le premier nœud maître
  3. exécuter la commande imprimée kubeadm join avec l'argument supplémentaire --experimental-control-plane sur le nouveau nœud maître

Est-ce la bonne procédure?


0 commentaires

3 Réponses :


3
votes

Selon la documentation , cette commande fournit une nouvelle clé de description:

kubeadm init phase upload-certs --experimental-upload-certs


0 commentaires

2
votes

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


0 commentaires

2
votes

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


0 commentaires