Comment utiliser K3s pour exécuter un cluster Kubernetes sur votre machine de développement
Agence web » Actualités du digital » Comment utiliser K3s pour exécuter un cluster Kubernetes sur votre machine de développement

Comment utiliser K3s pour exécuter un cluster Kubernetes sur votre machine de développement

K3s est une distribution Kubernetes légère idéale pour le développement. Il fait maintenant partie de la Cloud Native Computing Foundation (CNCF) mais a été initialement développé par Rancher.

K3s est livré en tant que binaire unique avec une taille de fichier inférieure à 50 Mo. Malgré son apparence minuscule, K3s comprend tout ce dont vous avez besoin pour exécuter un cluster Kubernetes prêt pour la production. Le projet se concentre sur le matériel à ressources limitées où la fiabilité et la facilité de maintenance sont des préoccupations clés. Alors que K3s se trouve désormais couramment à la périphérie des appareils IoT, ces qualités en font également un bon candidat pour une utilisation locale par les développeurs.

Premiers pas avec les K3

L’exécution du binaire K3s démarrera un cluster Kubernetes sur la machine hôte. Le processus K3s principal démarre et gère tous les composants Kubernetes, y compris le serveur d’API du plan de contrôle, une instance de travail Kubelet et l’environnement d’exécution du conteneur containerd.

En pratique, vous souhaiterez généralement que K3s démarre automatiquement en tant que service. Il est recommandé d’utiliser le script d’installation officiel pour faire fonctionner rapidement les K3 sur votre système. Cela téléchargera le binaire, le déplacera dans votre chemin et enregistrera un service systemd ou openrc en fonction de votre système. K3s sera configuré pour redémarrer automatiquement après le plantage de son processus ou le redémarrage de votre hôte.

$ curl -sfL https://get.k3s.io | sh -

image de l'installation des K3

Confirmez que l’installation a réussi en vérifiant l’état du k3s service:

$ sudo service k3s status

Vous êtes prêt à commencer à utiliser votre cluster si active (running) s’affiche en vert.

Interagir avec votre cluster

K3s regroupe Kubectl si vous l’installez à l’aide du script fourni. Il est niché sous le k3s commande:

$ k3s kubectl get pods
No resources found in default namespace.

Vous pourriez recevoir une erreur qui ressemble à ceci :

$ k3s kubectl get pods
WARN[0000] Unable to read /etc/rancher/k3s/k3s.yaml, please start server with --write-kubeconfig-mode to modify kube config permissions 
error: error loading config file "/etc/rancher/k3s/k3s.yaml": open /etc/rancher/k3s/k3s.yaml: permission denied

Vous pouvez résoudre ce problème en ajustant les autorisations de fichier du chemin référencé :

$ sudo chmod 644 /etc/rancher/k3s/k3s.yaml

Vous devriez maintenant pouvoir exécuter des commandes Kubectl sans utiliser sudo.

Vous pouvez continuer à utiliser une installation Kubectl autonome si vous ne souhaitez pas vous fier à la version intégrée de K3s. Utilisez le KUBECONFIG variable d’environnement ou --kubeconfig drapeau pour référencer votre fichier de configuration K3s lors de l’exécution du nu kubectl commande:

$ export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
$ kubectl get pods
No resources found in default namespace.

Un exemple de charge de travail

Vous pouvez tester votre cluster en ajoutant un déploiement simple :

$ k3s kubectl create deployment nginx --image=nginx:latest
deployment.apps/nginx created
$ k3s kubectl expose deployment nginx --type=LoadBalancer --port=80
service/nginx exposed

Utilisez Kubectl pour découvrir l’adresse IP du service qui a été créé :

$ k3s kubectl get services
NAME         TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP      10.43.0.1     <none>        443/TCP        35m
nginx        LoadBalancer   10.43.49.20   <pending>     80:30968/TCP   17s

Dans cet exemple, le service NGINX est accessible à 10.43.49.20. Visitez cette URL dans votre navigateur Web pour voir la page d’accueil NGINX par défaut.

image de la page par défaut de NGINX exécutée dans K3s

Définition des options Kubernetes

Vous pouvez définir des arguments personnalisés pour des composants Kubernetes individuels lorsque vous exécutez K3s. Les valeurs doivent être fournies sous forme d’indicateurs de ligne de commande au binaire K3s. Les variables d’environnement sont également prises en charge, mais la conversion de l’indicateur en nom de variable n’est pas toujours cohérente.

Voici quelques drapeaux couramment utilisés pour configurer votre installation :

De nombreuses autres options sont disponibles pour personnaliser le fonctionnement des K3 et de votre cluster Kubernetes. Celles-ci incluent des fonctionnalités permettant de désactiver les composants groupés tels que le contrôleur Traefik Ingress (--disable traefik) afin que vous puissiez les remplacer par des implémentations alternatives.

Outre les drapeaux et les variables, K3s prend également en charge un fichier de configuration YAML beaucoup plus facile à gérer. Déposez ceci à /etc/rancher/k3s/config.yaml pour que K3s l’utilise automatiquement à chaque démarrage. Les noms de champ doivent être des arguments CLI dépouillés de leur -- préfixe.

