paint-brush
Configurer et gérer un cluster Kubernetes avec Kubeadmpar@humalect
2,119 lectures
2,119 lectures

Configurer et gérer un cluster Kubernetes avec Kubeadm

par Humalect Inc11m2023/08/09
Read on Terminal Reader

Trop long; Pour lire

Ce didacticiel Kubeadm couvre les éléments essentiels de la création et de la gestion de clusters Kubernetes à l'aide des commandes Kubeadm. Il explique Kubernetes auto-hébergé, les avantages et les inconvénients, puis se penche sur l'objectif de Kubeadm. Il fournit des exemples et détaille les 20 principales commandes Kubeadm courantes, notamment l'initialisation du plan de contrôle, la jonction des nœuds de travail, la réinitialisation des clusters, la mise à niveau des versions et la gestion des composants. Le didacticiel décrit également la création d'un cluster Kubernetes avec Kubeadm, la gestion des composants du cluster et met l'accent sur les meilleures pratiques telles que l'utilisation de Kubeadm pour la mise à l'échelle automatique des clusters de production, la sauvegarde régulière d'etcd et la surveillance efficace des nœuds.
featured image - Configurer et gérer un cluster Kubernetes avec Kubeadm
Humalect Inc HackerNoon profile picture
0-item
1-item

Dans ce didacticiel Kubeadm, nous explorerons tout ce que vous devez savoir sur les commandes Kubeadm et comment les utiliser pour créer des clusters et gérer les composants de cluster dans Kubernetes (K8s).

Vous apprendrez non seulement à créer votre propre cluster Kubernetes à l'aide de Kubeadm, mais vous maîtriserez également l'art de la gestion des composants de cluster et découvrirez les meilleures pratiques de Kubeadm.


Rejoignez-nous dans ce voyage passionnant dans le monde de Kubeadm, où vous débloquerez le pouvoir d' orchestrer facilement des conteneurs .


Plongeons-nous et devenons ensemble des experts Kubeadm ! Avant de plonger dans kubeadm , qu'est-ce exactement que Kubernetes auto-hébergé (K8s) ?


Aperçu du contenu

  • Qu'est-ce que Kubernetes auto-hébergé ? - Avantages et inconvénients
  • Qu'est-ce que Kubeadm ?
  • Exemples Kubeadm
  • Top 20 des commandes Kubeadm les plus courantes
  • Comment créer un cluster Kubernetes à l'aide de Kubeadm
  • Comment gérer les composants du cluster avec Kubeadm
  • Bonnes pratiques Kubeadm


Qu'est-ce que Kubernetes auto-hébergé ? - Avantages et inconvénients

Kubernetes auto-hébergé, également connu sous le nom de déploiement Kubernetes "bare metal" ou "sur site", fait référence à l'exécution de Kubernetes directement sur des machines physiques ou virtuelles sans s'appuyer sur un service Kubernetes géré fourni par un fournisseur de cloud (tel que EKS par AWS ).


Voici quelques avantages et inconvénients de Kubernetes auto-hébergé :


Avantages de Kubernetes auto-hébergé

1. Contrôle total et personnalisation

Avec Kubernetes auto-hébergé, vous avez un contrôle total sur la configuration, la mise en réseau et l'infrastructure du cluster. Cela vous permet de personnaliser et d'optimiser le cluster en fonction de vos besoins spécifiques et des capacités de votre infrastructure.

2. Rentabilité

