Geekflare est soutenu par son public. Nous pouvons percevoir des commissions d'affiliation sur les liens d'achat présents sur ce site.
En DevOps Dernière mise à jour : 25 septembre 2023
Partager sur :
Invicti Web Application Security Scanner - la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

Apprenez à installer Kubernetes sur Ubuntu

Kubernetes est un outil d’orchestration de conteneurs open-source développé par Google. Dans cet article, vous apprendrez à configurer Kubernetes avec un nœud maître et un nœud travailleur. Assurez-vous que Docker est installé sur le nœud maître et le nœud travailleur

Détails de l’environnement et configuration

Pour la démonstration, j’ai 2 systèmes Ubuntu, l’un sera le nœud maître et l’autre le nœud travailleur. La configuration des deux serveurs est la suivante

  • 2 CPUs
  • Maître – 4 GB RAM / Travailleur – 2 GB RAM
  • disque dur de 10 Go

Utilisez la commande hostnamectl pour définir le nom d’hôte sur les deux systèmes

Sur le nœud maître

geekflare@geekflare:~$ sudo hostnamectl set-hostname kubernetes-master

Sur le nœud de travail

geekflare@geekflare:~$ sudo hostnamectl set-hostname kubernetes-worker

Voici donc les détails des deux nœuds

Nœud maître

  • Nom d’hôte : kubernetes-master
  • Adresse IP : 192.168.0.107

Nœud de travail

  • Nom d’hôte : kubernetes-worker
  • Adresse IP : 192.168.0.108

Modifiez le fichier hosts sur les deux systèmes

geekflare@geekflare:~$ sudo gedit /etc/hosts

192.168.0.107 kubernetes-master
192.168.0.109 kubernetes-worker

Avant de commencer l’installation de Kubernetes, exécutez la commande ci-dessous sur les nœuds maître et travailleur pour vérifier que Docker est opérationnel

geekflare@geekflare:~$ sudo service docker status
<x><x>[sudo]</x></x> password for geekflare :
● docker.service - Docker Application Container Engine
Loaded : chargé (/lib/systemd/system/docker.service ; enabled ; vendor preset : enabled)
Active : active (running) since Sat 2019-11-23 15:39:36 EST ; 3 weeks 0 days ago
Docs : https://docs.docker.com
Main PID : 8840 (dockerd)
Tasks : 17
Mémoire : 42.3M
CGroup : /system.slice/docker.service
└─8840 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Nov 23 15:39:35 geekflare dockerd<x><x><x><x><x><x><x><x>[8840]</x></x></x></x></x></x></x></x>: time="2019-11-23T15:39:35.091941184-05:00" level=warning msg="Votre noyau ne supporte pas cgrou
Nov 23 15:39:35 geekflare dockerd<x><x><x><x><x><x><x><x>[8840]</x></x></x></x></x></x></x></x>: time="2019-11-23T15:39:35.093149218-05:00" level=info msg="Loading containers : start."
Nov 23 15:39:35 geekflare dockerd<x><x><x><x><x><x><x><x>[8840]</x></x></x></x></x></x></x></x>: time="2019-11-23T15:39:35.957842188-05:00" level=info msg="Default bridge (docker0) is assigned
Nov 23 15:39:36 geekflare dockerd<x><x><x><x><x><x><x><x>[8840]</x></x></x></x></x></x></x></x>: time="2019-11-23T15:39:36.078753190-05:00" level=info msg="Loading containers : done."
Nov 23 15:39:36 geekflare dockerd<x><x><x><x><x><x><x><x>[8840]</x></x></x></x></x></x></x></x>: time="2019-11-23T15:39:36.664727326-05:00" level=info msg="Docker daemon" commit=481bc77 graphdr
Nov 23 15:39:36 geekflare dockerd<x><x><x><x><x><x><x><x>[8840]</x></x></x></x></x></x></x></x>: time="2019-11-23T15:39:36.817929464-05:00" level=error msg="cluster exited with error : error whi
Nov 23 15:39:36 geekflare dockerd<x><x><x><x><x><x><x><x>[8840]</x></x></x></x></x></x></x></x>: time="2019-11-23T15:39:36.820439024-05:00" level=error msg="swarm component could not be started
Nov 23 15:39:36 geekflare dockerd<x><x><x><x><x><x><x><x>[8840]</x></x></x></x></x></x></x></x>: time="2019-11-23T15:39:36.820821712-05:00" level=info msg="Daemon has completed initialization"
Nov 23 15:39:36 geekflare systemd[1]: Started Docker Application Container Engine.
Nov 23 15:39:36 geekflare dockerd<x><x><x><x><x><x><x><x>[8840]</x></x></x></x></x></x></x></x>: time="2019-11-23T15:39:36.883382952-05:00" level=info msg="API listen on /home/geekflare/docker.sock
lines 1-20/20 (END)

