GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment installer Kubernetes sur Ubuntu 20.04

Les conteneurs sont un bon choix pour regrouper et exécuter nos propres applications. Lorsque le nombre de conteneurs augmente rapidement et qu'il est nécessaire de les gérer de manière pratique. C'est la raison pour laquelle Kubernetes arrive. Kubernetes (K8s) est un système open source permettant d'automatiser le déploiement, la mise à l'échelle et la gestion des applications et des services conteneurisés.

Le cluster Kubernetes contient des nœuds maître et travailleur. Le nœud maître contrôle et gère un groupe de nœuds de travail. Vous pouvez avoir plusieurs nœuds maîtres pour les clusters à haute disponibilité.

Ce tutoriel montre comment installer un cluster Kubernetes avec kubeadm sur Ubuntu 20.04.

Préparation de l'environnement

  • Utiliser 2 hôtes Linux exécutant Ubuntu 20.04

Définition d'adresses IP statiques pour le nœud maître et le nœud travailleur

- Nœud maître :192.168.1.11
- Nœud de travail :192.168.1.12

  • Configurer le nom d'hôte pour chaque machine

Nous utiliserons le nœud 1 comme maître et le nœud 2 comme nœud de travail.

$ sudo hostnamectl set-hostname node-1
$ sudo hostnamectl set-hostname node-2
  • Désactiver la mémoire d'échange sur chaque nœud Ubuntu
$ sudo swapoff -a

Ajouter un référentiel Kubernetes

Kubernetes n'est pas disponible dans le référentiel par défaut d'Ubuntu, vous devez donc l'ajouter manuellement.

Sur le nœud maître et le nœud de travail effectuez les actions suivantes :

Ajoutez la clé de signature Kubernetes comme suit :

$ sudo -i
# curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

Ensuite, ajoutez le référentiel Kubernetes, exécutez :

$ echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" >> ~/kubernetes.list
$ sudo mv ~/kubernetes.list /etc/apt/sources.list.d
$ sudo apt update

Installation des outils Kubernetes

Dans cette section, nous allons installer Kubeadm, cri-o, Kubelet et Kubernetes-cni. Tous ces outils doivent être installés sur les nœuds maître et travailleur .

Assurez-vous d'installer la version recommandée et prise en charge. Ici, nous installons la version 1.18 de Kubernetes et crio.

Installer Kubeadm

Kubeadm est un outil faisant partie du projet Kubernetes qui aide à initialiser le cluster Kubernetes.

Dans ce tutoriel, nous allons installer kubeadm version 1.18.0-00, tapez :

$ sudo apt install -y kubeadm=1.18.0-00 --allow-unauthenticated

Remarque :vous pouvez trouver la version spécifique par la commande suivante :

$ curl -s https://packages.cloud.google.com/apt/dists/kubernetes-xenial/main/binary-amd64/Packages | grep Version | awk '{print $2}'

Installer Kubectl

Kubectl est l'outil de ligne de commande de Kubernetes. Il vous permet d'exécuter des commandes dans les clusters Kubernetes. Vous pouvez utiliser kubectl pour déployer des applications, gérer les ressources du cluster et afficher les journaux.

Installez kubectl v1.18.0-00 avec la commande suivante :

$ sudo apt install -y kubectl=1.18.0-00 --allow-unauthenticated

Installer CRI-O

CRI-O est une interface d'exécution de conteneur (CRI) conforme à l'OCI. Le runtime le plus couramment utilisé est Docker. À partir de la version 1.20 de Kubernetes, le shim d'interface d'exécution de conteneur (CRI) pour Docker est obsolète. Docker produit des images qui ne sont pas une image OCI (Open Container Initiative).

Nous devons utiliser un environnement d'exécution de conteneur conforme à OCI pour extraire et exécuter des images OCI, en particulier si vous utilisez des services Kubernetes tels que GKE, EKS ou AKS.

Vous pouvez toujours utiliser docker, puis installer en utilisant sudo apt-get install docker.io

Ici, je vais utiliser cri-o qui est un runtime conforme. Faites en sorte que la version de cri-o corresponde à la version de Kubernetes.

Assurez-vous d'installer la version prise en charge.

Tout d'abord, utilisez modprobe commande pour charger la superposition et br_netfilter modules sur les nœuds maître et travailleur :

$ sudo modprobe overlay
$ sudo modprobe br_netfilter

Ensuite, créez un fichier de configuration sysctl pour activer les paramètres de transfert IP et de netfilter lors des redémarrages en insérant les lignes suivantes dans /etc/sysctl.d/99-kubernetes-cri.conf fichier sur le nœud maître et nœud de travail :

net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1

Appliquez le fichier de configuration en exécutant :

$ sudo sysctl --system

Maintenant, nous spécifions le système d'exploitation Ubuntu et la version cri-o comme suit :

$ sudo -i
# export OS=xUbuntu_20.04
# export VERSION=1.18

Exécutez ensuite les commandes suivantes en tant que root utilisateur :

# echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
# echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.list

# curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$VERSION/$OS/Release.key | apt-key add -
# curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | apt-key add -

# apt update
# apt install cri-o cri-o-runc

Une fois l'installation terminée, le conmon L'utilitaire (Container Monitoring) a été installé. Trouvez le chemin de commun :

$ which conmon

/usr/bin/conmon

Modifiez le /etc/crio/crio.conf fichier comme suit :

...
# Path to the conmon binary, used for monitoring the OCI runtime.
conmon = "/usr/bin/conmon"         #<-- Edit this line. Around line 108

