本文档介绍了如何在 Google Distributed Cloud (GDC) 网闸隔离可用区中创建标准 Kubernetes 集群。标准集群提供项目级、高度可配置的 Kubernetes 集群,其中包含最少的托管式服务。与共享集群相比,标准集群在服务配置方面提供了更大的灵活性,但也需要更多的管理开销。如需详细了解标准集群,请参阅 Kubernetes 集群配置。
Standard 集群是可用区级资源,不能跨多个可用区。如需在多可用区 Universe 中操作集群,您必须在每个可用区中手动创建集群。
本文档适用于应用运维人员群组中的应用开发者等受众群体,他们负责管理其组织内的容器工作负载。如需了解详情,请参阅适用于 GDC 网闸隔离配置文档的受众群体。
准备工作
如需创建标准集群,请请求必要的权限并准备环境。
申请 IAM 角色
请联系您的 IAM 组织管理员,让其为您授予以下角色:
- IAM Project Admin (
project-iam-admin):向其他用户授予在标准集群中管理访问权限所需的角色。 - Standard Cluster Admin (
standard-cluster-admin):在项目中创建 Standard 集群。
这些角色会绑定到您的项目命名空间。
准备环境
- 验证您是否具有访问和管理标准集群的适当设置。如需了解详情,请参阅管理对标准集群的访问权限。
- 生成可用区级 API 服务器的 kubeconfig 文件,以托管您的集群。
将环境变量
MANAGEMENT_API_SERVER设置为 kubeconfig 路径。如需了解详情,请参阅可用区级 Management API 服务器资源。 - 查看集群限制,了解资源注意事项。
规划 Pod CIDR 块
如需为工作负载分配适当大小的 Pod CIDR 块,您必须在创建 Kubernetes 集群之前计算该集群所需的 IP 地址数量。创建集群后,大多数网络参数都无法更改。
Kubernetes 集群在分配 IP 地址时遵循以下逻辑:
- Kubernetes 会为每个节点分配一个由 256 个地址组成的
/24CIDR 块。此数量遵循 Kubernetes 集群每个节点最多 110 个 Pod 的默认上限。 - 分配给节点的 CIDR 块的大小取决于每个节点的 Pod 数上限值。
- 该地址块包含的地址数量始终至少是每个节点的 Pod 数上限的两倍。
请参阅以下示例,了解如何计算默认值每个节点掩码大小= /24 以容纳 110 个 Pod:
Maximum pods per node = 110
Total number of IP addresses required = 2 * 110 = 220
Per node mask size = /24
Number of IP addresses in a /24 = 2(32 - 24) = 256
根据所需的节点数量,确定要为 Kubernetes 集群配置的所需 Pod CIDR 掩码。在配置 CIDR 范围时,请规划未来向集群添加节点:
Total number of nodes supported = 2(Per node mask size - pod CIDR mask)
假设默认每个节点的掩码大小= /24,请参阅下表,其中将 Pod CIDR 掩码映射到支持的节点数。
| Pod CIDR 掩码 | 计算:2(每个节点的掩码大小 - CIDR 掩码) | 支持的节点数上限(包括控制平面节点) |
|---|---|---|
| /21 | 2(24 - 21) | 8 |
| /20 | 2(24-20) | 16 |
| /19 | 2(24 - 19) | 32 |
| /18 | 2(24 - 18) | 64 |
计算 Kubernetes 集群的 Pod CIDR 块后,请在下一部分中将其配置为集群创建工作流的一部分。
创建标准集群
如需创建标准集群,请完成以下步骤:
控制台
在项目选择器中,选择您的项目。
Standard 集群是项目级资源。如果您改为选择组织,则会创建一个共享集群,该集群的作用域为组织。如需了解详情,请参阅资源层次结构。
在导航菜单中,依次选择 Kubernetes Engine > 集群。
点击创建集群。
在名称字段中,指定集群的名称。
选择要在其中创建集群的可用区。
选择集群的 Kubernetes 版本。
点击下一步。
为集群配置投放网络设置。创建集群后,您将无法更改这些投放网络设置。Kubernetes 集群默认且唯一支持的互联网协议是互联网协议版本 4 (IPv4)。
如果您想创建专用负载均衡器节点,请输入要创建的节点数。默认情况下,您会收到零个节点,并且负载均衡器流量会通过控制平面节点运行。
选择要使用的服务 CIDR(无类别域间路由)。系统会从此范围为已部署的服务(例如负载均衡器)分配 IP 地址。
选择要使用的 Pod CIDR。集群会从此范围中为您的 Pod 和虚拟机分配 IP 地址。
点击下一步。
查看为集群自动生成的默认节点池的详细信息。点击 edit 修改以修改默认节点池。
如需创建其他节点池,请选择添加节点池。修改默认节点池或添加新节点池时,您可以使用以下选项对其进行自定义:
- 为节点池分配名称。创建节点池后,您将无法修改名称。
- 指定要在节点池中创建的工作器节点数。
选择最符合您工作负载要求的机器类别。查看以下设置列表:
- 机器类型
- CPU
- 内存
点击保存。
点击创建以创建集群。
标准集群创建过程最多可能需要 60 分钟才能完成。
API
创建
Cluster自定义资源并将其保存为 YAML 文件,例如cluster.yaml:apiVersion: cluster.gdc.goog/v1 kind: Cluster metadata: name: CLUSTER_NAME namespace: PROJECT_NAME spec: clusterNetwork: podCIDRSize: POD_CIDR serviceCIDRSize: SERVICE_CIDR initialVersion: kubernetesVersion: KUBERNETES_VERSION nodePools: - machineTypeName: MACHINE_TYPE name: NODE_POOL_NAME nodeCount: NUMBER_OF_WORKER_NODES taints: TAINTS labels: LABELS acceleratorOptions: gpuPartitionScheme: GPU_PARTITION_SCHEME releaseChannel: channel: UNSPECIFIED替换以下内容:
CLUSTER_NAME:集群的名称。集群名称不得以-system结尾。-system后缀预留给 GDC 创建的集群。PROJECT_NAME:要在其中创建集群的项目的名称。POD_CIDR:分配 Pod 虚拟 IP 地址的网络范围的大小。如果未设置,则使用默认值21。SERVICE_CIDR:分配服务虚拟 IP 地址的网络范围的大小。如果未设置,则使用默认值23。KUBERNETES_VERSION:集群的 Kubernetes 版本,例如1.26.5-gke.2100。如需列出可供配置的 Kubernetes 版本,请参阅列出集群可用的 Kubernetes 版本。MACHINE_TYPE:节点池的工作器节点的机器类型。查看可用的机器类型,了解可配置的类型。NODE_POOL_NAME:节点池的名称。NUMBER_OF_WORKER_NODES:要在节点池中预配的工作器节点数。TAINTS:要应用于此节点池的节点的污点。此为可选字段。LABELS:要应用于此节点池的节点的标签。它包含一个键值对列表。此为可选字段。GPU_PARTITION_SCHEME:GPU 分区方案(如果您运行的是 GPU 工作负载)。此为可选字段。 例如mixed-2。如果未设置此字段,则不会对 GPU 进行分区。如需详细了解可用的多实例 GPU (MIG) 配置文件,请参阅支持的 MIG 配置文件。
将自定义资源应用于 GDC 实例:
kubectl apply -f cluster.yaml --kubeconfig MANAGEMENT_API_SERVER将
MANAGEMENT_API_SERVER替换为可用区级 API 服务器的 kubeconfig 路径。如果您尚未为目标可用区中的 API 服务器生成 kubeconfig 文件,请参阅登录。
标准集群创建过程最多可能需要 60 分钟才能完成。
Terraform
在 Terraform 配置文件中,插入以下代码段:
provider "kubernetes" { config_path = "MANAGEMENT_API_SERVER" } resource "kubernetes_manifest" "cluster-create" { manifest = { "apiVersion" = "cluster.gdc.goog/v1" "kind" = "Cluster" "metadata" = { "name" = "CLUSTER_NAME" "namespace" = "PROJECT_NAME" } "spec" = { "clusterNetwork" = { "podCIDRSize" = "POD_CIDR" "serviceCIDRSize" = "SERVICE_CIDR" } "initialVersion" = { "kubernetesVersion" = "KUBERNETES_VERSION" } "nodePools" = [{ "machineTypeName" = "MACHINE_TYPE" "name" = "NODE_POOL_NAME" "nodeCount" = "NUMBER_OF_WORKER_NODES" "taints" = "TAINTS" "labels" = "LABELS" "acceleratorOptions" = { "gpuPartitionScheme" = "GPU_PARTITION_SCHEME" } }] "releaseChannel" = { "channel" = "UNSPECIFIED" } } } }替换以下内容:
MANAGEMENT_API_SERVER:可用区级 API 服务器的 kubeconfig 路径。如果您尚未为目标可用区中的 API 服务器生成 kubeconfig 文件,请参阅登录。CLUSTER_NAME:集群的名称。集群名称不得以-system结尾。-system后缀预留给 GDC 创建的集群。PROJECT_NAME:要在其中创建集群的项目的名称。POD_CIDR:分配 Pod 虚拟 IP 地址的网络范围的大小。如果未设置,则使用默认值21。SERVICE_CIDR:分配服务虚拟 IP 地址的网络范围的大小。如果未设置,则使用默认值23。KUBERNETES_VERSION:集群的 Kubernetes 版本,例如1.26.5-gke.2100。如需列出可供配置的 Kubernetes 版本,请参阅列出集群可用的 Kubernetes 版本。MACHINE_TYPE:节点池的工作器节点的机器类型。查看可用的机器类型,了解可配置的类型。NODE_POOL_NAME:节点池的名称。NUMBER_OF_WORKER_NODES:要在节点池中预配的工作器节点数。TAINTS:要应用于此节点池的节点的污点。此为可选字段。LABELS:要应用于此节点池的节点的标签。它包含一个键值对列表。此为可选字段。GPU_PARTITION_SCHEME:GPU 分区方案(如果您运行的是 GPU 工作负载)。此为可选字段。 例如mixed-2。如果未设置此字段,则不会对 GPU 进行分区。如需详细了解可用的多实例 GPU (MIG) 配置文件,请参阅支持的 MIG 配置文件。
使用 Terraform 应用新的标准集群:
terraform apply
标准集群创建过程最多可能需要 60 分钟才能完成。