L'auto-hébergement de Kubernetes peut être plus rentable, en particulier pour les déploiements à long terme, par rapport à l'utilisation de services Kubernetes gérés qui entraînent souvent des frais supplémentaires. L'auto-hébergement vous permet de tirer parti des ressources matérielles existantes et d'éviter les frais généraux des services gérés. (et économiser une tonne d'argent)

3. Sécurité et conformité

L'auto-hébergement de Kubernetes vous donne un contrôle direct sur les mesures de sécurité, telles que les politiques de réseau, le chiffrement, les contrôles d'accès et les exigences de conformité. Cela vous permet de mettre en œuvre les meilleures pratiques de sécurité Kubernetes spécifiques aux besoins et aux normes réglementaires de votre organisation. (log4j, sonner des cloches ?)

4. Allocation des ressources

Kubernetes auto-hébergé vous permet d'allouer des ressources exclusivement à votre cluster sans les partager avec d'autres locataires. Cela permet une meilleure utilisation des ressources et évite les problèmes de performances potentiels qui peuvent survenir en cas de conflit de ressources dans un environnement partagé.


Inconvénients de Kubernetes auto-hébergé

1. Gestion des infrastructures

L'auto-hébergement de Kubernetes nécessite une expertise dans la gestion et la maintenance de l'infrastructure sous-jacente.


Vous êtes responsable du provisionnement, de la configuration et de la surveillance des serveurs, de la mise en réseau, du stockage et des autres composants du cluster. Cela peut prendre du temps et nécessiter des ressources dédiées et des embauches supplémentaires.

2. Évolutivité et élasticité

La mise à l'échelle des clusters Kubernetes auto-hébergés peut être plus complexe que les services gérés qui offrent des capacités de mise à l'échelle automatisées.


Vous devez planifier et provisionner les ressources à l'avance pour gérer les pics de charge, et l'ajout ou la suppression de nœuds peut nécessiter une intervention manuelle.

3. Complexité opérationnelle

Kubernetes auto-hébergé introduit des complexités opérationnelles supplémentaires, telles que la gestion des mises à niveau, des correctifs, des sauvegardes et de la haute disponibilité. Ces tâches nécessitent une planification, des tests et une coordination minutieux pour garantir une perturbation minimale du cluster et des applications, sinon une augmentation des temps d'arrêt de la production.


Qu'est-ce que Kubeadm ?

Kubeadm est un outil de ligne de commande qui simplifie le processus de configuration et de gestion d'un cluster Kubernetes, permettant aux membres de la communauté technique de se plonger plus facilement dans le monde de l'orchestration de conteneurs.


Considérez kubeadm comme votre fidèle assistant qui s'occupe des moindres détails de la configuration du cluster , vous permettant de vous concentrer sur une vue d'ensemble.


Il automatise des tâches complexes telles que la configuration des composants essentiels, la génération de certificats et la garantie que votre cluster suit les meilleures pratiques.


Exemples Kubeadm

Examinons quelques exemples et commandes pour mieux comprendre le fonctionnement kubeadm .

1. Initialisation du plan de contrôle

Exemple de commande #1 : ` kubeadm init `

Voici comment utiliser la commande ci-dessus.

kubeadm init --pod-network-cidr=192.168.0.0/16


Cette commande initialise le plan de contrôle sur le nœud maître. Il génère les certificats nécessaires, configure le serveur API, etcd et d'autres composants vitaux.


L'indicateur ` --pod-network-cidr ` spécifie la plage d'adresses IP pour le réseau de pods dans le cluster.

2. Rejoindre les nœuds de travail

Exemple de commande #2 : ` kubeadm join `


kubeadm join <master-node-ip>:<master-node-port> --token <token> --discovery-token-ca-cert-hash <hash>


Cette commande joint un noeud worker au cluster. Vous devez fournir l'adresse IP et le port du nœud maître, ainsi qu'un hachage de certificat CA de jeton et de jeton de découverte, qui peuvent être obtenus lors de l'initialisation du plan de contrôle.

3. Réinitialiser un cluster

Commande : ` kubeadm reset `


kubeadm reset --force


Cette commande réinitialise un cluster, en supprimant tous les composants installés et en ramenant le nœud à son état antérieur à Kubernetes. Le drapeau ` --force ` assure une réinitialisation complète.

4. Mise à niveau de la version de Kubernetes

Commande : ` kubeadm upgrade `


Voici comment utiliser la commande kubeadm ci-dessus.

kubeadm upgrade plan


Cette commande vous aide à mettre à niveau votre version de Kubernetes. Il vérifie les mises à niveau disponibles et fournit un plan de mise à niveau des composants du plan de contrôle.


Top 20 des commandes Kubeadm les plus courantes

Voici une liste des commandes kubeadm couramment utilisées, suivies d'un exemple pertinent.

1. kubeadm init

kubeadm init --pod-network-cidr=192.168.0.0/16


Dans l'exemple ci-dessus, la commande initialise le plan de contrôle sur le nœud maître, génère des certificats et configure les composants essentiels. L'indicateur ` --pod-network-cidr ` spécifie la plage d'adresses IP du réseau de pod.

2. jointure kubeadm

kubeadm join <master-node-ip>:<master-node-port> --token <token> --discovery-token-ca-cert-hash <hash>


La commande ci-dessus joint un nœud de travail au cluster en se connectant au nœud maître spécifié à l'aide d'un hachage de certificat d'autorité de certification de jeton et de jeton de découverte.

3. réinitialisation de kubeadm

kubeadm reset --force


La commande ci-dessus réinitialise un nœud, en supprimant tous les composants Kubernetes installés et en le ramenant à son état antérieur à Kubernetes. Le drapeau ` --force ` assure une réinitialisation complète.

4. mise à niveau de kubeadm

kubeadm upgrade plan


La commande ci-dessus fournit un plan de mise à niveau, vérifiant les mises à niveau disponibles pour les composants du plan de contrôle.

5. jeton kubeadm

kubeadm token create


Cette commande kubeadm gère les jetons d'authentification utilisés pour joindre les nœuds au cluster. Cet exemple génère un nouveau jeton.

6. configuration de kubeadm

kubeadm config print init-defaults


La commande ci-dessus gère les fichiers de configuration de kubeadm. Cet exemple imprime la configuration par défaut pour l'initialisation du cluster.

7. version kubeadm

kubeadm version


La commande ci-dessus imprime la version de kubeadm.

8. images de configuration kubeadm

kubeadm config images list


Utilisez la commande ci-dessus pour imprimer une liste des images requises pour la version actuelle de Kubernetes.

Cette commande vous aide à déterminer les images de conteneur requises pour la gestion manuelle des images de conteneur. Remplacez ` list ` par ` pull ` pour extraire les images de configuration.

9. création du jeton kubeadm

kubeadm token create --print-join-command


La commande ci-dessus génère un nouveau jeton qui peut être utilisé pour joindre des nœuds au cluster. Le drapeau ` --print-join-command ` affiche la commande de jointure à exécuter sur les noeuds worker.

10. liste de jetons kubeadm

kubeadm token list


La commande ci-dessus répertorie les jetons actifs ainsi que leur heure de création et leur expiration associées.

11. suppression du jeton kubeadm

kubeadm token delete <token_value>


Utilisez la commande ci-dessus pour supprimer un jeton spécifique, le rendant inutilisable pour les jointures de nœuds.

12. migration de la configuration de kubeadm

kubeadm config migrate --old-config kubeadm.conf --new-config kubeadm.yaml


La commande ci-dessus migre un fichier de configuration d'une ancienne version vers une nouvelle version, permettant des mises à niveau fluides de la configuration.

13. certificats kubeadm


kubeadm certs check-expirationkubeadm certs certificate-key


Les commandes ci-dessus vérifient l'état d'expiration des certificats utilisés par les composants du plan de contrôle et fournissent des avertissements pour les certificats proches de l'expiration. La deuxième commande génère la clé.

14. phase d'initialisation de kubeadm

kubeadm init phase kubelet-start --config config.yaml


À partir d'un fichier InitConfiguration, la commande ci-dessus crée un fichier d'environnement dynamique avec des drapeaux kubelet.

15. phase de jointure de kubeadm

kubeadm join phase control-plane-prepare


La commande ci-dessus exécute une phase spécifique lors de la jonction d'un nœud de travail au plan de contrôle. Cet exemple exécute la phase ` control-plane-prepare `, qui prépare le nœud de travail à devenir un nœud de plan de contrôle.

16. kubeadm kubeconfig

kubeadm kubeconfig user --client-name=foo --config=bar

Utilisez la commande ci-dessus pour générer un fichier kubeconfig pour un utilisateur supplémentaire nommé foo à l'aide d'une barre de fichiers de configuration kubeadm.

17. phase de réinitialisation de kubeadm

kubeadm reset phase preflight


La commande ci-dessus exécute une phase spécifique pendant le processus de réinitialisation d'un nœud. Cet exemple exécute la phase ` preflight `, qui effectue des vérifications de pré-réinitialisation avant de supprimer les composants Kubernetes.

18. plan de mise à niveau de kubeadm

kubeadm upgrade plan


La commande ci-dessus affiche un plan de mise à niveau pour les composants du plan de contrôle, indiquant les versions disponibles et toutes les actions requises pour la mise à niveau.

19. La mise à niveau de kubeadm s'applique

kubeadm upgrade apply v1.22.2


Utilisez la commande ci-dessus pour appliquer une version spécifique de Kubernetes au plan de contrôle, en mettant à niveau ses composants vers la version spécifiée.

20. nœud de mise à niveau kubeadm

kubeadm upgrade node


Cette commande met à niveau le kubelet et kube-proxy sur un nœud de travail pour correspondre à la version du plan de contrôle.


Comment créer un cluster Kubernetes à l'aide de Kubeadm

Pour créer un cluster Kubernetes à l'aide kubeadm , vous devez vous assurer que votre environnement répond aux prérequis nécessaires.

Voici un guide étape par étape sur la création d'un cluster Kubernetes à l'aide de kubeadm , y compris les prérequis, des instructions détaillées, des exemples et des commandes.

Conditions préalables

  1. Deux machines ou plus exécutant une distribution Linux prise en charge (par exemple, Ubuntu, CentOS ou Red Hat Enterprise Linux) avec Docker installé.

  2. 2 Gio ou plus de RAM par machine sont recommandés ; rien de moins laisse une place limitée à votre logiciel.

  3. Désactivez l'espace d'échange sur toutes les machines.

  4. Configurez un nom d'hôte, une adresse MAC et un product_uuid uniques pour chaque machine.

  5. Toutes les machines du cluster disposent d'une connectivité réseau complète. Vous pouvez vous connecter à un réseau public ou privé.

  6. Ouvrez les ports nécessaires (par exemple, 6443, 2379-2380, 10250, 10251, 10252) dans votre pare-feu.


Étape 1 : Installer les outils Docker et Kubernetes

Sur toutes les machines, installez Docker à l'aide du guide Docker de votre distribution Linux.

Installez ` kubeadm `, ` kubelet ` et ` kubectl ` à l'aide des commandes suivantes sur toutes les machines :


sudo apt-get update && sudo apt-get install -y apt-transport-https curlcurl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.listsudo apt-get updatesudo apt-get install -y kubelet kubeadm kubectlsudo apt-mark hold kubelet kubeadm kubectl


Étape 2 : Initialiser le plan de contrôle Kubernetes

Sur le nœud de plan de contrôle souhaité, initialisez le cluster à l'aide de la commande ` kubeadm init ` :

sudo kubeadm init --pod-network-cidr=192.168.0.0/16


Remarque : Ajustez l'indicateur ` --pod-network-cidr ` si vous prévoyez d'utiliser un autre réseau de pods.

Une fois l'initialisation terminée, la commande affichera une commande ` kubeadm join ` avec un jeton et un hachage. Assurez-vous de copier cette commande car elle sera utilisée pour joindre ultérieurement les nœuds de travail au cluster.


Étape 3 : Configurer la configuration du cluster pour kubectl

Sur le nœud du plan de contrôle, créez le répertoire nécessaire et copiez le fichier kubeconfig :


mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config


Étape 4 : Déployer un module complémentaire de réseau de pods

Sur le nœud du plan de contrôle, déployez un module complémentaire de réseau de pods. Par exemple, vous pouvez utiliser Calico :

kubectl apply -f https://docs.projectcalico.org/v3.21/manifests/calico.yaml


Étape 5 : Joindre des nœuds de travail dans le cluster

Sur chaque nœud de travail, exécutez la commande ` kubeadm join ` qui a été générée lors de l'initialisation du plan de contrôle (à partir de l'étape 2). Cette commande ressemble généralement à ceci :

