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) ?
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é :
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.
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)
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 ?)
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é.
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.
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.
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.
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.
Examinons quelques exemples et commandes pour mieux comprendre le fonctionnement kubeadm
.
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.
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.
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.
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.
Voici une liste des commandes kubeadm couramment utilisées, suivies d'un exemple pertinent.
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.
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.
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.
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.
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.
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.
kubeadm version
La commande ci-dessus imprime la version de 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.
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.
kubeadm token list
La commande ci-dessus répertorie les jetons actifs ainsi que leur heure de création et leur expiration associées.
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.
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.
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é.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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
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
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>
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.
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.
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
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
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>
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.
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.
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.
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.
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"