etcd 数据库使用率过高可能会导致集群不稳定和资源短缺,从而阻止 Google Kubernetes Engine (GKE) 集群有效伸缩。
本文档介绍了如何识别 etcd 使用量即将达到上限的集群,并提供了有关释放空间的建议,以帮助确保集群保持稳定。
对于负责维护 GKE 集群的健康状况和可伸缩性的平台管理员和运维人员,此信息非常重要。如需详细了解我们在 Google Cloud 内容中提及的常见角色和示例任务,请参阅常见的 GKE 用户角色和任务。
本文档介绍了如何排查与 etcd 使用率过高相关的集群稳定性问题。如果您遇到其他可伸缩性问题,以下文档可能会有所帮助:
集群自动扩缩器问题:
- 如需排查未添加新节点的原因,请参阅排查集群自动伸缩器未扩容问题。
- 如需排查未移除利用率不足的节点的原因,请参阅排查集群自动伸缩器未缩容问题。
Pod 横向自动扩缩器问题:如需排查 Pod 横向自动扩缩器无法正常运行的原因,请参阅排查 Pod 横向自动扩缩问题。
Autopilot 伸缩问题:如需详细了解 Autopilot 特有的问题(包括与伸缩相关的问题),请参阅排查 Autopilot 集群问题。
确定 etcd 使用量即将达到限额的集群
GKE 会针对 etcd 使用量即将达到限额的情况提供分析洞见和建议。您可以通过以下方式查看这些数据分析和建议:
- 使用 Google Cloud 控制台。 前往 Kubernetes 集群页面。在特定集群的通知列中,查看释放空间以降低集群不稳定的风险建议。
使用 gcloud CLI,或者通过指定
ETCD_DB_USAGE_APPROACHING_LIMIT
Recommender 子类型使用 Recommender API。如需查询此建议,请运行以下命令:
gcloud recommender recommendations list \ --recommender=google.container.DiagnosisRecommender \ --location=LOCATION \ --project=PROJECT_ID \ --format=yaml \ --filter="recommenderSubtype:ETCD_DB_USAGE_APPROACHING_LIMIT"
如需实现此建议,请从 etcd 中移除所有不必要的数据,以释放空间。这可能涉及删除旧资源或将大型对象移出 etcd。如需了解详情,请参阅规划大型 GKE 集群。
确定每个对象类型的存储空间用量即将达到限额的集群
如果每种类型的 etcd 对象的总大小接近限制,GKE 会提供相关分析洞见和建议。您可以通过以下方式查看这些数据分析和建议:
- 使用 Google Cloud 控制台。 前往 Kubernetes 集群页面。在特定集群的通知列中,查看缩减资源类型的大小建议。
使用 gcloud CLI,或者通过指定
APISERVER_RESOURCE_TYPE_SIZE_EXCEEDS_LIMIT
Recommender 子类型使用 Recommender API。如需查询此建议,请运行以下命令:
gcloud recommender recommendations list \ --recommender=google.container.DiagnosisRecommender \ --location=LOCATION \ --project=PROJECT_ID \ --format=yaml \ --filter="recommenderSubtype:APISERVER_RESOURCE_TYPE_SIZE_EXCEEDS_LIMIT"
如需确定要移除哪些对象,您可以使用 kubectl 列出这些对象。例如,如果 ConfigMap 即将达到存储空间上限,以下命令将输出所有命名空间中的所有 ConfigMap,帮助您确定要删除的对象:
kubectl get configmaps --all-namespaces > new_file.txt
如需实施此建议并释放空间,请从存储空间中移除指定类型的任何不必要的对象。此过程可能涉及删除旧资源或将大型对象移出存储空间。如需了解详情,请参阅规划大型 GKE 集群。
后续步骤
如果您在文档中找不到问题的解决方案,请参阅获取支持以获取进一步的帮助,包括以下主题的建议:
- 请与 Cloud Customer Care 联系,以提交支持请求。
- 通过在 StackOverflow 上提问并使用
google-kubernetes-engine
标记搜索类似问题,从社区获得支持。您还可以加入#kubernetes-engine
Slack 频道,以获得更多社区支持。 - 使用公开问题跟踪器提交 bug 或功能请求。