sudo kubeadm join <control_plane_IP>:6443 --token <token> --discovery-token-ca-cert-hash <hash>


Étape 6 : Vérifier le cluster

Sur le nœud du plan de contrôle, vérifiez l'état du cluster à l'aide de ` kubectl ` :

kubectl get nodes


Toutes nos félicitations! Vous avez créé avec succès un cluster Kubernetes à l'aide de ` kubeadm `. Vous pouvez maintenant déployer et gérer vos applications sur le cluster.


Comment gérer les composants du cluster avec kubeadm

Pour gérer les composants du cluster avec kubeadm , vous pouvez utiliser diverses commandes pour effectuer des tâches telles que la mise à niveau du cluster, l'ajout ou la suppression de nœuds et la gestion du plan de contrôle.

Voici un guide étape par étape sur la façon de gérer les composants du cluster avec kubeadm , y compris des commandes détaillées avec des commentaires de code.


Étape 1 : Mise à niveau du cluster

Vérifiez la version actuelle de Kubernetes sur le nœud du plan de contrôle :

kubectl version --short


Mettez à niveau ` kubeadm `, ` kubelet ` et ` kubectl ` sur tous les nœuds pour qu'ils correspondent à la version souhaitée de Kubernetes :

# Upgrade kubeadmsudo apt-get updatesudo apt-get install -y kubeadm=<desired_version># Upgrade kubelet and kubectlsudo apt-get updatesudo apt-get install -y kubelet=<desired_version> kubectl=<desired_version># Hold the packages to prevent automatic upgradessudo apt-mark hold kubeadm kubelet kubectl


