mcpField
G
gke-reliability

gke-reliability

github.com/googlecloudplatform云与 DevOps16949 次安装3 天前更新
代码仓库

关于 gke-reliability

gke-reliability 为 GKE 集群和工作负载提供高可用与可靠性配置流程,面向负责生产环境的运维人员。内容包括跨区域分布、探针、优雅关闭和维护窗口等检查与配置。

主要功能

  1. 01检查集群区域与节点分布
  2. 02配置 Pod 中断预算
  3. 03检查容器健康探针
  4. 04设置拓扑分布与维护窗口

适用场景

  1. 01减少节点升级期间的服务中断
  2. 02检查生产工作负载的健康探针
  3. 03安排 GKE 自动升级时段

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/googlecloudplatform/gke-mcp --skill gke-reliability

安装后在 Claude Code 中输入/gke-reliability确认已加载。

详细介绍

GKE 可靠性技能

此技能提供工作流,帮助你配置 GKE 集群和工作负载,以实现高可用性和可靠性。

工作流

1. 验证集群高可用性

检查集群是区域级集群,还是具有多可用区节点池。

命令:

gcloud container clusters describe <cluster-name> --region <region> --format="json(location, locations)"

如果 location 是一个区域(例如,us-central1),则控制平面为区域级。 如果 locations 有多个条目,则节点分布在多个可用区中。

2. 配置 Pod 中断预算(PDB)

PDB 可确保在自愿中断期间(例如节点升级期间)仍有最低数量的 Pod 可用。

检查现有 PDB:

kubectl get pdb -n <namespace>

清单示例:

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: my-app-pdb
spec:
  minAvailable: 2
  selector:
    matchLabels:
      app: my-app
3. 配置健康探针

确保所有生产容器都配置了存活探针、就绪探针,以及可选的启动探针。

  • 就绪探针:确定容器何时准备好开始接收流量。
  • 存活探针:确定何时重启容器。
  • 启动探针:在应用启动完成前禁用存活和就绪检查。

检查工作负载探针:

kubectl get deployment <app-name> -n <namespace> -o yaml | grep -E "livenessProbe|readinessProbe|startupProbe"
4. 优雅关闭

确保应用能够妥善处理 SIGTERM 信号,并设置适当的 terminationGracePeriodSeconds(默认值为 30s)。

5. 拓扑分布约束

确保 Pod 分布在不同可用区或节点上,以避免相关故障。

清单示例片段:

spec:
  topologySpreadConstraints:
    - maxSkew: 1
      topologyKey: topology.kubernetes.io/zone
      whenUnsatisfiable: DoNotSchedule # or ScheduleAnyway
      labelSelector:
        matchLabels:
          app: my-app
6. 维护时段和排除项

配置 GKE 执行自动升级的时间,以避开高峰时段。

设置维护时段的命令:

gcloud container clusters update <cluster-name> \
    --region <region> \
    --maintenance-window-start <start-time> \
    --maintenance-window-recurrence "FREQ=DAILY"

最佳实践

  1. 区域级集群:生产工作负载始终使用区域级集群,以应对可用区故障。
  2. 为所有容器配置探针:生产 Pod 中的每个容器都应至少配置一个就绪探针。
  3. 为关键应用配置 PDB:使用 PDB,避免自动节点升级期间出现停机。
  4. 跨可用区分布:始终使用 topologySpreadConstraints,确保 Pod 分布在不同可用区,即使是在区域级集群中也不例外。
  5. 安排维护时间:设置维护时段,确保在低流量时段进行升级。

评论

支持 Markdown