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:NoExecute
baremetal.cluster.gke.io/maintenance:NoSchedule
调整节点池的大小
GDC 环境中的任何用户集群都可以调整节点池的大小,以随工作负载的变化而扩缩。如需管理用户集群中的节点池,您必须拥有 User Cluster Admin (user-cluster-admin
) 角色。
如需扩缩现有集群中的节点池,请完成以下步骤:
控制台
- 在信息中心内,选择要修改的集群所在的项目。
- 在导航菜单中,选择集群。
- 选择节点池关联的集群名称。系统会显示集群详情页面。
- 点击节点池标签页。
- 选择要调整大小的节点池对应的edit 修改图标。系统会显示修改节点池提示。
更新节点数字段,以反映节点池中所需的新节点数量。您可以根据工作负载要求增加或减少节点数量。
点击保存。
返回到集群的节点池标签页,确认调整大小后的节点池处于
Ready
状态,并且节点数量正确。节点池可能需要几分钟时间才能扩缩到您指定的规模。
API
使用
kubectl
CLI 通过交互式编辑器打开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 控制台或
kubectl
CLI 更新这些设置。例如,您可以调整节点池的大小。
扩展 Ingress 服务 IP 地址大小
您可以在创建用户集群后扩缩 Ingress 服务 IP 地址大小。
使用
kubectl
CLI 通过交互式编辑器打开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 地址数量。如果无法满足请求,集群会报告错误。