Installez Kubernetes

Exécutez toutes les commandes mentionnées dans cette section sur les nœuds maître et travailleur

Tout d’abord, ajoutez la clé du dépôt de paquets Kubernetes

geekflare@kubernetes-master:~$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
<x><x>[sudo]</x></x> password for geekflare :
OK

Exécutez la commande ci-dessous pour configurer le dépôt de paquets Kubernetes

geekflare@kubernetes-master:~$ sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
Hit:1 https://download.docker.com/linux/ubuntu bionic InRelease
Hit:2 http://ppa.launchpad.net/ansible/ansible/ubuntu cosmic InRelease
Get:3 http://apt.puppetlabs.com bionic InRelease [85.3 kB]
Hit:5 http://security.ubuntu.com/ubuntu cosmic-security InRelease
Hit:6 http://us.archive.ubuntu.com/ubuntu cosmic InRelease
Ign:7 http://pkg.jenkins.io/debian-stable binary/ InRelease
Hit:8 http://us.archive.ubuntu.com/ubuntu cosmic-updates EnRelease
Hit:9 http://pkg.jenkins.io/debian-stable binary/ Release
Hit:10 http://us.archive.ubuntu.com/ubuntu cosmic-backports EnRelease
Get:4 https://packages.cloud.google.com/apt kubernetes-xenial InRelease [8,993 B]
Get:11 http://apt.puppetlabs.com bionic/puppet6 amd64 Packages [36.1 kB]
Get:13 https://packages.cloud.google.com/apt kubernetes-xenial/main amd64 Packages [32.2 kB]
Fetched 163 kB in 3s (49.1 kB/s)
Reading package lists... Terminé

Avant de continuer, désactivez le swap sur les deux noeuds

geekflare@kubernetes-master:~$ sudo swapoff -a

Installez Kubeadm

Vous devez maintenant installer kubeadm

kubeadm est un outil de Kubernetes qui est utilisé pour ajouter des nœuds dans le cluster Kubernetes

