管理员工作站前提条件

管理员工作站托管命令行界面 (CLI) 工具和配置文件以在安装期间配置集群,以及用于在安装后与预配的集群交互的 CLI 工具。

您可以在管理员工作站上下载并运行 bmctl 和 Google Cloud CLI 等工具,以与集群和 Google Cloud 资源进行交互。管理员工作站托管配置文件,以便在安装、升级和更新期间预配集群。安装后,管理员工作站托管 kubeconfig 文件,以便您可以使用 kubectl 与预配集群进行交互。您还可以访问管理员工作站上关键集群操作的日志。 单个管理员工作站可用于创建和管理多个集群。

确保管理员工作站满足以下部分中所述的前提条件。

操作系统和软件

为了运行 bmctl 并充当控制平面节点,管理员工作站具有与节点相同的操作系统 (OS) 要求。管理员工作站需要 Docker,但不能用作容器运行时。当 GKE on Bare Metal 创建集群时,它会在管理员工作站上部署 Docker in Docker(种类)集群。此引导集群托管创建集群所需的 Kubernetes 控制器。除非另行指定,否则当集群创建成功完成时,引导集群将被移除。引导集群需要 Docker 来拉取容器映像。

管理员工作站必须满足以下要求,您才能安装集群:

  • 操作系统是支持的 Linux 发行版。

    如需查看支持的 Linux 操作系统和版本的列表,请参阅选择操作系统。该页面包含每个操作系统的配置说明链接,包括 Docker 配置。

  • 安装了 Docker 19.03 或更高版本。 但是,如果系统使用 cgroup v2,则管理员工作站上安装的 Docker 必须为 20.10.0 版或更高版本。(您可以根据是否存在 /sys/fs/cgroup/cgroup.controllers 文件来判断系统是否使用 cgroup v2)。系统仅支持 cgroup v2 作为预览版功能。我们不建议在生产环境中使用预览版功能。

  • 非根用户是 docker 群组的成员(如需了解相关说明,请转到以非根用户的身份管理 Docker)。

  • 安装了 Google Cloud CLI。

    您可以使用 kubectlbmctl 工具创建和管理集群。如需安装这些工具,您需要 gcloudgsutil 工具。gcloudgsutilkubectl 命令行工具是 gcloud CLI 的组件。如需了解安装说明(包括安装组件的说明),请参阅安装 gcloud CLI

  • 已安装 kubectl。使用 gcloud CLI 通过以下命令安装 kubectl

    gcloud components install kubectl
    
  • 为要创建或操作的集群版本安装 bmctl

    安装包含使用 gsutil 下载 bmctl 二进制文件或映像软件包。如需了解相关说明,请参阅 Anthos Clusters on Bare Metal 下载

硬件资源要求

管理员工作站需要大量计算能力、内存和存储空间来运行工具以及存储与集群创建和管理相关的资源。

默认情况下,集群升级和集群创建操作会使用引导集群。使用引导集群时,CPU 和内存使用量显著增加。如果您打算将管理员工作站用作控制平面节点,请使用至少建议数量的 CPU 和 RAM,以防止管理员工作站活动中断集群控制平面。

根据 etcd 数据库的大小和控制平面节点的数量,集群备份和恢复操作会消耗大量 RAM。备份所需的 RAM 的粗略估计值是每个控制平面节点 3-5 GiB。备份过程失败,因为内存不足。相应地规划您的 RAM 要求。

下表提供了管理员工作站的最低和推荐的硬件要求:

资源 最小值 推荐
CPU/vCPU* 2 核 4 核
RAM Ubuntu:4 GiB
CentOS/RHEL:6 GiB
Ubuntu:8 GiB
CentOS/RHEL:12 GiB
存储 128 GiB 256 GiB

* GKE on Bare Metal 仅支持 CPU 微架构级别 v3 (x86-64-v3) 及更高版本的 x86-64 CPU 和 vCPU。

网络要求

管理员工作站需要访问 Google Cloud 和所有集群节点。

Google Cloud 访问权限

管理员工作站访问 Google Cloud 以下载并安装工具和映像、处理授权请求、创建服务账号、管理日志记录和监控等。如果没有 Google Cloud 访问权限,您将无法创建集群。

