Google Distributed Cloud air-gapped appliance (GDC) 可让您在创建 Kubernetes 集群后对其进行管理,以便适应不断变化的容器工作负载要求。
执行节点维护
如果您需要修复或维护节点,请先将节点置于维护模式。将节点置于维护模式会安全地排空其 pod/工作负载,并将节点排除在 pod 调度外。在维护模式下,您可以在节点上运行,而不会有中断 Pod 流量的风险。
工作原理
GDC 的维护模式类似于为特定节点运行 kubectl
cordon 和 kubectl drain。以下是与维护模式相关的一些详细信息:
- 指定的节点会被标记为无法安排。此操作是
kubectl cordon的功能。 - 节点污点会被添加到指定节点,以指示在这些节点上无法安排或执行任何 Pod。此操作类似于
kubectl drain。 - 系统会强制执行 20 分钟的超时,以确保节点不会因等待 Pod 终止而停滞。如果 Pod 被配置为容忍所有污点或具有终结器,则其可能不会终止。GDC 集群会尝试终止所有 Pod,但如果超时,节点将进入维护模式。此超时可防止正在运行的 Pod 阻止升级。
- 如果您在节点上运行基于虚拟机的工作负载,则 GDC 集群会将
NodeSelector应用于虚拟机实例 (VMI) pod,然后停止该 pod。NodeSelector可确保从维护模式中移除节点时,VMI Pod 在同一节点上重启。
将节点置于维护模式
在集群配置文件的 maintenanceBlocks 部分中,通过为所选节点指定 IP 地址范围,选择要置于维护模式的节点。您选择的节点必须处于 Ready 状态,且在集群中正常运行。
如需将节点置于维护模式,请执行以下操作:
修改集群配置文件以选择要置于维护模式的节点。
您可以使用自己选择的编辑器修改配置文件,也可以运行以下命令直接修改集群自定义资源:
kubectl -n CLUSTER_NAMESPACE edit cluster CLUSTER_NAME替换以下内容:
- CLUSTER_NAMESPACE:集群的命名空间。
- CLUSTER_NAME:集群的名称。
将
maintenanceBlocks部分添加到集群配置文件,以指定要置于维护模式的节点的单个 IP 地址或地址范围。以下示例展示了如何通过指定 IP 地址范围来选择多个节点:
... metadata: name: my-cluster namespace: cluster-my-cluster spec: maintenanceBlocks: cidrBlocks: - 172.16.128.1-172.16.128.64 ...保存并应用更新后的集群配置:
kubectl apply -f my-cluster.yaml应用集群配置后,集群会将适用的节点置于维护模式。
运行以下命令以获取集群中节点的状态:
kubectl get nodes -n CLUSTER_NAME响应如下所示:
NAME STATUS ROLES AGE VERSION user-gdch-01 Ready master 2d22h v1.23.5-gke.1502 user-gdch-04 Ready none 2d22h v1.23.5-gke.1502 user-gdch-05 Ready,SchedulingDisabled none 2d22h v1.23.5-gke.1502 user-gdch-06 Ready none 2d22h v1.23.5-gke.1502状态为
SchedulingDisabled表示节点处于维护模式。运行以下命令以获取维护模式下的节点数:
kubectl get nodepools响应类似于以下输出:
NAME READY RECONCILING STALLED UNDERMAINTENANCE UNKNOWN np1 3 0 0 1 0此示例中的
UNDERMAINTENANCE列显示了一个节点处于维护模式。集群在进入维护模式时,还会将以下污点添加到节点:
baremetal.cluster.gke.io/maintenance:NoExecutebaremetal.cluster.gke.io/maintenance:NoSchedule
调整节点池的大小
GDC 环境中的任何用户集群都可以调整节点池的大小,以随工作负载的变化而扩缩。如需管理用户集群中的节点池,您必须拥有 User Cluster Admin (user-cluster-admin) 角色。
如需扩缩现有集群中的节点池,请完成以下步骤:
控制台
- 在信息中心内,选择要修改的集群所在的项目。
- 在导航菜单中,选择集群。
- 选择节点池关联的集群名称。系统会显示集群详情页面。
- 点击节点池标签页。
- 选择要调整大小的节点池对应的edit 修改图标。系统会显示修改节点池提示。
更新节点数字段,以反映节点池中所需的新节点数量。您可以根据工作负载要求增加或减少节点数量。
点击保存。
返回到集群的节点池标签页,确认调整大小后的节点池处于
Ready状态,并且节点数量正确。节点池可能需要几分钟时间才能扩缩到您指定的规模。
API
使用
kubectlCLI 通过交互式编辑器打开Cluster自定义资源规范:kubectl edit clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \ --kubeconfig ORG_ADMIN_CLUSTER_KUBECONFIG更新要调整大小的节点池的
nodeCount字段:nodePools: ... - machineTypeName: n2-standard-2-gdc name: nodepool-1 nodeCount: NUMBER_OF_WORKER_NODES将
NUMBER_OF_WORKER_NODES替换为要在节点池中预配的更新后的工作器节点数量。保存文件并退出编辑器。
通过检查节点池的配置,验证节点伸缩是否已完成:
kubectl get clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform -o json \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG | jq .status.workerNodePoolStatuses确认
readyNodes数量反映了您为节点池设置的节点数量。节点池可能需要几分钟时间才能扩缩到您指定的规模。
查看组织中的所有集群
您可以查看组织中的所有可用用户集群,包括其状态、Kubernetes 版本和其他详细信息。
控制台
在导航菜单中,选择集群。
系统会显示组织中的所有可用集群及其状态和其他信息:

