Configurar o RHEL

Para usar o GKE em bare metal, é necessário configurar o sistema operacional de base das suas máquinas de nó. Esta página contém as etapas para conclusão da configuração necessária. Para mais informações sobre como solucionar problemas do GKE em bare metal, consulte os guias de solução de problemas.

Antes de começar

Verifique se você está usando uma versão compatível do seu sistema operacional. Para acessar uma lista de versões compatíveis, consulte Selecione seu sistema operacional.

Ativar o compilador Just in Time do BPF

O kernel do sistema operacional precisa ter a opção do compilador Just In Time BPF ativada (CONFIG_BPF_JIT=y).

  • Para saber se essa opção está ativada, execute o seguinte comando:

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

Validar o gerenciador de pacotes

Verifique se você tem o nome de usuário e a senha do RedHat e se tem acesso raiz às máquinas que está configurando. Valide o gerenciador de pacotes com as seguintes etapas:

  1. Se você não registrou seu sistema operacional, registre com o RedHat usando seu nome de usuário e senha para fazer o download de atualizações:

    sudo subscription-manager register
    
    sudo subscription-manager refresh
    
    sudo subscription-manager attach --auto
    
  2. Verifique se há atualizações

    sudo dnf check-update
    

    Verifique se a saída não tem erros e inclui a última verificação de expiração dos metadados. Exemplo:

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

Configurar ou desativar o firewalld

O firewalld pode ser configurado para uso com o GKE em bare metal ou desativado. Para informações sobre como configurar o firewalld, consulte Como configurar portas de firewalld na página de requisitos de rede.

As instruções a seguir desativam o firewalld.

  1. Desativar firewalld:

    sudo systemctl stop firewalld
    
    sudo systemctl disable firewalld
    
  2. Verifique o status do firewalld para garantir que ele esteja desativado:

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

Configure o Docker na sua estação de trabalho

Siga estas etapas para instalar o Docker manualmente:

  1. Remova qualquer versão anterior do Docker:

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

    sudo dnf remove podman-manpages
    
  3. Instale o 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. Verifique se você está executando a versão 20.10.0+:

    sudo docker version
    
  5. Compare a saída com o exemplo a seguir para garantir que as versões de cliente e servidor sejam 20.10.0+:

    Client: Docker Engine - Community
    Version:           25.0.3
    ...
    Server: Docker Engine - Community
    Engine:
    Version:          25.0.3
    
  6. Verifique se o Docker executa:

    docker run hello-world
    

    Você verá algo como:

    Hello from Docker!
    

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

Configurar a sincronização de horário

A sincronização de tempo consiste em definir os relógios nas máquinas de nós, usando uma referência de hora externa designada. A sincronização de tempo é importante para atividades de cluster com base em tempo, como geração de registros de eventos e coleta de métricas. O kernel da máquina de nó controla o relógio nos contêineres executados no nó. Para garantir a sincronização de tempo adequada, instale um serviço Network Time Protocol (NTP) nas máquinas usando qualquer um dos serviços disponíveis: chrony, systemd-timesyncd, ntp ou ntpdate. Execute timedatectl para verificar se o relógio do sistema está sincronizado. A saída de timedatectl precisa conter o status a seguir:

System clock synchronized: yes

Verifique se os limites de inotify do kernel do Linux são iguais ou maiores que o mínimo

Para máquinas que executam o RHEL 9, os limites de inotify do kernel do Linux para o máximo de instâncias de usuário e de observação de usuários precisam ser maiores ou iguais a estes:

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

Verifique se esses valores estão definidos corretamente nas máquinas de nós:

  1. Verifique o valor de max_user_instances:

    cat /proc/sys/fs/inotify/max_user_instances
    
  2. Se necessário, atualize max_user_instances para o valor mínimo:

    echo 'fs.inotify.max_user_instances=8192' | sudo tee --append /etc/sysctl.conf
    
  3. Verifique o valor de max_user_watches:

    cat /proc/sys/fs/inotify/max_user_watches
    
  4. Se necessário, atualize max_user_watches para o valor mínimo:

    echo 'fs.inotify.max_user_watches=524288' | sudo tee --append /etc/sysctl.conf
    
  5. Se você atualizou algum dos valores, reinicie a máquina.

Práticas recomendadas

Para simplificar a instalação, configure o RHEL usando uma instalação mínima com gerenciamento headless. Além disso, ative a conexão de rede e use o DHCP padrão ou forneça um endereço IP estático e as informações de rede válidas. Verifique se a máquina pode se conectar aos recursos externos necessários, como cloud.google.com.

Se a execução do Docker falhar, verifique se o daemon do Docker está sendo executado com o seguinte comando:

sudo systemctl start docker