Configurer RHEL

Vous devez configurer le système d'exploitation de base de vos machines de nœuds pour utiliser GKE sur une solution Bare Metal. Cette page contient la procédure à suivre pour terminer la configuration requise. Pour en savoir plus sur le dépannage de GKE sur une solution Bare Metal, consultez les guides de dépannage.

Avant de commencer

Assurez-vous que vous utilisez une version de système d'exploitation compatible. Pour obtenir la liste des versions compatibles, consultez la section Sélectionner votre système d'exploitation.

Activer le compilateur BPF Just In Time

L'option du compilateur BPF Just In Time doit être activée sur le noyau de votre système d'exploitation (CONFIG_BPF_JIT=y).

  • Pour savoir si cette option est activée, exécutez la commande suivante:

    grep CONFIG_BPF_JIT /boot/config-$(uname -r)
    

Valider le gestionnaire de packages

Assurez-vous de disposer de votre nom d'utilisateur et de votre mot de passe RedHat, et d'un accès racine aux machines que vous configurez. Validez le gestionnaire de packages en procédant comme suit :

  1. Si vous n'avez pas enregistré votre système d'exploitation, inscrivez-vous auprès de RedHat à l'aide de votre nom d'utilisateur et de votre mot de passe pour télécharger les mises à jour :

    sudo subscription-manager register
    
    sudo subscription-manager refresh
    
    sudo subscription-manager attach --auto
    
  2. Recherchez des mises à jour :

    sudo dnf check-update
    

    Assurez-vous que le résultat ne comporte aucune erreur et inclut la dernière vérification de l'expiration des métadonnées. Exemple :

    Updating Subscription Management repositories.
    ...
    # Last metadata expiration check: ...
    ...
    

Configurer ou désactiver firewalld

Firewalld peut être configuré ou désactivé pour une utilisation avec GKE sur Bare Metal. Pour plus d'informations sur la configuration de firewalld, consultez la section Configurer les ports de firewalld sur la page "Exigences réseau".

Les instructions suivantes désactivent firewalld.

  1. Désactivez firewalld :

    sudo systemctl stop firewalld
    
    sudo systemctl disable firewalld
    
  2. Vérifiez l'état de firewalld pour vous assurer qu'il est désactivé :

    sudo systemctl status firewalld | grep "Active"
    # Output
    # Active: inactive (dead)
    

Configurer Docker sur votre station de travail

Pour installer Docker manuellement, procédez comme suit :

  1. Supprimez toute version précédente de Docker :

    sudo dnf remove docker \
        docker-client \
        docker-client-latest \
        docker-common \
        docker-latest \
        docker-latest-logrotate \
        docker-logrotate \
        docker-engine
    
  2. Supprimez podman-manpages :

    sudo dnf remove podman-manpages
    
  3. Installez Docker 20.10.0+:

    sudo dnf install -y yum-utils
    
    sudo yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/rhel/docker-ce.repo
    
    sudo dnf install -y --allowerasing docker-ce docker-ce-cli containerd.io
    
    sudo systemctl start docker
    
  4. Vérifiez que vous utilisez la version 20.10.0 ou une version ultérieure:

    sudo docker version
    
  5. Comparez le résultat à l'exemple suivant pour vous assurer que les versions du client et du serveur sont la version 20.10.0 ou ultérieure:

    Client: Docker Engine - Community
    Version:           25.0.3
    ...
    Server: Docker Engine - Community
    Engine:
    Version:          25.0.3
    
  6. Vérifiez que Docker s'exécute :

    docker run hello-world
    

    Le résultat doit ressembler à ceci :

    Hello from Docker!
    

    This message shows that your installation appears to be working correctly.

Configurer la synchronisation horaire

La synchronisation horaire consiste à définir les horloges de vos machines de nœud en utilisant une référence de temps externe désignée. La synchronisation horaire est importante pour les activités de cluster urgentes, telles que la journalisation d'événements et la collecte de métriques. Le noyau de votre machine de nœud contrôle l'horloge des conteneurs exécutés sur le nœud. Pour assurer une synchronisation horaire appropriée, installez un service de protocole réseau (NTP) sur vos machines en utilisant l'un des services disponibles : chrony, systemd-timesyncd, ntp ou ntpdate. Exécutez timedatectl pour vérifier que l'horloge système est bien synchronisée. La sortie de timedatectl doit contenir l'état suivant :

System clock synchronized: yes

Assurez-vous que les limites de inotify du noyau Linux sont supérieures ou égales à la valeur minimale

Pour les machines exécutant RHEL 9, les limites du nombre maximal d'instances et d'instances utilisateur du noyau Linux (inotify) doivent être supérieures ou égales à ce qui suit:

  • fs.inotify.max_user_instances : 8192
  • fs.inotify.max_user_watches : 524288

Assurez-vous que ces valeurs sont correctement définies sur vos machines de nœuds:

  1. Vérifiez la valeur de max_user_instances:

    cat /proc/sys/fs/inotify/max_user_instances
    
  2. Si nécessaire, remplacez max_user_instances par la valeur minimale:

    echo 'fs.inotify.max_user_instances=8192' | sudo tee --append /etc/sysctl.conf
    
  3. Vérifiez la valeur de max_user_watches:

    cat /proc/sys/fs/inotify/max_user_watches
    
  4. Si nécessaire, remplacez max_user_watches par la valeur minimale:

    echo 'fs.inotify.max_user_watches=524288' | sudo tee --append /etc/sysctl.conf
    
  5. Si vous avez modifié l'une ou l'autre de ces valeurs, redémarrez la machine.

Bonnes pratiques

Pour simplifier l'installation, nous vous recommandons de configurer RHEL sur une installation minimale, sans interface graphique. Veillez également à activer votre connexion réseau et soit à utiliser le protocole DHCP par défaut, soit à fournir une adresse IP statique et des informations réseau valides. Assurez-vous que la machine peut se connecter aux ressources externes requises, telles que cloud.google.com.

Si Docker ne s'exécute pas, vérifiez que le daemon Docker s'exécute à l'aide de la commande suivante :

sudo systemctl start docker