geekflare@kubernetes-master:~$ sudo apt-get install kubeadm -y
Lecture des listes de paquets... Fait
Construction de l'arbre de dépendance
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés :
conntrack cri-tools ebtables ethtool kubectl kubelet kubernetes-cni socat
Les NOUVEAUX paquets suivants seront installés :
conntrack cri-tools ebtables ethtool kubeadm kubectl kubelet kubernetes-cni socat
0 mis à jour, 9 nouvellement installés, 0 à supprimer et 235 non mis à jour.
Besoin de récupérer 51,8 Mo d'archives.
Après cette opération, 273 Mo d'espace disque supplémentaire seront utilisés.
Get:3 http://us.archive.ubuntu.com/ubuntu cosmic/main amd64 conntrack amd64 1:1.4.5-1 [30.2 kB]
Get:1 https://packages.cloud.google.com/apt kubernetes-xenial/main amd64 cri-tools amd64 1.13.0-00 [8,776 kB]
Get:6 http://us.archive.ubuntu.com/ubuntu cosmic/main amd64 ebtables amd64 2.0.10.4-3.5ubuntu5 [79.8 kB]
Get:8 http://us.archive.ubuntu.com/ubuntu cosmic/main amd64 ethtool amd64 1:4.16-1 [115 kB]
Get:9 http://us.archive.ubuntu.com/ubuntu cosmic/main amd64 socat amd64 1.7.3.2-2ubuntu2 [342 kB]
Get:2 https://packages.cloud.google.com/apt kubernetes-xenial/main amd64 kubernetes-cni amd64 0.7.5-00 [6,473 kB]
Get:4 https://packages.cloud.google.com/apt kubernetes-xenial/main amd64 kubelet amd64 1.17.0-00 [19.2 MB]
Get:5 https://packages.cloud.google.com/apt kubernetes-xenial/main amd64 kubectl amd64 1.17.0-00 [8,742 kB]
Get:7 https://packages.cloud.google.com/apt kubernetes-xenial/main amd64 kubeadm amd64 1.17.0-00 [8,059 kB]
Fetched 51.8 MB in 8s (6,419 kB/s)
Selecting previously unselected package conntrack.
(Reading database ... 318151 files and directories currently installed.)
Preparing to unpack .../0-conntrack_1:1.4.5-1_amd64.deb .....
Unpacking conntrack (1:1.4.5-1) ...
Selecting previously unselected package cri-tools.
Preparing to unpack .../1-cri-tools_1.13.0-00_amd64.deb ...
Unpacking cri-tools (1.13.0-00) ...
Selecting previously unselected package ebtables.
Préparation du déballage de .../2-ebtables_2.0.10.4-3.5ubuntu5_amd64.deb ...
Déballage de ebtables (2.0.10.4-3.5ubuntu5) ...
Sélection du paquet ethtool non sélectionné précédemment.
Préparation du déballage de .../3-ethtool_1:4.16-1_amd64.deb ...
Unpacking ethtool (1:4.16-1) ...
Selecting previously unselected package kubernetes-cni.
Preparing to unpack .../4-kubernetes-cni_0.7.5-00_amd64.deb ...
Unpacking kubernetes-cni (0.7.5-00) ...
Selecting previously unselected package socat.
Préparation du déballage de .../5-socat_1.7.3.2-2ubuntu2_amd64.deb ...
Déballage de socat (1.7.3.2-2ubuntu2) ...
Sélection du paquet kubelet non sélectionné précédemment.
Préparation du déballage de .../6-kubelet_1.17.0-00_amd64.deb ...
Déballage de kubelet (1.17.0-00) ...
Selecting previously unselected package kubectl.
Preparing to unpack .../7-kubectl_1.17.0-00_amd64.deb ...
Unpacking kubectl (1.17.0-00) ...
Selecting previously unselected package kubeadm.
Preparing to unpack .../8-kubeadm_1.17.0-00_amd64.deb ... Unpacking kubelet (1.17.0-00) ... Unpacking kubelet (1.17.0-00) ...../8-kubeadm_1.17.0-00_amd64.deb ...
Déballage de kubeadm (1.17.0-00) ...
Installation de conntrack (1:1.4.5-1) ...
Installation de kubernetes-cni (0.7.5-00) ...
Installation de cri-tools (1.13.0-00) ...
Installation de socat (1.7.3.2-2ubuntu2) .......
Traitement des déclencheurs pour systemd (239-7ubuntu10.12) ...
Mise en place de ebtables (2.0.10.4-3.5ubuntu5) ...
Création du lien symbolique /etc/systemd/system/multi-user.target.wants/ebtables.service → /lib/systemd/system/ebtables.service.
update-rc.d : warning : start and stop actions are no longer supported ; falling back to defaults
Installation de kubectl (1.17.0-00) ...
Processing triggers for man-db (2.8.4-2) ...
Installation de ethtool (1:4.16-1) ...
Installation de kubelet (1.

17.

0-00) ...
Création du lien symbolique /etc/systemd/system/multi-user.target.wants/kubelet.service → /lib/systemd/system/kubelet.service.
Mise en place de kubeadm (1.17.0-00) ...
Traitement des déclencheurs pour systemd (239-7ubuntu10.12) .

.
Vérifiez la version de kubeadm pour vous assurer qu’elle a été installée correctement

geekflare@kubernetes-master:~$ kubeadm version
kubeadm version : &version.Info{Major : "1", Minor : "17", GitVersion : "v1.17.0", GitCommit : "70132b0f130acc0bed193d9ba59dd186f0e634cf", GitTreeState : "clean", BuildDate : "2019-12-07T21:17:50Z", GoVersion : "go1.13.4", Compiler : "gc", Platform : "linux/amd64"}

Initialiser le cluster Kubernetes

Maintenant, exécutez la commande init pour initialiser le cluster Kubernetes uniquement sur le nœud maître. Utilisez --apiserver-adver-adtise-address pour indiquer au nœud travailleur l’adresse IP du maître

