ProHoster > Blog > administration > CRI-O en remplacement de Docker comme environnement d'exécution pour Kubernetes : configuration sur CentOS 8
CRI-O en remplacement de Docker comme environnement d'exécution pour Kubernetes : configuration sur CentOS 8
Bonjour! Je m'appelle Sergey, je suis DevOps chez Surf. Le département DevOps de Surf vise non seulement à établir une interaction entre les spécialistes et à intégrer les processus de travail, mais également à rechercher et à mettre en œuvre activement les technologies actuelles tant dans sa propre infrastructure que dans celle du client.
Ci-dessous, je parlerai un peu des changements dans la pile technologique des conteneurs que nous avons rencontrés lors de l'étude de la distribution. 8 CentOS et qu'est-ce que CRÉEZ-LE et comment configurer rapidement un environnement exécutable pour Kubernetes.
Pourquoi Docker n’est-il pas inclus dans CentOS 8 ?
Après avoir installé les dernières versions majeures RHEL 8 ou 8 CentOS on ne peut s'empêcher de le remarquer : ces distributions et dépôts officiels ne contiennent pas l'application Docker, qui remplacent idéologiquement et fonctionnellement les packages Podman, Construire (présent dans la distribution par défaut) et CRÉEZ-LE. Cela est dû à la mise en œuvre pratique des standards développés, entre autres, par Red Hat dans le cadre du projet Open Container Initiative (OCI).
L'objectif d'OCI, qui fait partie de la Linux Foundation, est de créer des normes industrielles ouvertes pour les formats de conteneurs et les environnements d'exécution qui résolvent plusieurs problèmes à la fois. Premièrement, ils ne contredisaient pas la philosophie de Linux (par exemple, dans la partie selon laquelle chaque programme doit effectuer une action, et Docker est une sorte de moissonneuse-batteuse tout-en-un). Deuxièmement, ils pourraient éliminer toutes les lacunes existantes du logiciel Docker. Troisièmement, ils seraient entièrement compatibles avec les exigences commerciales des principales plates-formes commerciales de déploiement, de gestion et de service d'applications conteneurisées (par exemple, Red Hat OpenShift).
Limites Docker et les avantages du nouveau logiciel ont déjà été décrits en détail dans cet article, et une description détaillée de l'ensemble de la pile logicielle proposée dans le projet OCI et de ses fonctionnalités architecturales peut être trouvée dans la documentation officielle et les articles de Red Hat lui-même (pas mal article sur le blog Red Hat) et dans des sites tiers Commentaires.
Il est important de noter quelles sont les fonctionnalités des composants de la pile proposée :
Podman — interaction directe avec les conteneurs et le stockage d'images via le processus runC ;
Construire — assemblage et téléchargement d'images dans le registre ;
CRÉEZ-LE — un environnement exécutable pour les systèmes d'orchestration de conteneurs (par exemple, Kubernetes).
Je pense que pour comprendre le schéma général d'interaction entre les composants de la stack, il convient de fournir ici un schéma de connexion Kubernetes c exécuterC et bibliothèques de bas niveau utilisant CRÉEZ-LE:
CRÉEZ-LE и Kubernetes adhérer au même cycle de release et de support (la matrice de compatibilité est très simple : versions majeures Kubernetes и CRÉEZ-LE coïncident), et ceci, compte tenu de l'accent mis sur les tests complets et complets du fonctionnement de cette pile par les développeurs, nous donne le droit d'attendre la stabilité de fonctionnement maximale réalisable dans tous les scénarios d'utilisation (la légèreté relative est également bénéfique ici CRÉEZ-LE par rapport à Docker en raison d'une limitation délibérée des fonctionnalités).
При установке Kubernetes manière "dans le bon sens" (selon OCI, bien sûr) en utilisant CRÉEZ-LE sur 8 CentOS Nous avons rencontré quelques difficultés mineures, que nous avons néanmoins réussi à surmonter. Je me ferai un plaisir de partager avec vous les instructions d'installation et de configuration, qui prendront au total environ 10 minutes.
Comment déployer Kubernetes sur CentOS 8 à l'aide du framework CRI-O
Prérequis : présence d'au moins un hôte (2 cœurs, 4 Go de RAM, espace de stockage d'au moins 15 Go) avec installé 8 CentOS (le profil d'installation « Serveur » est recommandé), ainsi que ses entrées dans le DNS local (en dernier recours, vous pouvez vous en sortir avec une entrée dans /etc/hosts). Et n'oublie pas désactiver l'échange.
Nous effectuons toutes les opérations sur l'hôte en tant qu'utilisateur root, soyez prudent.
Dans la première étape, nous allons configurer le système d'exploitation, installer et configurer les dépendances préliminaires pour CRI-O.
Mettons à jour le système d'exploitation :
dnf -y update
Ensuite, vous devez configurer le pare-feu et SELinux. Ici tout dépend de l'environnement dans lequel notre ou nos hôtes vont travailler. Vous pouvez soit mettre en place un pare-feu selon les recommandations de documentation, ou, si vous êtes sur un réseau approuvé ou utilisez un pare-feu tiers, modifiez la zone par défaut en approuvé ou désactivez le pare-feu :
définir la version requise CRÉEZ-LE (version majeure CRÉEZ-LE, comme déjà mentionné, correspond à la version requise Kubernetes), depuis la dernière version stable Kubernetes actuellement 1.18 :
Faites attention à la première nuance que nous rencontrons lors du processus d'installation : vous devez modifier la configuration CRÉEZ-LE avant de démarrer le service, car le composant commun requis a un emplacement différent de celui spécifié :
sed -i 's//usr/libexec/crio/conmon//usr/bin/conmon/' /etc/crio/crio.conf
Vous pouvez maintenant activer et démarrer le démon CRÉEZ-LE:
La deuxième nuance importante : puisque nous n'utilisons pas de démon Docker, mais nous utilisons le démon CRÉEZ-LE, avant le lancement et l'initialisation Kubernetes vous devez effectuer les réglages appropriés dans le fichier de configuration /var/lib/kubelet/config.yaml, après avoir créé au préalable le répertoire souhaité :
Le troisième point important que l'on rencontre lors de l'installation : malgré le fait que nous ayons indiqué le driver utilisé groupe de contrôle, et sa configuration à travers les arguments passés Kubelet est obsolète (comme cela est explicitement indiqué dans la documentation), nous devons ajouter des arguments au fichier, sinon notre cluster ne sera pas initialisé :
Customiser avion de contrôle ou travailleur nœuds en quelques minutes, vous pouvez utiliser avec ce script.
Il est temps d'initialiser notre cluster.
Pour initialiser le cluster, exécutez la commande :
kubeadm init --pod-network-cidr=10.244.0.0/16
Assurez-vous de noter la commande pour rejoindre le cluster « kubeadm join… », que vous êtes invité à utiliser à la fin de la sortie, ou au moins les jetons spécifiés.
Installons le plugin (CNI) pour le réseau Pod. Je recommande d'utiliser Calicot. Peut-être plus populaire Flanelle a des problèmes de compatibilité avec nftables, oui et oui Calicot - la seule implémentation CNI recommandée et entièrement testée par le projet Kubernetes:
Pour connecter un nœud de travail à notre cluster, vous devez le configurer selon les instructions 1 et 2, ou utiliser scénario, puis exécutez la commande à partir de la sortie « kubeadm init... » que nous avons notée à l'étape précédente :
Vérifions que notre cluster est initialisé et a commencé à fonctionner :
kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
Prêt! Vous pouvez déjà héberger des charges utiles sur votre cluster K8s.
Ce qui nous attend
J'espère que les instructions ci-dessus vous ont permis d'économiser du temps et des nerfs.
Le résultat des processus qui se déroulent dans l'industrie dépend souvent de la manière dont ils sont acceptés par la majorité des utilisateurs finaux et des développeurs d'autres logiciels dans le créneau correspondant. On ne sait pas encore exactement à quoi aboutiront les initiatives de l’OCI dans quelques années, mais nous les observerons avec plaisir. Vous pouvez partager votre opinion dès maintenant dans les commentaires.
Bientôt disponible!
Cet article est paru grâce aux sources suivantes :