您可以直接访问 Google Cloud 或通过代理服务器访问 Google Cloud。如需了解连接到 Google Cloud 的不同方法,请参阅连接到 Google。如需了解如何配置代理服务器,请参阅在代理后面安装

如需了解 Google Cloud 访问中断的后果,请参阅与 Google Cloud 的临时断开连接的影响

节点访问权限

如需从管理员工作站创建和管理集群,您需要以下对节点机器的访问权限:

  • 第 3 层连接所有集群节点机器。
  • 通过 SSH 对所有集群节点机器无密码 root 访问。可以直接或通过 sudo 获得 SSH 访问权限。
  • 控制平面 VIP 访问权限。

IP 转发

必须在管理员工作站上启用 IP 转发。若不启用 IP 转发,就无法创建引导集群,这会阻止创建集群。如果 IP 转发处于停用状态,则您在尝试创建集群时会看到如下错误:

Error message: E0202 14:53:25.979322 225917 console.go:110] Error creating cluster: create kind cluster failed: error creating bootstrap cluster: failed to init node with kubeadm: command "docker exec --privileged bmctl-control-plane kubeadm init --skip-phases=preflight --config=/kind/kubeadm.conf --skip-token-print --v=6" failed with error: exit status 1

您可以使用以下命令检查 IP 转发设置:

cat /proc/sys/net/ipv4/ip_forward

1 表示 IP 转发处于启用状态。如果 IP 转发处于停用状态 (0),请使用以下命令启用它:

echo '1' | sudo tee /proc/sys/net/ipv4/ip_forward

设置对节点的 root SSH 访问

如需启用管理员工作站和集群节点机器之间的安全无密码连接,请在管理员工作站上创建 SSH 密钥并与集群节点共享公钥。

  1. 如需在每台集群节点机器上启用 root SSH 密码身份验证,请取消对 /etc/ssh/sshd_config 文件中的 PermitRootLoginPasswordAuthentication 行的注释或者添加这两行,并将值设置为 yes

    # $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $
    
    # This is the sshd server system-wide configuration file.  See
    # sshd_config(5) for more information.
    
    ...
    
    # Authentication:
    
    #LoginGraceTime 2m
    PermitRootLogin yes
    #StrictModes yes
    #MaxAuthTries 6
    #MaxSessions 10
    
    ...
    
    PasswordAuthentication yes
    

    最开始,您需要在远程集群节点机器上启用 SSH 密钥身份验证,以共享管理员工作站的密钥。

  2. 如需应用 SSH 配置更改,请重启 SSH 服务:

    sudo systemctl restart ssh.service
    
  3. 在管理员工作站上生成私键/公键对。不要为键设置密码。使用以下命令生成这些键:

    ssh-keygen -t rsa
    

    您还可以使用 sudo 用户访问集群节点机器来设置 SSH。但是,对于无密码非根用户连接,您必须使用 spec.nodeAccess.loginUser 字段更新集群配置文件。默认情况下,此字段会被注释掉。您可以在创建集群期间或之后的任何时间使用 loginUser 指定非根用户名。如需了解详情,请参阅 loginUser

  4. 将生成的公钥添加到集群节点机器:

    ssh-copy-id -i PATH_TO_IDENTITY_FILE root@CLUSTER_NODE_IP
    

    替换以下内容:

    • PATH_TO_IDENTITY_FILE:包含 SSH 公钥的文件的路径。默认情况下,包含公钥的身份文件的路径为 /home/USERNAME/.ssh/id_rsa.pub
    • CLUSTER_NODE_IP:要向其中添加 SSH 公钥的节点机器的 IP 地址。
  5. 通过在 sshd_config 文件中将 PasswordAuthentication 设置为 no 并重启 SSH 服务,在集群节点机器上停用 SSH 密码身份验证。

  6. 在管理员工作站上使用以下命令,验证公钥身份验证在工作站和节点机器之间是否有效。

    ssh -o IdentitiesOnly=yes -i PATH_TO_IDENTITY_FILE root@CLUSTER_NODE_IP
    

    正确配置 SSH 后,您可以从管理员工作站(如 root)登录节点机器,而无需输入密码。

后续步骤