geekflare@kubernetes-master:~$ sudo kubeadm init --apiserver-adtise-address=192.168.0.107 --pod-network-cidr=10.244.0.0/16
W1217 11:05:15.474854 10193 validation.go:28] Cannot validate kube-proxy config - no validator is available
W1217 11:05:15.474935 10193 validation.go:28] Cannot validate kubelet config - no validator is available
[init] Using Kubernetes version : v1.17.0
<x><x><x><x><x><x><x>[preflight]</x></x></x></x></x></x></x> Running pre-flight checks
[WARNING IsDockerSystemdCheck] : detected "cgroupfs" as the Docker cgroup driver. Le pilote recommandé est "systemd". Veuillez suivre le guide à l'adresse https://kubernetes.io/docs/setup/cri/
<x><x><x><x><x><x><x>[preflight]</x></x></x></x></x></x></x> Pulling images required for setting up a Kubernetes cluster
<x><x><x><x><x><x><x>[preflight]</x></x></x></x></x></x></x> This may take a minute or two, depending on the speed of your internet connection
<x><x><x><x><x><x><x>[preflight]</x></x></x></x></x></x></x> You can also perform this action in advance using 'kubeadm config images pull'
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Écriture de la configuration du kubelet dans le fichier "/var/lib/kubelet/config.yaml"
[kubelet-start] Démarrage du kubelet
<x><x><x><x><x><x><x><x><x><x><x><x><x><x>[certs]</x></x></x></x></x></x></x></x></x></x></x></x></x></x> Utilisation du dossier certificateDir "/etc/kubernetes/pki"
<x><x><x><x><x><x><x><x><x><x><x><x><x><x>[certs]</x></x></x></x></x></x></x></x></x></x></x></x></x></x> Génération du certificat et de la clé "ca"
<x><x><x><x><x><x><x><x><x><x><x><x><x><x>[certs</x></x></x></x></x></x></x></x></x></x></x></x></x></x> ] Génération du certificat et de la clé "apiserver"
<x><x><x><x><x><x><x><x><x><x><x><x><x><x>[certs]</x></x></x></x></x></x></x></x></x></x></x></x></x></x> Le certificat de service apiserver est signé pour les noms DNS [kubernetes-master kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] et les IP [10.96.0.1 192.168.0.107]
<x><x><x><x><x><x><x><x><x><x><x><x><x><x>[certs]</x></x></x></x></x></x></x></x></x></x></x></x></x></x> Génération du certificat et de la clé "apiserver-kubelet-client"
<x><x><x><x><x><x><x><x><x><x><x><x><x><x>[certs]</x></x></x></x></x></x></x></x></x></x></x></x></x></x> Génération du certificat et de la clé "front-proxy-ca"
<x><x><x><x><x><x><x><x><x><x><x><x><x><x>[certs]</x></x></x></x></x></x></x></x></x></x></x></x></x></x> Génération du certificat et de la clé "front-proxy-client" et clé
<x><x><x><x><x><x><x><x><x><x><x><x><x><x>[certs]</x></x></x></x></x></x></x></x></x></x></x></x></x></x> Génération du certificat "etcd/ca" et clé
<x><x><x><x><x><x><x><x><x><x><x><x><x><x>[certs]</x></x></x></x></x></x></x></x></x></x></x></x></x></x> Génération du certificat "etcd/server" et clé
<x><x><x><x><x><x><x><x><x><x><x><x><x><x>[certs]</x></x></x></x></x></x></x></x></x></x></x></x></x></x> etcd/server serving cert est signé pour les noms DNS [kubernetes-master localhost] et les IP [192.168.0.107 127.0.0.1 ::1]
<x><x><x><x><x><x><x><x><x><x><x><x><x><x>[certs]</x></x></x></x></x></x></x></x></x></x></x></x></x></x> Génération du certificat et de la clé "etcd/peer"
<x><x><x><x><x><x><x><x><x><x><x><x><x><x>[certs]</x></x></x></x></x></x></x></x></x></x></x></x></x></x> Le certificat de service etcd/peer est signé pour les noms DNS [kubernetes-master localhost] et les IP [192.168.0.107 127.0.0.1 ::1]
<x><x><x><x><x><x><x><x><x><x><x><x><x><x>[certs]</x></x></x></x></x></x></x></x></x></x></x></x></x></x> Génération du certificat et de la clé "etcd/healthcheck-client"
<x><x><x><x><x><x><x><x><x><x><x><x><x><x>[certs]</x></x></x></x></x></x></x></x></x></x></x></x></x></x> Génération du certificat et de la clé "apiserver-etcd-client"
<x><x><x><x><x><x><x><x><x><x><x><x><x><x>[certs]</x></x></x></x></x></x></x></x></x></x></x></x></x></x> Génération de la clé "sa" et de la clé publique
<x><x><x><x>[kubeconfig]</x></x></x></x> Utilisation du dossier kubeconfig "/etc/kubernetes"
<x><x><x><x>[kubeconfig]</x></x></x></x> Écriture du fichier kubeconfig "admin.conf" fichier kubeconfig
<x><x><x><x>[kubeconfig]</x></x></x></x> Écriture du fichier kubeconfig "kubelet.conf"
<x><x><x><x>[kubeconfig]</x></x></x></x> Écriture du fichier kubeconfig "controller-manager.conf"
<x><x><x><x>[kubeconfig]</x></x></x></x> Écriture du fichier kubeconfig "scheduler.conf"
[control-plane] Utilisation du dossier manifest "/etc/kubernetes/manifests"
[control-plane] Création d'un manifeste Pod statique pour "kube-apiserver"
[control-plane] Création d'un manifeste Pod statique pour "kube-controller-manager"
W1217 11:05:25.584769 10193 manifests.go:214] le mode d'autorisation par défaut de kube-apiserver est "Node,RBAC" ; utilisation de "Node,RBAC"
[control-plane] Création d'un manifeste Pod statique pour "kube-scheduler"
W1217 11:05:25.587128 10193 manifests.go:214] le mode d'autorisation par défaut de kube-apiserver est "Node,RBAC" ; utilisation de "Node,RBAC"
[etcd] Création d'un manifeste Pod statique pour etcd local dans "/etc/kubernetes/manifests"
[wait-control-plane] Attendre que le kubelet démarre le plan de contrôle en tant que Pods statiques à partir du répertoire "/etc/kubernetes/manifests". Cela peut prendre jusqu'à 4m0s
[apiclient] Tous les composants du plan de contrôle sont sains après 35.010368 secondes
[upload-config] Stockage de la configuration utilisée dans le ConfigMap "kubeadm-config" dans l'espace de noms "kube-system"
[kubelet] Création d'un ConfigMap "kubelet-config-1.17" dans l'espace de noms "kube-system" avec la configuration pour les kubelets dans le cluster
[upload-certs] Sauter la phase. Veuillez consulter --upload-certs
[mark-control-plane] Marquer le nœud kubernetes-master comme control-plane en ajoutant l'étiquette "node-role.kubernetes.io/master=''"
[mark-control-plane] Marquer le nœud kubernetes-master comme control-plane en ajoutant les taints [node-role.kubernetes.io/master:NoSchedule]
[bootstrap-token] Utiliser le token : dmamk9.0nmo62mhom8961qw
[bootstrap-token] Configuration des jetons d'amorçage, cluster-info ConfigMap, Rôles RBAC
[bootstrap-token] configuration des règles RBAC pour permettre aux jetons Node Bootstrap de poster des CSR afin que les nœuds obtiennent des certificats à long terme
[bootstrap-token] configuration des règles RBAC pour permettre au contrôleur csrapprover d'approuver automatiquement les CSR d'un jeton Node Bootstrap
[bootstrap-token] configuration des règles RBAC pour permettre la rotation des certificats pour tous les certificats clients des nœuds dans le cluster
[bootstrap-token] Création du ConfigMap "cluster-info" dans l'espace de noms "kube-public"
[kubelet-finalize] Mise à jour de "/etc/kubernetes/kubelet.conf" pour pointer vers un certificat client kubelet rotatif et une clé
<x>[addons]</x> Application d'un addon essentiel : CoreDNS
<x>[addons]</x> Applied essential addon : kube-proxy

