本页介绍了节点自动修复功能的运作方式,以及如何对标准 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
选项。
控制台
转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。
在集群列表中,点击您要修改的集群的名称。
点击节点标签页。
在节点池下,点击要修改的节点池的名称。
在节点池详情页面中,点击 edit 修改。
在管理下,选中启用自动修复复选框。
点击保存。
验证是否已为 Standard 节点池启用了节点自动修复功能
节点自动修复功能以节点池为单位启用。您可以使用 Google Cloud CLI 或 Google Cloud 控制台验证集群中的节点池启用了节点自动修复。
gcloud
描述节点池:
gcloud container node-pools describe NODE_POOL_NAME \
--cluster=CLUSTER_NAME
如果启用了节点自动修复,则该命令的输出将包括以下行:
management:
...
autoRepair: true
控制台
转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。
在 Google Kubernetes Engine 页面上,点击要检查的节点池的集群的名称。
点击节点标签页。
在节点池下,点击要检查的节点池的名称。
在管理部分的自动修复字段中,验证启用了自动修复。
停用节点自动修复功能
您可以使用 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
选项。
控制台
转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。
在集群列表中,点击您要修改的集群的名称。
点击节点标签页。
在节点池下,点击要修改的节点池的名称。
在节点池详情页面中,点击 edit 修改。
在管理下,取消选中启用自动修复复选框。
点击保存。