在 Google Distributed Cloud 中,用户集群运行您的工作负载,而在多集群架构中,用户集群由管理员集群创建和管理。
创建管理员集群后,调用 bmctl create config
命令可创建一个 YAML 文件,您可以修改该文件以定义用户集群。如需应用配置并创建用户集群,请使用 bmctl create cluster
命令。预检检查适用于使用 bmctl create cluster
命令创建的用户集群。
从管理员集群卸载工作负载可以保护敏感的管理数据(例如存储在管理员集群中的 SSH 密钥),避免无需访问这些信息的人员访问它。此外,让用户集群彼此隔离有助于为您的工作负载提供良好的通用安全性。
前提条件
- 从 Cloud Storage 下载了最新的
bmctl
(gs://anthos-baremetal-release/bmctl/1.30.100-gke.96/linux-amd64/bmctl
)。 - 通过对与集群 API 服务器 (
controlPlaneVIP
) 的访问权限使用管理员集群。 - 管理员集群节点与目标用户集群上的所有节点之间有网络连接。
- 运行
bmctl
的工作站与目标用户集群中的所有节点之间有网络连接。 - 管理员工作站可以与每个用户集群节点建立 SSH 连接。
- 在管理员集群上配置了连接注册服务账号,以便与 Connect 搭配使用。
启用 SELinux
如果要启用 SELinux 来保护容器,则必须确保在所有宿主机上以 Enforced
模式启用 SELinux。从 Google Distributed Cloud 1.9.0 版或更高版本开始,您可以在创建集群或升级集群之前或之后启用或停用 SELinux。Red Hat Enterprise Linux (RHEL) 上默认启用 SELinux。如果宿主机上停用了 SELinux,或者不确定,请参阅使用 SELinux 保护容器,了解如何启用 SELinux。
Google Distributed Cloud 仅支持 RHEL 系统中的 SELinux。
创建用户集群配置文件
用于创建用户集群的配置文件与用于创建管理员集群的配置文件几乎相同。唯一的区别是需移除本地凭据配置部分,使配置成为有效的 Kubernetes 资源集合。配置部分位于文件顶部的 bmctl configuration variables
部分下方。 如需查看用户集群配置示例,请参阅集群配置示例中的用户集群。
默认情况下,用户集群会从管理它们的管理员集群继承其凭据。您可以选择性地替换这些凭据的部分或全部。
使用
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
。修改配置文件,并进行以下更改:
从配置中移除本地凭据文件路径:
...
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 ...
- 您可以选择向集群规范添加
gkeConnect.location
,以指定 Fleet 服务和 Connect 服务运行的 Google Cloud 区域。此区域性成员资格会将舰队服务流量限制在您的区域。如果您在集群规范中添加gkeConnect.location
,则您指定的区域必须与clusterOperations.location
中配置的区域相同。如果区域不相同,集群创建将失败。
- 您可以选择向集群规范添加
如果在 Google Cloud 项目中启用了 GKE On-Prem API,则项目中的所有集群会在
clusterOperations.location
中配置的区域中自动注册 GKE On-Prem API。指定控制平面节点的 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
用户集群配置示例
如需查看用户集群配置示例,请参阅集群配置示例中的用户集群。