Votre plan de contrôle Kubernetes a été initialisé avec succès !

Pour commencer à utiliser votre cluster, vous devez exécuter ce qui suit en tant qu’utilisateur normal

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

Ensuite, vous devez déployer un réseau de pods sur le cluster

Exécutez kubectl apply -f [podnetwork].yaml avec l’une des options listées sur https://kubernetes.io/docs/concepts/cluster-administration/addons/

Ensuite, vous pouvez joindre n’importe quel nombre de nœuds de travail en exécutant ce qui suit sur chacun d’entre eux en tant que root

kubeadm join 192.168.0.107:6443 --token dmamk9.0nmo62mhom8961qw --discovery-token-ca-cert-hash sha256:2de92f42e84d20d8b19b1778785df5f8196e5eedaa5664ad911e8c23f58963

Comme indiqué dans la sortie ci-dessus, créez un répertoire .kube et copiez le fichier admin.conf dans le fichier de configuration du répertoire .kube

geekflare@kubernetes-master:~$ mkdir -p $HOME/.kube
geekflare@kubernetes-master:~$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
geekflare@kubernetes-master:~$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

À ce moment, lorsque vous exécutez la commande kubectl get nodes, vous verrez que le statut du nœud maître est NotReady

geekflare@kubernetes-master:~$ sudo kubectl get nodes

