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.
Sommaire
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 -
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.
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_file
et 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.