GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment installer Kubernetes (k8s) sur le serveur Ubuntu 20.04 LTS

Kubernetes (k8s) est un outil d'orchestration de conteneurs gratuit et open source. Il est utilisé pour déployer, mettre à l'échelle et gérer des applications basées sur des conteneurs. Dans cet article, nous allons montrer comment installer le cluster Kubernetes sur le serveur Ubuntu 20.04 LTS (Focal Fossa) à l'aide de kubeadm . Dans ma configuration de laboratoire, j'ai utilisé trois machines serveurs Ubuntu 20.04 LTS. Voici la configuration système requise pour chaque système Ubuntu.

  • Minimum de 2 Go de RAM
  • 2 cœurs (2 processeurs virtuels)
  • 15 Go d'espace libre sur /var
  • Utilisateur privilégié avec droits sudo
  • Connexion Internet stable

Voici les détails de la configuration de mon laboratoire :

  • Machine 1 (serveur Ubuntu 20.04 LTS) – K8s-master – 192.168.1.40
  • Machine 2 (serveur Ubuntu 20.04 LTS) – K8s-node-0 – 192.168.1.41
  • Machine 3 (serveur Ubuntu 20.04 LTS) – K8s-node-1 – 192.168.1.42

Passons maintenant aux étapes d'installation de Kubernetes

Étape 1) Définissez le nom d'hôte et ajoutez des entrées dans le fichier /etc/hosts

Utilisez la commande hostnamectl pour définir le nom d'hôte sur chaque nœud, l'exemple est illustré ci-dessous :

$ sudo hostnamectl set-hostname "k8s-master"     // Exécutez cette commande sur le nœud maître$ sudo hostnamectl set-hostname "k8s-node-0"     // Exécutez cette commande sur le nœud-0$ sudo hostnamectl set-hostname "k8s-node-1"     // Exécutez cette commande sur le nœud-1

Ajoutez les entrées suivantes dans les fichiers /etc/hosts sur chaque nœud,

192.168.1.40    k8s-master192.168.1.41    k8s-node-0192.168.1.42    k8s-node-1

Étape 2) Installez Docker (Container Runtime) sur les 3 nœuds

Connectez-vous à chaque nœud et exécutez les commandes suivantes pour installer docker,

$ sudo apt update$ sudo apt install -y docker.io

Maintenant, démarrez et activez le service Docker sur chaque nœud à l'aide de la commande systemctl,

$ sudo systemctl enable docker.service --now

Exécutez la commande suivante pour vérifier l'état du service docker et sa version,

$ systemctl status docker$ docker --version

Étape 3) Désactivez l'échange et activez le transfert IP sur tous les nœuds

Pour désactiver l'échange, modifiez le fichier /etc/fstab et commentez la ligne qui inclut l'entrée soit la partition d'échange soit le fichier d'échange.

$ sudo vi /etc/fstab

Enregistrez et quittez le fichier

Exécutez la commande swapoff pour désactiver le swap à la volée

$ sudo swapoff -a

Pour activer le transfert IP de manière permanente, modifiez le fichier "/etc/sysctl.conf" et recherchez la ligne "net.ipv4.ip_forward=1 ” et décommentez-le. Après avoir apporté les modifications au fichier, exécutez la commande suivante

$ sudo sysctl -pnet.ipv4.ip_forward =1$

Étape 4) Installez Kubectl, kubelet et kubeadm sur tous les nœuds

Exécutez les commandes suivantes sur les 3 nœuds pour installer les utilitaires kubectl , kubelet et kubeadm

$ sudo apt install -y apt-transport-https curl$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add$ sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"$ sudo apt update$ sudo apt install -y kubelet kubeadm kubectl

Remarque : Au moment de la rédaction de cet article, le référentiel Kubernetes Ubuntu 16.04 (Xenial Xerus) était disponible, mais à l'avenir, lorsque le référentiel kubernetes sera disponible pour Ubuntu 20.04, remplacez xenial par le mot central dans la commande 'apt-add-repository' ci-dessus.

