配置 RHEL

您必须配置节点机器的基本操作系统,以使用 GKE on Bare Metal。本页面介绍完成所需配置需要执行的步骤。 如需详细了解如何排查 GKE on Bare Metal 问题,请参阅问题排查指南

准备工作

确保您使用的是受支持的操作系统版本。如需查看受支持版本的列表,请参阅选择操作系统

启用 BPF Just In Time 编译器

您的操作系统的内核必须启用 BPF Just In Time 编译器选项 (CONFIG_BPF_JIT=y)。

  • 如需了解此选项是否已启用,请运行以下命令:

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

验证软件包管理系统

确保您拥有 RedHat 用户名和密码,并且对正在配置的机器拥有根访问权限。按照以下步骤验证软件包管理器:

  1. 如果您尚未注册操作系统,请使用您的 RedHat 用户名和密码注册 RedHat 以下载更新:

    sudo subscription-manager register
    
    sudo subscription-manager refresh
    
    sudo subscription-manager attach --auto
    
  2. 检查更新:

    sudo dnf check-update
    

    确保输出没有错误,并且包含上次元数据失效检查。例如:

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

配置或停用 firewalld

可以将 Firewalld 配置成与 GKE on Bare Metal 搭配使用,也可以将其停用。如需了解如何配置 firewalld,请参阅“网络要求”页面上的配置 firewalld 端口

以下说明用于停用 firewalld。

  1. 停用 firewalld:

    sudo systemctl stop firewalld
    
    sudo systemctl disable firewalld
    
  2. 检查 firewalld 的状态以确保它已停用:

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

在工作站上配置 Docker

按照以下步骤手动安装 Docker:

  1. 移除任何之前的 Docker 版本:

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

    sudo dnf remove podman-manpages
    
  3. 安装 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. 验证您现在是否正在运行 20.10.0 及以上版本:

    sudo docker version
    
  5. 将您的输出与以下示例进行比较,以确保客户端和服务器版本均为 20.10.0 及更高版本:

    Client: Docker Engine - Community
    Version:           25.0.3
    ...
    Server: Docker Engine - Community
    Engine:
    Version:          25.0.3
    
  6. 验证 Docker 是否能运行:

    docker run hello-world
    

    您应该会看到如下所示的内容:

    Hello from Docker!
    

    此消息表明您的安装似乎在正常运行。

设置时间同步

时间同步包括使用指定的外部时间参考信息在节点机器上设置时钟。时间同步对于时间敏感型集群活动(例如事件日志记录和指标收集)非常重要。节点机器的内核控制在节点上运行的容器中的时钟。为了确保正确进行时间同步,请使用任何可用的服务(chronysystemd-timesyncdntpntpdate)在您的机器上安装网络时间协议 (NTP) 服务。运行 timedatectl 验证系统时钟是否已同步。timedatectl 的输出应包含以下状态:

System clock synchronized: yes

确保 Linux 内核 inotify 限制不低于下限

对于运行 RHEL 9 的机器,用户实例数上限和用户手表的 Linux 内核 inotify 限制必须大于或等于以下值:

  • fs.inotify.max_user_instances8192
  • fs.inotify.max_user_watches524288

确保在节点机器上正确设置以下值:

  1. 检查 max_user_instances 的值:

    cat /proc/sys/fs/inotify/max_user_instances
    
  2. 如果需要,将 max_user_instances 更新为最小值:

    echo 'fs.inotify.max_user_instances=8192' | sudo tee --append /etc/sysctl.conf
    
  3. 检查 max_user_watches 的值:

    cat /proc/sys/fs/inotify/max_user_watches
    
  4. 如果需要,将 max_user_watches 更新为最小值:

    echo 'fs.inotify.max_user_watches=524288' | sudo tee --append /etc/sysctl.conf
    
  5. 如果您更新了任一值,请重新启动机器。

最佳做法

为了简化安装,我们建议您使用具有无头管理的极简安装配置 RHEL。此外,请务必启用网络连接,并使用默认 DHCP 或提供有效的静态 IP 地址和网络信息。确保机器可以连接到必需的外部资源,例如 cloud.google.com

如果 Docker 运行失败,请使用以下命令检查 Docker 守护进程是否正在运行:

sudo systemctl start docker