...

registries = [                     #<-- Edit and add registries. Around line 351
        "docker.io",
        "quay.io",
]
....

Activez le cri-o et assurez-vous qu'il est en cours d'exécution :

$ sudo systemctl daemon-reload
$ sudo systemctl enable crio
$ sudo systemctl start crio
$ sudo systemctl status crio

Sortie :

● crio.service - Container Runtime Interface for OCI (CRI-O)
   Loaded: loaded (/usr/lib/systemd/system/crio.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-12-10 15:46:37 UTC; 3 days ago
     Docs: https://github.com/cri-o/cri-o
...

Installer Kubelet

Kubelet est un agent s'exécutant sur chaque nœud et chargé de communiquer avec le serveur d'API sur le nœud maître et de piloter l'exécution du conteneur pour démarrer les charges de travail.

Configurer kubelet pour comprendre comment interagir avec cri-o en insérant la ligne suivante dans /etc/default/kubelet fichier :

KUBELET_EXTRA_ARGS=--feature-gates="AllAlpha=false,RunAsGroup=true" --container-runtime=remote --cgroup-driver=systemd --container-runtime-endpoint='unix:///var/run/crio/crio.sock' --runtime-request-timeout=5m

Sur les nœuds maître et travailleur, exécutez la commande suivante pour installer kubelet :

$ sudo apt install -y kubelet=1.18.0-00 --allow-unauthenticated

Installer Kubernetes-cni

Pour activer la mise en réseau de conteneurs dans le cluster, nous devons installer kubernetes-cni .

Exécutez la commande suivante :

$ sudo apt-get install -y kubernetes-cni --allow-unauthenticated

Déployer le cluster Kubernetes

Le déploiement du cluster Kubernetes implique 2 étapes. La 1ère étape serait d'initialiser le nœud maître et la 2ème étape consisterait à joindre le nœud travailleur au cluster.

Initialiser le nœud maître

Pour initialiser Kubernetes sur le nœud maître , saisissez :

$ sudo kubeadm init --apiserver-advertise-address=192.168.1.11 --pod-network-cidr=10.244.0.0/16

Il faudra quelques minutes pour terminer. Une fois l'initialisation effectuée, le terminal affichera la sortie comme suit :

Prenez note de la ligne pour rejoindre le cluster marqué ci-dessus, vous l'utiliserez à l'étape suivante pour joindre le nœud de travail au cluster.

Maintenant, exécutez la commande suivante pour créer le répertoire de configuration Kubernetes sur le nœud maître :

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

Ensuite, déployez un réseau de pods sur le cluster :

$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Vérification de l'installation réussie de tous les composants du plan de contrôle :

$ kubectl get pod --all-namespaces

Joindre le noeud worker au cluster

Connectez-vous maintenant au nœud de travail et joignez le nœud de travail au cluster.

Sur la machine du noeud worker, exécutez la commande suivante :

$ sudo kubeadm join 192.168.1.11:6443 --token 9ii02d.nsmrmu1asascv2yg \
    --discovery-token-ca-cert-hash sha256:1104bf70b03a2d030ffc0a462f9dbcbcdd9975393e9a9ac2a1f18500f1b6b74e

Une fois le processus de jointure terminé, revenez au nœud maître et exécutez :

$ kubectl get node
NAME     STATUS   ROLES    AGE     VERSION
node-1   Ready    master   2m37s   v1.18.0
node-2   Ready    none     22s     v1.18.0

Pour obtenir plus d'informations sur le nœud, tapez :

$ kubectl get node -owide
NAME     STATUS   ROLES    AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION   CONTAINER-RUNTIME
node-1   Ready    master   9h    v1.18.0   10.2.0.4              Ubuntu 20.04.1 LTS   5.4.0-1029-gcp   cri-o://1.18.4
node-2   Ready    none     9h    v1.18.0   10.2.0.5              Ubuntu 20.04.1 LTS   5.4.0-1029-gcp   cri-o://1.18.4

Les sorties affichent les détails du nœud maître et des nœuds qui ont rejoint le cluster.

Lisez aussi :Comment installer Kubernetes localement à l'aide de Vagrant/Minikube

Conclusion

Alors que la conteneurisation devient populaire, la nécessité de gérer les charges de travail et les services conteneurisés rend Kubernetes si populaire. La plupart des principaux fournisseurs de cloud ont commencé à prendre en charge Kubernetes géré, ce qui simplifie la vie.

Kubernetes est entièrement gratuit et peut être téléchargé à tout moment depuis son référentiel. J'espère que vous avez apprécié l'installation de Kubernetes sur Ubuntu. Vous pouvez essayer de déployer des applications comme MySQL ou WordPress sur le cluster K8.

Merci d'avoir lu et s'il vous plaît laissez votre suggestion dans la section des commentaires ci-dessous.


Ubuntu
  1. Comment installer Odoo sur Ubuntu

  2. Comment installer Maven sur Ubuntu

  3. Comment installer Wine sur Ubuntu

  4. Comment installer R sur Ubuntu 16.04

  5. Comment installer Go sur Ubuntu 18.04

Comment installer qt sur Ubuntu 20.04

Comment installer Kubernetes minikube sur Ubuntu 20.04

Comment installer Kubernetes sur Ubuntu 18.04 LTS

Comment installer Kubernetes sur Ubuntu 20.04 LTS

Comment installer Go dans Ubuntu 20.04

Comment installer Go sur Ubuntu 22.04