创建用户集群

在 GKE on Bare Metal 中,用户集群运行您的工作负载,而在多集群架构中,用户集群由管理员集群创建和管理。

创建管理员集群后,调用 bmctl create config 命令可创建一个 YAML 文件,您可以修改该文件以定义用户集群。如需应用配置并创建用户集群,请使用 bmctl create cluster 命令。预检检查适用于使用 bmctl create cluster 命令创建的用户集群。

从管理员集群卸载工作负载可以保护敏感的管理数据(例如存储在管理员集群中的 SSH 密钥),避免无需访问这些信息的人员访问它。此外,让用户集群彼此隔离有助于为您的工作负载提供良好的通用安全性。

前提条件

  • 从 Cloud Storage 下载了最新的 bmctl (gs://anthos-baremetal-release/bmctl/1.14.11/linux-amd64/bmctl)。
  • 通过对与集群 API 服务器 (controlPlaneVIP) 的访问权限使用管理员集群。
  • 管理员集群节点与目标用户集群上的所有节点之间有网络连接。
  • 运行 bmctl 的工作站与目标用户集群中的所有节点之间有网络连接。
  • 管理员工作站可以与每个用户集群节点建立 SSH 连接。
  • 在管理员集群上配置了连接注册服务账号,以便与 Connect 搭配使用。

启用 SELinux

如果要启用 SELinux 来保护容器,则必须确保在所有宿主机上以 Enforced 模式启用 SELinux。从 GKE on Bare Metal 1.9.0 版或更高版本开始,您可以在创建集群或升级集群之前或之后启用或停用 SELinux。Red Hat Enterprise Linux (RHEL) 和 CentOS 上默认启用 SELinux。如果宿主机上停用了 SELinux,或者不确定,请参阅使用 SELinux 保护容器,了解如何启用 SELinux。

GKE on Bare Metal 仅支持 RHEL 和 CentOS 系统中的 SELinux。

创建用户集群配置文件

用于创建用户集群的配置文件与用于创建管理员集群的配置文件几乎相同。唯一的区别是需移除本地凭据配置部分,使配置成为有效的 Kubernetes 资源集合。配置部分位于文件顶部的 bmctl configuration variables 部分下方。 如需查看用户集群配置示例,请参阅集群配置示例中的用户集群

默认情况下,用户集群会从管理它们的管理员集群继承其凭据。您可以选择性地替换这些凭据的部分或全部。

  1. 使用 bmctl create config 命令创建用户集群配置文件:

    bmctl create config -c USER_CLUSTER_NAME
    

    例如,发出以下命令来为 user1 用户集群创建配置文件:

    bmctl create config -c user1
    

    该文件将写入 bmctl-workspace/user1/user1.yaml。该文件的通用路径为 bmctl-workspace/CLUSTER NAME/CLUSTER_NAME.yaml

  2. 修改配置文件,并进行以下更改:

    • 从配置中移除本地凭据文件路径:

      ...
        gcrKeyPath: (path to GCR service account key)
        sshPrivateKeyPath: (path to SSH private key, used for node access)
        gkeConnectAgentServiceAccountKeyPath: (path to Connect agent service account key)
        gkeConnectRegisterServiceAccountKeyPath: (path to Hub registration service account key)
        cloudOperationsServiceAccountKeyPath: (path to Cloud Operations service account key)
      ...
      
    • 更改配置以指定 user 集群类型而不是 admin

      ...
      spec:
        # Cluster type. This can be:
        #   1) admin:  to create an admin cluster. This can later be used to create
        #   user clusters.
        #   2) user:   to create a user cluster. Requires an existing admin cluster.
        #   3) hybrid: to create a hybrid cluster that runs admin cluster
        #   components and user workloads.
        #   4) standalone: to create a cluster that manages itself, runs user
        #   workloads, but does not manage other clusters.
        type: user
      ...
      
    • 通过在 gkeConnect.projectID 字段中指定项目 ID,将集群注册到集舰队。此项目即为舰队宿主项目

      ...
      gkeConnect:
         projectID: my-project-123
      ...
      
    • 指定控制平面节点的 IP 地址。

      ...
      # Sample control plane config
      controlPlane:
       nodePoolSpec:
         nodes:
         - address: 10.200.0.20
      ...
      
    • 确保负载均衡器 VIP 和地址池的管理员和用户集群规范互为补充,并且不会与现有集群重叠。下面显示了管理员和用户集群配置对的示例,其中指定了负载均衡和地址池:

      ...
      # Sample admin cluster config for load balancer and address pools
        loadBalancer:
          vips:
            controlPlaneVIP: 10.200.0.49
            ingressVIP: 10.200.0.50
          addressPools:
          - name: pool1
            addresses:
            - 10.200.0.50-10.200.0.70
      ...
      ...
      # Sample user cluster config for load balancer and address pools
      loadBalancer:
          vips:
            controlPlaneVIP: 10.200.0.71
            ingressVIP: 10.200.0.72
          addressPools:
          - name: pool1
            addresses:
            - 10.200.0.72-10.200.0.90
      ...
      

      用户集群配置文件的其余部分与管理员集群配置相同。

    • 指定集群节点的 pod 密度:

      ...
      # NodeConfig specifies the configuration that applies to all nodes in the cluster.
      nodeConfig:
        # podDensity specifies the pod density configuration.
        podDensity:
          # maxPodsPerNode specifies at most how many pods can be run on a single node.
          maxPodsPerNode: 110
      ...
      

      对于用户集群,maxPodsPerNode 的允许值为 32-250。如果未指定,则默认值为 110。集群创建后,此值无法更新。

      pod 密度也受集群的可用 IP 资源的限制。如需了解详情,请参阅 pod 网络

创建用户集群

发出 bmctl 命令应用用户集群配置并创建集群:

bmctl create cluster -c USER_CLUSTER_NAME --kubeconfig ADMIN_KUBECONFIG

替换以下内容:

  • USER_CLUSTER_NAME:在上一部分中创建的集群名称。
  • ADMIN_KUBECONFIG:管理员集群 kubeconfig 文件的路径。

例如,对于名为 user1 的用户集群和路径为 kubeconfig bmctl-workspace/admin/admin-kubeconfig 的管理员集群 kubeconfig 文件,命令如下:

bmctl create cluster -c user1 --kubeconfig bmctl-workspace/admin/admin-kubeconfig

用户集群配置示例

如需查看用户集群配置示例,请参阅集群配置示例中的用户集群