配置 RHEL

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

准备工作

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

启用 cgroupsv2

适用于裸金属的 Google Distributed Cloud(纯软件)版本 1.35 及更高版本需要 cgroupsv2。您的操作系统必须支持 cgroupsv2,才能创建或升级集群。

如果在预检检查期间检测到 cgroupsv1,Google Distributed Cloud 会阻止创建或升级集群。如需了解如何将操作系统迁移到 cgroupsv2,请参阅 Kubernetes 文档中的迁移到 cgroup v2

如需了解如何在 RHEL 上启用 cgroupsv2,请参阅 Red Hat 知识库中的启用 cgroup v2

启用 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 配置为与 Google Distributed Cloud 搭配使用或停用。如需了解如何配置 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 和 8.10 的机器,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