NOM

STATUS ROLES AGE VERSION

kubernetes-master

NotReady master 2m34s v1.17.0

Déployer un réseau de pods – Flannel

Ensuite, vous devez déployer un réseau de pods sur le nœud maître. J’utilise le réseau de pods Flannel. Il est utilisé pour communiquer entre les nœuds du cluster Kubernetes

geekflare@kubernetes-master:~$ sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
podsecuritypolicy.policy/psp.flannel.unprivileged créé
clusterrole.rbac.authorization.k8s.io/flannel créé
clusterrolebinding.rbac.authorization.k8s.io/flannel créé
serviceaccount/flannel créé
configmap/kube-flannel-cfg créé
daemonset.apps/kube-flannel-ds-amd64 créé
daemonset.apps/kube-flannel-ds-arm64 créé
daemonset.apps/kube-flannel-ds-arm créé
daemonset.apps/kube-flannel-ds-ppc64le créé
daemonset.apps/kube-flannel-ds-s390x créé

Vérifiez l’état du nœud maître, il doit être dans l’état Ready

geekflare@kubernetes-master:~$ sudo kubectl get nodes

NOM

STATUS ROLES AGE VERSION

kubernetes-master

Ready master 4m41s v1.17.0

Après quelques secondes, vérifiez si tous les pods sont opérationnels

geekflare@kubernetes-master :~$ kubectl get pods --all-namespaces
NAMESPACE NOM READY STATUS RESTARTS AGE
kube-system coredns-6955765f44-rzw9d 1/1 Running 0 4m17s
kube-system coredns-6955765f44-xvgdp 1/1 Running 0 4m17s
kube-system etcd-kubernetes-master 1/1 Running 0 4m27s
kube-system kube-apiserver-kubernetes-master 1/1 Exécution 0 4m27s

kube-system

kube-controller-manager-kubernetes-master 1/1 Exécution 0 4m27s

kube-system

kube-flannel-ds-amd64-c2rf5 1/1 Exécution 0 81s

kube-system

kube-proxy-mvdd7 1/1 Exécution 0 4m17s

kube-system

kube-scheduler-kubernetes-master 1/1 Exécution 0 4m27s

Ajouter un nœud de travail au cluster

Maintenant que votre nœud maître est correctement configuré et fonctionne, il est temps d’ajouter le nœud de travail. Ici, vous devez exécuter la commande join sur le nœud ouvrier, que vous avez obtenu après avoir initialisé kubeadm

Exécutez la commande ci-dessous sur le nœud de travailleur pour rejoindre le nœud maître