kubectl
列出组织中的可用用户集群:
kubectl get clusters.cluster.gdc.goog -n platform \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG输出类似于以下内容:
NAME STATE K8S VERSION user-vm-1 Running 1.25.10-gke.2100 user-test Running 1.26.5-gke.2100
查看可更新的属性
对于每个用户集群,创建后都可以更改一组属性。您只能更改 Cluster 自定义资源的 spec 中可变的属性。并非 spec 中的所有属性都可以在集群配置完毕后进行更新。如需查看这些可更新的属性,请完成以下步骤:
控制台
在导航菜单中,选择集群。
在用户集群列表中,点击集群名称以查看其属性。
可修改的属性带有edit 修改图标。
kubectl
查看
Cluster规范的属性列表以及与每个属性对应的有效值:kubectl explain clusters.cluster.gdc.goog.spec \ --kubeconfig ORG_ADMIN_CLUSTER_KUBECONFIG输出类似于以下内容:
KIND: Cluster VERSION: cluster.gdc.goog/v1 RESOURCE: spec <Object> DESCRIPTION: <empty> FIELDS: clusterNetwork <Object> The cluster network configuration. If unset, the default configurations with pod and service CIDR sizes are used. Optional. Mutable. initialVersion <Object> The GDCH version information of the user cluster during cluster creation. Optional. Default to use the latest applicable version. Immutable. loadBalancer <Object> The load balancer configuration. If unset, the default configuration with the ingress service IP address size is used. Optional. Mutable. nodePools <[]Object> The list of node pools for the cluster worker nodes. Optional. Mutable. releaseChannel <Object> The release channel a cluster is subscribed to. When a cluster is subscribed to a release channel, GDCH maintains the cluster versions for users. Optional. Mutable.您可以使用 GDC 控制台或
kubectlCLI 更新这些设置。例如,您可以调整节点池的大小。
扩展 Ingress 服务 IP 地址大小
您可以在创建用户集群后扩缩 Ingress 服务 IP 地址大小。
使用
kubectlCLI 通过交互式编辑器打开Cluster自定义资源规范:kubectl edit clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG将
ingressServiceIPSize字段更新为新的 IP 地址大小:... spec: ... loadBalancer: ingressServiceIPSize: INGRESS_SERVICE_IP_SIZE ...将
INGRESS_SERVICE_IP_SIZE替换为更新后的入口服务 IP 地址大小。保存文件并退出编辑器。
入口服务 IP 地址大小没有设置限制。系统会根据您的组织满足您请求的 IP 地址数量。如果无法满足请求,集群会报告错误。