Sur le nœud du plan de contrôle, lancez le processus de mise à niveau :

sudo kubeadm upgrade plansudo kubeadm upgrade apply <desired_version>

Upgrade the kubelet configuration on all nodes:

sudo kubeadm upgrade node


Vérifiez l'état de la mise à niveau :

kubectl get nodeskubectl version --short


Étape 2 : Ajouter des nœuds de travail

Sur le nœud du plan de contrôle, générez une nouvelle commande kubeadm join :

sudo kubeadm token create --print-join-command


Sur le ou les noeuds worker, exécutez la commande kubeadm join pour les joindre au cluster :

sudo kubeadm join <control_plane_IP>:6443 --token <token> --discovery-token-ca-cert-hash <hash>


Vérifiez l'état des nouveaux nœuds de calcul :

kubectl get nodes


Étape 3 : Suppression de nœuds

Videz le nœud que vous souhaitez supprimer :

kubectl drain <node_name> --ignore-daemonsets


Sur le nœud du plan de contrôle, supprimez le nœud :

sudo kubeadm reset


Sur le nœud du plan de contrôle, supprimez le nœud du cluster :

kubectl delete node <node_name>


Étape 4 : Gestion des composants du plan de contrôle

Mettez à niveau les composants du plan de contrôle sur le nœud du plan de contrôle :

