Kubernetes est une plate-forme open source pour la gestion d'applications conteneurisées. Il vous permet de gérer, mettre à l'échelle et déployer automatiquement vos applications conteneurisées dans l'environnement en cluster. Kubernetes est développé par Google.
Avec Kubernetes, vous pouvez orchestrer des conteneurs sur plusieurs hôtes, mettre à l'échelle les applications conteneurisées avec toutes les ressources à la volée et disposer d'un environnement de gestion de conteneurs centralisé.
Dans ce tutoriel, je vais vous montrer étape par étape comment installer et configurer Kubernetes sur Ubuntu 18.04. Nous utiliserons 1 serveur 'k8s-master' comme maître hôte Kubernetes et 2 serveurs comme travailleurs Kubernetes, 'worker01' et 'worker02'.
Prérequis
- 3 serveurs Ubuntu
- 10.0.15.10 k8s-master
- 10.0.15.21 worker01
- 10.0.15.22 worker02
- Privilèges root
Ce que nous allons faire
- Installation de Kubeadm
- Configurer les hôtes
- Installer Docker
- Désactiver SWAP
- Installer les packages Kubeadm
- Initialisation du cluster Kubernetes
- Ajout de nœuds de travail au cluster Kubernetes
- Test
Étape 1 - Installation de Kubeadm
Dans cette première étape, nous préparerons ces 3 serveurs pour l'installation de Kubernetes, alors exécutez toutes les commandes sur les nœuds maître et travailleur.
Nous préparerons tous les serveurs pour l'installation de Kubernetes en modifiant la configuration existante sur les serveurs et en installant également certains packages, y compris docker et kubernetes lui-même.
Configurer les hôtes
Modifiez le fichier hosts sur tous les serveurs à l'aide de l'éditeur vim.
sudo vim /etc/hosts
Collez la configuration des hôtes ci-dessous.
10.0.15.10 k8s-master 10.0.15.21 worker01 10.0.15.22 worker02
Enregistrez et quittez.
Testez maintenant le nom d'hôte de tous les serveurs.
ping -c 3 k8s-master
ping -c 3 worker01
ping -c 3 worker02
Assurez-vous que toutes les adresses IP sont résolues en tant que nom d'hôte.
Installer Docker
Dans ce didacticiel, nous allons installer Docker à partir du référentiel Ubuntu.
Installez Docker à l'aide de la commande apt ci-dessous.
sudo apt install docker.io -y
Une fois l'installation terminée, démarrez le service Docker et activez-le pour qu'il se lance à chaque démarrage du système.
sudo systemctl start docker
sudo systemctl enable docker
L'installation de Docker est terminée.
Désactiver SWAP
Afin de configurer les serveurs Kubernetes Linux, nous devons désactiver le SWAP.
Vérifiez la liste d'échange et désactivez-la.
sudo swapon -s
sudo swapoff -a
Pour désactiver définitivement le SWAP, nous devons éditer le fichier '/etc/fstab'.
sudo vim /etc/fstab
Faites un commentaire sur le type de partition SWAP.
#/dev/mapper/hakase--labs--vg-swap_1 none swap sw 0 0
Enregistrez et quittez, puis redémarrez le système.
sudo reboot
Installer les packages Kubeadm
Dans ce didacticiel, nous utiliserons les packages Kubeadm pour configurer le cluster Kubernetes. Nous installerons les packages Kubeadm à partir du référentiel officiel de Kubernetes.
Installez apt-transport-https.
sudo apt install -y apt-transport-https
Ajoutez la clé Kubernetes.
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
Et ajoutez le référentiel Kubernetes en créant un nouveau fichier repo.list dans le répertoire '/etc/apt/sources.list.d'.
cd /etc/apt/
sudo vim sources.list.d/kubernetes.list
collez le référentiel kubernetes ci-dessous.
deb http://apt.kubernetes.io/ kubernetes-xenial main
Remarque :
Nous utilisons toujours le référentiel Xenial Ubuntu 16.04 pour notre installation Kubeadm.
Maintenant, mettez à jour le référentiel et installez les packages kubeadm à l'aide des commandes apt ci-dessous.
sudo apt update
sudo apt install -y kubeadm kubelet kubectl
Attendez l'installation des packages kubeadm.
Étape 2 - Initialisation du cluster Kubernetes
Dans cette étape, nous allons initialiser Kubernetes sur le nœud 'k8s-master'. Exécutez toutes les commandes de cette étape uniquement sur le serveur 'k8s-master'.
Initialisez le cluster Kubernetes à l'aide de la commande kubeadm ci-dessous.
sudo kubeadm init --pod-network-cidr=10.244.10.0/16 --apiserver-advertise-address=10.0.15.10 --kubernetes-version "1.11.0"
Remarque :
- --apiserver-advertise-address =détermine sur quelle adresse IP Kubernetes doit annoncer son serveur d'API.
- --pod-network-cidr =spécifiez la plage d'adresses IP pour le réseau de pods. Nous utilisons le réseau virtuel 'flanelle'. Si vous souhaitez utiliser un autre réseau de pods tel que weave-net ou calico, modifiez la plage d'adresses IP.
Une fois l'initialisation de Kubernetes terminée, vous obtiendrez le résultat comme indiqué ci-dessous.
Copiez la jointure 'kubeadm ... ... ... ' commande à votre éditeur de texte. La commande sera utilisée pour enregistrer de nouveaux nœuds de travail dans le cluster Kubernetes.
Maintenant, pour utiliser Kubernetes, nous devons exécuter certaines commandes comme indiqué dans le résultat.
Créez un nouveau répertoire de configuration '.kube' et copiez la configuration 'admin.conf' du répertoire '/etc/kubernetes'.
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 le réseau Flannel sur le cluster Kubernetes à l'aide de la commande kubectl.
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Le réseau Flannel a été déployé sur le cluster Kubernetes.
Attendez une minute, puis vérifiez le nœud et les pods kubernetes à l'aide des commandes ci-dessous.
kubectl get nodes
kubectl get pods --all-namespaces
Et vous obtiendrez le nœud 'k8s-master' en cours d'exécution en tant que cluster 'maître' avec le statut 'prêt', et tous les pods 'kube-system' nécessaires au cluster sont opérationnels.
L'initialisation et la configuration du maître de cluster Kubernetes sont terminées.
Étape 3 - Ajouter des nœuds de travail au cluster Kubernetes
Dans cette étape, nous allons ajouter deux noeuds worker 'worker01' et 'worker02' au cluster Kubernetes.
Connectez-vous au serveur 'worker01' et exécutez la commande kubeadm join que vous obtenez lors de l'initialisation du cluster.
kubeadm join 10.0.15.10:6443 --token daync8.5dcgj6c6xc7l8hay --discovery-token-ca-cert-hash sha256:65a3e69531d323c335613dea1e498656236bba22e6cf3d5c54b21d744ef97dcd
Connectez-vous au serveur 'worker02' et exécutez la commande kubeadm join que vous obtenez à partir de l'initialisation du cluster.
kubeadm join 10.0.15.10:6443 --token daync8.5dcgj6c6xc7l8hay --discovery-token-ca-cert-hash sha256:65a3e69531d323c335613dea1e498656236bba22e6cf3d5c54b21d744ef97dcd
Attendez quelques minutes et revenez au nœud maître 'k8s-master' et vérifiez l'état du nœud.
kubectl get nodes
Vous verrez que ces nœuds de travail 'worker01' et 'worker02' font partie du cluster Kubernetes.
Étape 4 - Tester
Dans cette étape, nous allons déployer le serveur Web Nginx à l'intérieur du cluster. Nous allons déployer le serveur Web Nginx à l'aide du modèle YAML.
Créez un nouveau répertoire nommé 'nginx' et accédez à ce répertoire.
mkdir -p nginx/
cd nginx/
Créez maintenant le fichier YAML de déploiement Nginx "nginx-deployment.yaml" à l'aide de l'éditeur vim.
sudo vim nginx-deployment.yaml
Collez les configurations ci-dessous.
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.0 ports: - containerPort: 80
Enregistrez et quittez.
Remarque :
- Nous créons un nouveau "déploiement" nommé "nginx-deployment".
- Configurez le libellé de l'application en tant que "nginx" avec des répliques "3".
- Le 'nginx-deployment' aura des conteneurs nommés 'nginx', basés sur l'image docker 'nginx:1.14.0', et exposera le port HTTP 80 par défaut.
Créez maintenant le déploiement en exécutant la commande kubectl ci-dessous.
kubectl create -f nginx-deployment.yaml
Après avoir créé un nouveau "nginx-deployment", vérifiez la liste des déploiements à l'intérieur du cluster.
kubectl get deployments
kubectl describe deployment nginx-deployment
Vérifiez maintenant les pods Kubernetes et vous verrez le pod 'nginx-deployment-xxx', vérifiez les détails du pod.
kubectl get pods
kubectl describe pods nginx-deployment-6cb5f7bf4f-t5xfh
Vous obtiendrez des pods de déploiement nginx avec 3 répliques sur les nœuds de travail.
Ensuite, nous devons créer un nouveau service pour notre "nginx-deployment".
Créez un nouveau fichier YAML nommé 'nginx-service.yaml'.
vim nginx-service.yaml
Collez la configuration ci-dessous.
apiVersion: v1 kind: Service metadata: name: nginx-service labels: run: nginx-service spec: type: NodePort ports: - port: 80 protocol: TCP selector: app: nginx
Enregistrez et quittez.
Remarque :
- Nous créons un nouveau service Kubernetes nommé "nginx-service".
- Le type de service est "NodePort" avec le port par défaut HTTP TargetPort 80.
- Le service appartient à l'application nommée "nginx" basée sur notre déploiement "nginx-deployment".
Créez le service Kubernetes à l'aide de la commande kubectl ci-dessous.
kubectl create -f nginx-service.yaml
Vérifiez maintenant tous les services disponibles sur le cluster et vous obtiendrez le "service nginx" dans la liste, puis vérifiez les détails du service.
kubectl get service
kubectl describe service nginx-service
Et vous verrez que le NodePort 'nginx-service' s'exécute sur le port '32649'.
Vérifiez à l'aide de la commande curl sur tous les nœuds de travail.
Sur le worker01.
curl worker01:32649
Vous verrez la page par défaut de Nginx.
Sur le worker02.
curl worker02:32649
L'installation et la configuration du cluster Kubernetes sur Ubuntu 18.04 ont été effectuées avec succès.