geekflare@kubernetes-worker:~$ sudo kubeadm join 192.168.0.107:6443 --token dmamk9.0nmo62mhom8961qw --discovery-token-ca-cert-hash sha256:2de92f42e84d20d8b19b1778785df5f8196e5eedaa5664ad911e8c23f58963
<x><x>[sudo]</x></x> mot de passe pour geekflare :
W1217 11:08:01.066191 28968 join.go:346] <x><x><x><x><x><x><x>[preflight]</x></x></x></x></x></x></x> WARNING : JoinControlPane.controlPlane settings will be ignored when control-plane flag is not set.
<x><x><x><x><x><x><x>[preflight]</x></x></x></x></x></x></x> Running pre-flight checks
[WARNING IsDockerSystemdCheck] : detected "cgroupfs" as the Docker cgroup driver. Le pilote recommandé est "systemd". Veuillez suivre le guide à l'adresse https://kubernetes.io/docs/setup/cri/
<x><x><x><x><x><x><x>[preflight]</x></x></x></x></x></x></x> Reading configuration from the cluster...
<x><x><x><x><x><x><x>[preflight]</x></x></x></x></x></x></x> FYI : Vous pouvez consulter ce fichier de configuration avec 'kubectl -n kube-system get cm kubeadm-config -oyaml'
[kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.17" ConfigMap dans l'espace de noms kube-system
[kubelet-start] Écriture de la configuration du kubelet dans le fichier "/var/lib/kubelet/config.yaml"
[kubelet-start] Écriture du fichier d'environnement du kubelet avec les drapeaux dans le fichier "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Démarrage du kubelet
[kubelet-start] Attente de l'exécution du bootstrap TLS par le kubelet...

Ce nœud a rejoint le cluster :

*

Une demande de signature de certificat a été envoyée à apiserver et une réponse a été reçue.

*

Le Kubelet a été informé des nouveaux détails de la connexion sécurisée.

Exécutez 'kubectl get nodes' sur le plan de contrôle pour voir ce nœud rejoindre le cluster

Sur le nœud maître

Vous verrez que quelques pods supplémentaires sont en cours d’exécution après que le nœud de travail a rejoint le cluster

geekflare@kubernetes-master :~$ kubectl get pods --all-namespaces
NAMESPACE NOM READY STATUS RESTARTS AGE
kube-system coredns-6955765f44-9c7jc 1/1 Running 0 5m3s
kube-system coredns-6955765f44-c9s9r 1/1 Running 0 5m3s
kube-system etcd-kubernetes-master 1/1 Running 0 5m12s
kube-system kube-apiserver-kubernetes-master 1/1 Running 0 5m12s
kube-system kube-controller-manager-kubernetes-master 1/1 Running 0 5m13s
kube-system kube-flannel-ds-amd64-lgr62 1/1 Running 0 3m35s
kube-system kube-flannel-ds-amd64-n6vwm 1/1 Running 0 27s
kube-system kube-proxy-9mqp6 1/1 Running 0 27s

kube-system

kube-proxy-kwkz2 1/1 Running 0 5m3s

kube-system

kube-scheduler-kubernetes-master 1/1 Running 0 5m13s

Maintenant, exécutez à nouveau la commande kubectl sur le nœud maître pour vérifier si le nœud travailleur a rejoint le cluster et s’il fonctionne dans l’état Ready

geekflare@kubernetes-master:~$ kubectl get nodes

NAME

STATUS ROLES AGE VERSION

kubernetes-master

Ready master 5m27s v1.17.0

kubernetes-worker

Ready <none> 31s v1.17.0

Conclusion

Maintenant que la configuration de Kubernetes est prête, vous pouvez commencer à orchestrer des conteneurs sur le cluster Kubernetes. Si Kubernetes vous intéresse, vous pouvez suivre ce cours Udemy.

  • Avi
    Auteur
    Avi est un passionné de technologie avec une expertise dans les technologies en vogue telles que DevOps, Cloud Computing, Big Data et bien d'autres. Il est passionné par l'apprentissage des technologies de pointe et le partage de ses connaissances avec d'autres... en savoir plus
Merci à nos sponsors
Plus de lectures sur DevOps
Alimentez votre entreprise
Quelques outils et services pour aider votre entreprise à se développer.
  • Invicti utilise le Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, search engine crawler, et tout ce dont vous avez besoin pour collecter des données web.
    Essayez Brightdata
  • Monday.com est un système d'exploitation tout-en-un qui vous aide à gérer vos projets, vos tâches, votre travail, vos ventes, votre CRM, vos opérations, vos flux de travail et bien plus encore.
    Essayez le lundi
  • Intruder est un scanner de vulnérabilité en ligne qui détecte les faiblesses de votre infrastructure en matière de cybersécurité, afin d'éviter des violations de données coûteuses.
    Essayer l'intrus