Démarrer avec Kubernetes
Aperçu
Après avoir installé un cluster Kubernetes avec le portail VCD et son plugin CSE, on va découvrir une méthode pour exploiter ce cluster, y accéder, l'administrer, déployer des containers, des applications, etc.
Prérequis
De quoi a-t-on besoin ?
- une VM linux avec bureau graphique pour administrer le cluster.
- kubectl
- le fichier de configuration du cluster
- deux adresses IP publiques
La VM d'administration
J'ai utilisé une version Ubuntu 19 upgradée en 20 par la suite. Il va falloir installer l'outil de base pour kubernetes, à savoir kubectl. La VM est configurée avec un compte linux nommé kubeadm. Ce compte est autorisé à se connecter en SSH sans mot de passe sur tous les noeuds du cluster Kubernetes.
helm a été installé et permet de déployer simplement une application sur le cluster.
Installation de kubectl
sudo apt update && sudo apt-get install -y apt-transport-https curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg
Vérification de la version installée
kubeadm@k8sadmin:~$ kubectl version --client Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.2", GitCommit:"52c56ce7a8272c798dbc29846288d7cd9fbae032", GitTreeState:"clean",
BuildDate:"2020-04-16T11:56:40Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"
Fichier de configuration du cluster
Le fichier généré par l'interface VCD peut être téléchargé sur le PC. Il faudra alors le transférer sur la VM. Plusieurs solutions :
- le télécharger via un espace web sur lequel le fichier est mis à disposition (dissimulé de préférence)
- le télécharger via un serveur sftp, assez lourd à mettre en oeuvre
- le copier/coller dans une fenêtre shell-in-a-box (il faudra juste remettre le fichier yaml en forme, les retours charriot sautent dans l'opération).
Pour que tout fonctionne correctement, il est pratique de le positionner à l'emplacement suivant : ~/.kube/config
On vérifie avec la commande kubectl cluster info :
kubeadm@k8sadmin:~$ kubectl cluster-info Kubernetes master is running at https://192.168.12.3:6443
KubeDNS is running at https://192.168.12.3:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'
Dashboard kubernetes
Se connecter sur la console de la VM d'administration.
Lancer la commande suivante pour lancer le proxy permettant d'afficher les applications exposées sur le cluster :
Aller sur Firefox et se connecter sur la console (raccourci dans la barre personnelle nommé Kubernetes Dashboard).
Plusieurs fenêtre de terminal sont ouvertes, l'une d'elle permet de récupérer le jeton permettant de s'authentifier sur le Dashboard, pour cela, lancer le script :
Copier/coller le jeton (double clic sur le terminal, attention, ne prendre que les caractères utiles)
Mise à jour de la version de Kubernetes
Le cluster monClusterK8s a été déployé avec les template CSE ubuntu 1.15. J'ai réalisé la mise à jour vers la version 1.16.9. La procédure est décrite à cet endroit :
https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/
Il est nécessaire de réaliser les opérations d'upgrade de kubeadm sur chaque noeud, et donc se connecter en ssh sur chaque serveur.
Par ex:
Upgrade Master:
apt-mark unhold kubeadm && apt-get update && apt-get install -y kubeadm=1.16.10-00 && apt-mark hold kubeadm kubectl drain $MASTER --ignore-daemonsets (--delete-local-data) kubeadm upgrade apply v1.16.10 kubectl uncordon $MASTER apt-mark unhold kubelet kubectl && apt-get update && apt-get install -y kubelet=1.16.10-00 kubectl=1.16.10-00 && apt-mark hold kubelet kubectl systemctl restart kubelet
Note : pour un upgrade de la 1.16 à la 1.17 il est nécessaire d'upgrader le package kubernetes-cni vers la version 0.8.6-00 avant d'upgrader le Master et les Nodes
Upgrade Nodes:
On Node:
apt-mark unhold kubeadm && apt-get update && apt-get install -y kubeadm=1.16.10-00 && apt-mark hold kubeadm
on Master :
On Node:
kubeadm upgrade node apt-mark unhold kubelet kubectl && apt-get update && apt-get install -y kubelet=1.16.10-00 kubectl=1.16.10-00 && apt-mark hold kubelet kubectl systemctl restart kubelet
On Master:
Les upgrades ne sont possibles que vers version mineure +1
Donc pour upgrader en 1.18.x depuis 1.15.x, suivre le chemin : 1.15=>1.16=>1.17=>1.18
Note: Upgrade testé depuis Cluster K8s 1.15 vers 1.18 sur Ubuntu 16.04.7 LTS
Etape suivante: Exposer une application sur internet