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
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 Gio ou plus de RAM par machine sont recommandés ; rien de moins laisse une place limitée à votre logiciel.
Désactivez l'espace d'échange sur toutes les machines.
Configurez un nom d'hôte, une adresse MAC et un product_uuid uniques pour chaque machine.
Toutes les machines du cluster disposent d'une connectivité réseau complète. Vous pouvez vous connecter à un réseau public ou privé.
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"