INFOTHEMA

Auteur Sujet: [LJP-Infos] Présentation de Micro Kubertnetes - MicroK8s  (Lu 2442 fois)

Animateur

  • Administrator
  • Hero Member
  • *****
  • Messages: 6856
    • Voir le profil
[LJP-Infos] Présentation de Micro Kubertnetes - MicroK8s
« le: avril 09, 2023, 04:00:02 pm »
[LJP-Infos] Présentation de Micro Kubertnetes - MicroK8s



Cette vidéo montre comment installer un Microkube Microk8s sur une machine RedHat ou un de ses dérivés.
Mais si vous savez installer snap sur votre Linux, Debian Ubuntu ou tout autre distribution, vous pouvez faire pareil.

Microkube est une des nombreuses variantes de Kubernetes, c'est une version allégée du système principalement destinée aux Devops, aux développeurs ou pour les toutes petites structures.
Il propose même la possibilité de fonctionner en cluster, ce qui est déjà pas mal.
 
Ce qui est particulièrement remarquable dans Microkube c'est sa facilité d'installation et surtout le fait que ça fonctionne tout seul.

Un fichier avec les commandes et les explications de base est disponible ici:

Ce document explique comment installer un micro Kubernetes Microk8S.

Kuberntes existe dans de nombreuses déclinaisons Microk8S en est une.
Il est tout particulièrement fait pour les Devops et les développeurs.

Il est simple à installer et propose (presque) toutes les fonctionnalités d'un Kubernetes.
Il pourra très bien convenir pour des installations de moyennes taille s'il est configuré correctement.

Ce document est disponible ici: https://drive.google.com/file/d/1yylcH4ncfqnffHhPpl8tzWcRlZHmOyLJ

LJP-Infos le 03/12/2022


== On met le nom/IP suivant le système
========================================================================

# Pas besoin de machine particulière, un simple Centos, Rocky, Redhat...

vi /etc/hostname
microk8s

vi /etc/resolv.conf
# On ne laisse que 2 DNS!

# Si c'est pour vérifier on peut juste faire un cat:
cat /etc/resolv.conf

vi /etc/hosts
# Le poste local:
127.0.0.1       localhost
127.0.1.1       microk8s microk8s.loisel.loc   
192.168.1.51 microk8s microk8s.loisel.loc

* Attention on évite quand même les noms pas trop "carés"

# On valide, on teste, on reboote
reboot


=== Installation préparation de snapd
========================================================================

# On vérifie/on installe les mises à jour
dnf update -y

# Pour l'installer on utilise snap
dnf install epel-release -y
dnf install snapd -y

# On active snap
systemctl enable snapd.socket --now
systemctl enable snapd
systemctl status snapd.socket

# On va utiliser snapd de manière classique alors on le lie à la racine /snap
ln -s /var/lib/snapd/snap /snap

# On ajoute snapd dans le path (si on veut utiliser tout de suite)
PATH=$PATH:/snap:/snap/bin
# Sinon pour prendre en compte snapd et son chemin
reboot


=== Installation de microk8s
========================================================================

# On installe microk8s de manière classique
# (si on installe tout tout de suite, il faudra peut-être attendre la fin du démarrage de snap - 1 à 2min suffisent)

snap install microk8s --classic

# Pour le cas d'une utilisation sur un user différent de root (on adapte "user_name_to_use")
usermod -a -G microk8s user_name_to_use
chown -f -R user_name_to_use ~/.kube
su - user_name_to_use

# Microk8s est tout configuré, on peut tout de suite voir ça
# (la première fois il faut attendre quand même un peu qu'il démarre)
microk8s status --wait-ready

* "microk8s status" retourne la liste des addons disponibles pour microk8s

# Et pour la liste des commandes:
microk8s


# Et on fait comme dans la doc k8s
alias kubectl="microk8s kubectl"
# En mieux...
echo alias kubectl=\"microk8s kubectl\" >> /etc/bashrc
# (Et on peut faire ça avec les sous commandes qu'on veut!)

# Pour les commandes de kubectl
kubectl --help

# Suivant les besoins on ajoute les ports nécessaires pour firewalld (le port du dashboard)
firewall-cmd --add-port=10443/tcp --permanent
firewall-cmd --reload


=== Accès au dashboard
========================================================================

# On active le dashboard puis on le lance
microk8s enable dashboard
microk8s dashboard-proxy

# Le dashboard sera disponible à l'adresse suivante:
https://127.0.0.1:10443
https://ip_ou_nom_du_server:10443
* Par ex: https://192.168.1.51:10443
* Pour se connecter on utilisera le token fourni (s'assurer de le copier come il faut!)

# Etant sur Redhat ou un assimilé on pourra lancer le dashboard au travers de cockpit (après l'avoir installé)
dnf install cockpit -y

# On l'active et on l'autorise
systemctl enable --now cockpit.socket
# Au besoin ajouter cokipt aux exceptions
firewall-cmd --list-all
firewall-cmd --add-service=cockpit --permanent
firewall-cmd --reload

# On accède à cockpit par / ce qui sera plus pratique pour lancer le dashboard Kubernetes:
https://ip_ou_nom_du_server:
* Par ex (toujours à adapter): https://192.168.1.51:9090

* On pourrait aussi le lancer par tmux, créer un service (pour ça voir les vidéos LJP-Infos)...


=== Utilisation de Kubernetes + bases
========================================================================

# Généralement on activera les addons suivants (si ce n'est pas fait)
microk8s enable dashboard dns ingress
# Si le cluster comporte plusiseurs noeuds
microk8s enable metallb

* Ingress gère le traffic entrant dans le cluster et on appelle egress le traffic sortant du cluster. Ingress est une ressource Kubernetes (comme les pods). Ingress, pour résumer assure le routage entre les éléments.

# Obtenir la liste des objets Kubernetes
kubectl get all --all-namespaces

# Créer un pod..
kubectl run test --image=test --restart=Never
# Voir l'état des pods
kubectl get pods
# Le supprimer
kubectl delete pod test


# Example de pod depuis un yaml
vi mon-pod-nginx.yaml

apiVersion: v1
kind: Pod
metadata:
  name: mon-pod-nginx
spec:
  containers:
  - name: mon-pod-nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 8080

# On applique
kubectl apply -f ./mon-pod-nginx.yaml
# On peut lister les pods
kubectl get pods
# ou
kubectl get pods --all-namespaces
# Le supprimer
kubectl delete pod mon-pod-nginx


# Le mieux est de tester directement la connexion dans un pod...
kubectl run debian --rm -i --tty --image debian -- bash
# Dans le pod debian on peut tester...
cat /etc/os-release
# On n'oublie pas de quitter (sinon on reste dans le pod)
exit

# Et on a les commandes classiques...
kubectl get nodes


* Le reste est de l'utilisation classique de Kubernetes

Time code:
01:34 Environnement de travail
02:55 Présentation de Microkube
04:44 Prérequis
06:33 Installation de Snapd
10:21 Installation de microk8s
16:30 Utilisation de Kubernetes, les bases
17:15 Le dashboard activation et accès
20:58 Modules/addon de Microkube
22:28 Quelques commandes
28:12 Et après?
Membre de l'APRIL (www.april.org) / Membre du bureau Association "Debian Facile"  (https://debian-facile.org)