sudo apt-get update sudo apt-get install -y kubeadm=<desired_version> kubelet=<desired_version> kubectl=<desired_version> sudo kubeadm upgrade plan sudo kubeadm upgrade apply <desired_version> sudo systemctl restart kubelet


Vérifiez l'état de la mise à niveau :

kubectl get nodes kubectl version --short

Drain the control plane node you want to remove:

kubectl drain <control_plane_node> --ignore-daemonsets


Sur le nœud du plan de contrôle, supprimez les composants du plan de contrôle à l'aide de la commande kubeadm suivante.

sudo kubeadm reset


Sur le nœud du plan de contrôle, supprimez le nœud du plan de contrôle du cluster :

kubectl delete node <control_plane_node>


Remarque : La gestion des composants du cluster avec kubeadm nécessite des précautions, car cela peut avoir un impact sur la stabilité et la disponibilité du cluster. Assurez-vous d'avoir un plan de sauvegarde et suivez la documentation officielle de Kubernetes pour obtenir des instructions détaillées spécifiques à votre configuration et à vos besoins.


Bonnes pratiques Kubeadm

Lorsqu'il est utilisé aux fins prévues, Kubeadm est un excellent outil. Voici trois bonnes pratiques à retenir afin d'utiliser le bon outil pour le travail et tirer le meilleur parti de kubeadm.


Utilisez kubeadm uniquement pour les clusters de production nécessitant une mise à l'échelle automatique

En général, kubeadm ne doit pas être utilisé pour les clusters de production car il manque de capacité de mise à l'échelle automatique des nœuds et des clusters. Cela est dû au fait que la mise à l'échelle automatique des nœuds nécessite de contrôler l'infrastructure et le matériel sous-jacents, que kubeadm a délégués à d'autres outils.


Sauvegarder etcd régulièrement

Kubeadm n'a pas de cluster multi-etcd par défaut pour stocker l'état du cluster. Faites des sauvegardes régulières d'etcd en cas de problème.


Gardez une trace des machines/nœuds

Kubeadm ne peut pas éteindre les machines qui ne sont pas utilisées.

Ainsi, afin d' optimiser les coûts dans le cluster Kubernetes à l'aide kubeadm , vous devrez utiliser une solution externe pour suivre les nœuds de travail et leur utilisation des ressources.




Également publié ici.


L'image principale de cet article a été générée parle générateur d'images AI de HackerNoon via l'invite "containers"