node-name: first-worker
bind-address: 1.2.3.4

Clusters multi-nœuds

K3s prend entièrement en charge les clusters multi-nœuds. Vous pouvez ajouter des nœuds à votre cluster en définissant le K3S_URL et K3S_TOKEN variables d’environnement avant d’exécuter le script d’installation.

$ curl -sfL https://get.k3s.io | K3S_URL=https://192.168.0.1:6443 K3S_TOKEN=token sh -

Ce script installera K3s et le configurera en tant que nœud de travail qui se connecte à l’adresse IP 192.168.0.1. Pour trouver votre jeton, copiez la valeur du /var/lib/rancher/k3s/server/node-token fichier de la machine qui exécute votre serveur K3s.

Utilisation d’images dans des registres privés

K3s a un bon support intégré pour les images dans les registres privés. Vous pouvez fournir un fichier de configuration spécial pour injecter les informations d’identification du registre dans votre cluster. Ces informations d’identification seront lues au démarrage du serveur K3s. Il les partagera automatiquement avec vos noeuds worker.

Créé un /etc/rancher/k3s/registries.yaml fichier avec le contenu suivant :

mirrors:
  example-registry.com:
    endpoint:
      - "https://example-registry.com:5000"

Cela permettra à votre cluster d’extraire des images telles que example-registry.com/example-image:latest du serveur à example-registry.com:5000. Vous pouvez spécifier plusieurs URL sous le endpoint champ; ils seront utilisés comme solutions de secours dans l’ordre écrit jusqu’à ce qu’un tirage réussi se produise.

Fournissez les informations d’identification de l’utilisateur pour vos registres à l’aide de la syntaxe suivante :

mirrors:
  example-registry.com:
    endpoint:
      - "https://example-registry.com:5000"
configs:
  "example-registry.com:5000":
    auth:
      username: <username>
      password: <password>

Les informations d’identification sont définies par point de terminaison. Les registres définis avec plusieurs points de terminaison nécessitent des entrées individuelles dans le config terrain pour chacun.

Les points de terminaison qui utilisent SSL doivent également se voir attribuer une configuration TLS :

configs:
  "example-registry.com:5000":
    auth:
      username: <username>
      password: <password
    tls:
      cert_file: /tls/cert
      key_file: /tls/key
      ca_file: /tls/ca

Met le cert_file, key_fileet ca_file champs pour référencer les fichiers de certificat corrects pour votre registre.

Mise à niveau de votre cluster

Vous pouvez mettre à niveau vers les nouvelles versions de K3s en exécutant la dernière version du script d’installation. Cela détectera automatiquement votre cluster existant et le migrera vers la nouvelle version.

$ curl -sfL https://get.k3s.io | sh -

Si vous avez personnalisé votre cluster en définissant des variables d’environnement du programme d’installation, répétez-les lorsque vous exécutez la commande de mise à niveau :

$ curl -sfL https://get.k3s.io | INSTALL_K3S_BIN_DIR=/usr/bin sh -

Les clusters à plusieurs nœuds sont mis à niveau à l’aide de la même procédure. Vous devez mettre à niveau chaque nœud de travail individuellement, une fois que le serveur a exécuté la nouvelle version.

Vous pouvez installer une version spécifique de Kubernetes en définissant le INSTALL_K3S_VERSION variable avant d’exécuter le script :

$ curl -sFL https://get.k3s.io | INSTALL_K3S_VERSION=v1.23.0 sh -

La INSTALL_K3S_CHANNEL version peut sélectionner des versions instables et des versions préliminaires :

$ curl -sFL https://get.k3s.io | INSTALL_K3S_CHANNEL=latest sh -

K3s exécutera par défaut la dernière version stable de Kubernetes lorsque ces variables ne sont pas définies.

Désinstallation des K3

Comme K3s est fourni sous la forme d’un binaire autonome, il est facile à nettoyer si vous souhaitez arrêter de l’utiliser. Le processus d’installation fournit un script de désinstallation qui supprimera les services système, supprimera le binaire et effacera toutes les données créées par votre cluster.

$ /usr/local/bin/k3s-uninstall.sh

Vous devez utiliser le script à /usr/local/bin/k3s-agent-uninstall.sh à la place lorsque vous désactivez un nœud de travail K3s.

Conclusion

K3s est une distribution Kubernetes à un seul binaire qui consomme peu de ressources système et est facile à entretenir. Cela ne se fait pas au détriment des capacités : K3s est présenté comme prêt pour la production et prend entièrement en charge les objets de l’API Kubernetes, le stockage persistant et la mise en réseau à charge équilibrée.

K3s est une bonne alternative aux autres saveurs Kubernetes orientées développeurs telles que Minikube et MicroK8s. Vous n’avez pas besoin d’exécuter des machines virtuelles, d’installer d’autres logiciels ou d’effectuer une configuration avancée pour configurer votre cluster. Il est particulièrement bien adapté lorsque vous utilisez déjà des K3 en production, vous permettant d’aplanir les disparités entre vos environnements.

★★★★★