Étape 4) Initialiser le cluster Kubernetes à l'aide de kubeadm (à partir du nœud maître)

Connectez-vous à votre nœud maître (k8s-master) et exécutez la commande "kubeadm init" ci-dessous pour initialiser le cluster Kubernetes,

$ sudo kubeadm init

Une fois le cluster initialisé avec succès, nous obtiendrons la sortie suivante

Pour commencer à utiliser le cluster en tant qu'utilisateur régulier, exécutons les commandes suivantes, les commandes sont déjà présentes dans la sortie, il suffit de les copier-coller.

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

Maintenant, joignez les nœuds de travail (k8s-node-0/1) au cluster, la commande pour rejoindre le cluster est déjà présente dans la sortie. Copiez la commande "kubeadm join" et collez-la sur les deux nœuds (nœuds de travail).

Connectez-vous au nœud-0 et exécutez la commande suivante,

[email protected] :~$ sudo kubeadm join 192.168.1.40:6443 --token b4sfnc.53ifyuncy017cnqq --discovery-token-ca-cert-hash sha256:5078c5b151bf776c7d2395cdae08080faa6f8preeaa 

Connectez-vous au nœud 1 et exécutez la commande suivante pour rejoindre le cluster,

[email protected] :~$ sudo kubeadm join 192.168.1.40:6443 --token b4sfnc.53ifyuncy017cnqq --discovery-token-ca-cert-hash sha256:5078c5b151bf776c7d2395cdae08080faa6f8preeaa 

À partir du nœud maître, exécutez la commande "kubectl get nodes" pour vérifier l'état des nœuds

[email protected] :~$ kubectl get nodesNAME         STATUT     ROLES    AGE     VERSIONk8s-master   NotReady   master   27m     v1.18.3k8s-node-0   NotReady      8m3s     v1.18.3k8s-master   v1.18.3k8s-node-9     non. 7 m v1 node-9      non. 18.3[e-mail protégé] :~$

Comme nous pouvons le voir, les nœuds de travail et le nœud maître ont rejoint le cluster, mais le statut de chaque nœud est "NotReady ”. Pour rendre le statut "Prêt "Nous devons déployer des modules complémentaires de réseau de pod basés sur l'interface réseau de conteneurs (CNI) tels que calico , routeur kube et filet tissé . Comme leur nom l'indique, les modules complémentaires de réseau de pods permettent aux pods de communiquer entre eux.

Étape 5) Déployer le module complémentaire réseau Calico Pod (nœud maître)

À partir du nœud maître, exécutez la commande suivante pour installer le module complémentaire de réseau de pod Calico,

[email protected] :~$ kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml

Une fois qu'il a été déployé avec succès, l'état des nœuds sera prêt, réexécutons la commande kubectl pour vérifier l'état des nœuds

[email protected] :~$ kubectl get nodesNAME         STATUT   ROLES    AGE   VERSIONk8s-master   Prêt    master   39 m   v1.18.3k8s-node-0   Prêt       19 m   v1.18.3 k8s-node-1         v1.18.3 k8s-node-1         18.3[e-mail protégé] :~$

Exécutez la commande ci-dessous pour vérifier l'état des pods de tous les espaces de noms

Parfait, ci-dessus confirme que tous les pods fonctionnent et sont en bon état. Essayons de déployer des pods, des services et des déploiements pour voir si notre cluster Kubernetes fonctionne correctement ou non.

Remarque : Pour activer la fonction d'achèvement bash sur votre nœud maître, exécutez ce qui suit

[email protected] :~$ echo 'source <(kubectl Completion bash)'>>~/.bashrc[email protected] :~$ source .bashrc

Étape 6) Tester et vérifier le cluster Kubernetes

Créons un déploiement nommé nginx-web avec l'image du conteneur nginx dans l'espace de noms par défaut, exécutez la commande kubectl suivante à partir du nœud maître,

[email protected] :~$ kubectl créer un déploiement nginx-web --image=nginxdeployment.apps/nginx-web créé[email protected] :~$

