自动修复节点


本页介绍了节点自动修复功能的运作方式,以及如何对标准 Google Kubernetes Engine (GKE) 集群使用该功能。

节点自动修复有助于将 GKE 集群中的节点保持在正常运行状态。启用该功能后,GKE 会定期检查集群中每个节点的运行状况。如果某个节点在较长时间内连续多次无法通过健康检查,则 GKE 会为该节点启动修复流程。

Autopilot 与 Standard 的设置

Autopilot 集群始终自动修复节点。您无法停用此设置。

在 Standard 集群中,系统会默认为新节点池启用节点自动修复功能。您可以为现有节点池停用自动修复,但我们建议您保留默认配置。

修复标准

GKE 会根据节点的运行状况来确定是否需要修复节点。报告 Ready 状态的节点被视为运行状况良好。如果某节点在给定时间阈值内持续报告运行状况不佳,则 GKE 会触发修复操作。 运行状况不佳可能意味着以下情况:

  • 在给定时间阈值(大约 10 分钟)内,节点对多次连续检查均报告 NotReady 状态。
  • 在给定的时间阈值(大约 10 分钟)内,节点始终未报告任何状态。
  • 节点的启动磁盘在很长一段时间(大约 30 分钟)内处于空间不足的状态。

您可以随时使用 kubectl get nodes 命令手动检查节点的健康信号。

节点修复流程

如果 GKE 检测到某节点需要修复,则该节点将被排空并重新创建。GKE 将等待一小时,直到排空完成。如果排空未完成,则系统会关闭该节点并创建新节点。

如果多个节点需要修复,GKE 可能会并行修复这些节点。GKE 会根据集群的大小和损坏节点的数量均衡修复次数。GKE 会在较大的集群上并行修复更多节点,但随着非正常节点数量的增加,GKE 将减少并行修复的节点。

如果您在修复流程的任何时候停用节点自动修复功能,那么正在进行的修复不会被取消,并且正在修复的任何节点会继续进行修复

节点修复历史记录

GKE 会为自动修复事件生成日志条目。您可以通过运行以下命令来检查日志:

gcloud container operations list

TPU 切片节点中的节点自动修复

如果多主机 TPU 切片节点池中的 TPU 切片节点运行状况不佳且需要自动修复,系统会重新创建整个节点池。如需详细了解 TPU 切片节点状态,请参阅 TPU 切片节点自动修复

为现有 Standard 节点池启用自动修复功能

您可以按节点池启用节点自动修复。

如果对 Standard 集群中的现有节点池停用了自动修复功能,请按照以下说明启用它:

gcloud

gcloud container node-pools update POOL_NAME \
    --cluster CLUSTER_NAME \
    --region=COMPUTE_REGION \
    --enable-autorepair

替换以下内容:

  • POOL_NAME:节点池的名称。
  • CLUSTER_NAME:标准集群的名称。
  • COMPUTE_REGION:集群的 Compute Engine 区域。对于区域级集群,请使用 --zone COMPUTE_ZONE 选项。

控制台

  1. 转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。

    前往 Google Kubernetes Engine

  2. 在集群列表中,点击您要修改的集群的名称。

  3. 点击节点标签页。

  4. 节点池下,点击要修改的节点池的名称。

  5. 节点池详情页面中,点击 修改

  6. 管理下,选中启用自动修复复选框。

  7. 点击保存

验证是否已为 Standard 节点池启用了节点自动修复功能

节点自动修复功能以节点池为单位启用。您可以使用 Google Cloud CLI 或 Google Cloud 控制台验证集群中的节点池启用了节点自动修复。

gcloud

描述节点池:

gcloud container node-pools describe NODE_POOL_NAME \
--cluster=CLUSTER_NAME

如果启用了节点自动修复,则该命令的输出将包括以下行:

management:
  ...
  autoRepair: true

控制台

  1. 转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。

    进入 Google Kubernetes Engine

  2. Google Kubernetes Engine 页面上,点击要检查的节点池的集群的名称。

  3. 点击节点标签页。

  4. 节点池下,点击要检查的节点池的名称。

  5. 管理部分的自动修复字段中,验证启用了自动修复。

停用节点自动修复功能

您可以使用 gcloud CLI 或 Google Cloud 控制台为 Standard 集群中的现有节点池停用节点自动修复功能。

gcloud

gcloud container node-pools update POOL_NAME \
    --cluster CLUSTER_NAME \
    --region=COMPUTE_REGION \
    --no-enable-autorepair

替换以下内容:

  • POOL_NAME:节点池的名称。
  • CLUSTER_NAME:标准集群的名称。
  • COMPUTE_REGION:集群的 Compute Engine 区域。对于区域级集群,请使用 --zone COMPUTE_ZONE 选项。

控制台

  1. 转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。

    前往 Google Kubernetes Engine

  2. 在集群列表中,点击您要修改的集群的名称。

  3. 点击节点标签页。

  4. 节点池下,点击要修改的节点池的名称。

  5. 节点池详情页面中,点击 修改

  6. 管理下,取消选中启用自动修复复选框。

  7. 点击保存

后续步骤