Exécutez la commande ci-dessous pour vérifier l'état du déploiement

[email protected] :~$ kubectl get deployments.appsNAME        READY   UP-TO-DATE   AVAILABLE   AEnginx-web   1/1     1            1           41s[email protected] :~$ kubectl get deployments.apps  -o wideNAME      -Date Conteneurs d'âge disponible Images Selectornginx-web 1/1 1 1 56s nginx nginx app =nginx-web [e-mail protégé]:~ $ [e-mail protégé]:~ $ kubectl get podsname Ready Status Restarts agenginx-web-7748f7f978-nk8b2 1 /1     Course   0          2m50s[email protected] :~$

Comme nous pouvons le voir, le déploiement a été créé avec succès avec le réplica par défaut.

Évoluons le déploiement, définissons les répliques sur 4. Exécutez la commande suivante,

[email protected] :~$ kubectl scale --replicas=4 déploiement nginx-webdeployment.apps/nginx-web scaled[email protected] :~$

Vérifiez maintenant l'état de votre déploiement à l'aide des commandes suivantes,

[email protected] :~$ kubectl get deployments.apps nginx-webNAME        PRÊT   À JOUR    DISPONIBLE   AGEnginx-web   4/4     4            4           13 m[email protected] :~$[email protected] :~$ kubectl describe déploiements.apps nginx-web

Ci-dessus confirme que le déploiement basé sur nginx a été mis à l'échelle avec succès.

Effectuons un autre test, créons un pod nommé "http-web" et exposons-le via un service nommé "http-service" avec le port 80 et NodePort comme type.

Exécutez la commande suivante pour créer un pod,

[email protected] :~$ kubectl run http-web --image=httpd --port=80pod/http-web created[email protected] :~$

Créez un service à l'aide de la commande ci-dessous et exposez le pod créé ci-dessus sur le port 80,

[email protected] :~$ kubectl expose pod http-web --name=http-service --port=80 --type=NodePortservice/http-service exposés[email protected] :~$[email protected] :~$ kubectl get service http-serviceNAME           TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGEhttp-service   NodePort   10.101.152.138           80:31098/TCP   10s[email 
 

Obtenez l'adresse IP ou le nom d'hôte du nœud sur lequel le pod http-web est déployé, puis accédez au serveur Web via NodePort (31098)

 [e-mail protégé]:~ $ kubectl get pods http-web -o widename statut redémarte Âge nœud nœud nœud préparation gateshttp-web 1/1 exécutant 0 59m 172.16.11.196 k8s-node-0  [email protected] :~$[email protected] :~$ curl http://k8s-node-0:31098

Ça marche !

[email protected] :~$

Parfait, il fonctionne bien comme prévu. Ceci conclut l'article et confirme que nous avons réussi à configurer le cluster Kubernetes sur le serveur Ubuntu 20.04 LTS.

Lire aussi  :Comment configurer le contrôleur d'entrée NGINX dans Kubernetes

Lire aussi  : Comment configurer le registre Docker privé dans Kubernetes (k8s)


Ubuntu
  1. Comment installer le serveur RabbitMQ sur Ubuntu 18.04 et 16.04 LTS

  2. Comment installer le serveur Gitlab sur Ubuntu 18.04 et 16.04 LTS

  3. Comment installer R sur Ubuntu 18.04 LTS

  4. Comment installer le serveur Xrdp sur Ubuntu 20.04 LTS

  5. Comment installer R sur Ubuntu 20.04 LTS

Comment installer Kubernetes sur Ubuntu 18.04 LTS

Comment installer Kubernetes sur Ubuntu 20.04 LTS

Comment installer le serveur FTP sur Ubuntu 20.04 LTS

Comment installer le serveur VPN Pritunl sur Ubuntu 20.04 LTS

Comment installer le serveur d'impression CUPS sur Ubuntu 20.04 LTS

Comment installer Kubernetes sur Ubuntu 18.04 LTS