SuperAPI AI 工具集

gcp-gke

部署与运维

查看项目

更新于 10-27 02:33

技能介绍

用途

Google Kubernetes Engine(GKE)用于在 Google Cloud Platform 上部署、运维和扩展托管 Kubernetes 集群。适合以下场景:以自动扩缩和自愈方式大规模运行容器化微服务;需要细粒度编排、服务网格或自定义调度的工作负载;已投入 Kubernetes 工具链(Helm、Argo CD、Flux)的团队;以及 Cloud Run 基于请求的模型不适用时(长时间运行、有状态工作负载)。

主要能力

  • Standard 与 Autopilot 两种模式:Standard 由用户管理节点池,按节点(VM)计费,完整支持 GPU/TPU,允许 DaemonSet,适合需要完全控制和专用硬件的场景;Autopilot 由 Google 管理节点,按 Pod 资源请求计费,GPU/TPU 支持但有限制,DaemonSet 受限,适合免运维、成本优化的场景。
  • 节点池管理:可创建高内存池(带 taint)、GPU 池(如 nvidia-tesla-t4)、Spot 池(用于批处理工作负载),并配置自动扩缩、自动修复、自动升级。
  • Workload Identity:将 Kubernetes ServiceAccount(KSA)绑定到 Google ServiceAccount(GSA),实现细粒度、资源范围的工作负载权限,避免使用宽泛的项目级授权。
  • 工作负载部署:通过 Deployment、Service、Ingress 部署应用,支持托管 SSL 证书(ManagedCertificate)和全局静态 IP。
  • Terraform 配置:以基础设施即代码方式创建集群、节点池和子网,包含私有节点、网络策略、日志与监控、托管 Prometheus 等配置。
  • 常用运维操作:集群列表、主节点升级、资源用量查看、扩缩容、自动扩缩、日志跟踪。
  • 故障排查:覆盖 Pod 处于 Pending、ImagePullBackOff、Workload Identity 账号错误、节点 NotReady、Ingress 返回 502、集群创建配额错误、网络策略不生效等常见问题。

使用方式

前置条件:安装 Google Cloud SDK(gcloud)与 kubectl;启用 Kubernetes Engine、Compute Engine API;具备 roles/container.admin 角色。

gcloud services enable container.googleapis.com compute.googleapis.com
gcloud components install kubectl

创建 Standard 集群示例:

gcloud container clusters create prod-cluster \
  --region=us-central1 --num-nodes=2 \
  --machine-type=e2-standard-4 --disk-size=100 \
  --enable-autoscaling --min-nodes=1 --max-nodes=5 \
  --enable-autorepair --enable-autoupgrade \
  --release-channel=regular \
  --workload-pool=${PROJECT_ID}.svc.id.goog \
  --enable-ip-alias --enable-network-policy \
  --enable-shielded-nodes \
  --logging=SYSTEM,WORKLOAD --monitoring=SYSTEM,WORKLOAD \
  --labels=env=production,team=platform

gcloud container clusters get-credentials prod-cluster --region=us-central1

创建 Autopilot 集群示例:

gcloud container clusters create-auto autopilot-prod \
  --region=us-central1 --release-channel=regular \
  --workload-pool=${PROJECT_ID}.svc.id.goog \
  --network=my-vpc --subnetwork=gke-subnet

Workload Identity 绑定示例:

gcloud iam service-accounts create app-gsa
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
  --member="serviceAccount:app-gsa@${PROJECT_ID}.iam.gserviceaccount.com" \
  --role="roles/storage.objectViewer"

kubectl create namespace myapp
kubectl create serviceaccount app-ksa --namespace=myapp
gcloud iam service-accounts add-iam-policy-binding \
  app-gsa@${PROJECT_ID}.iam.gserviceaccount.com \
  --role=roles/iam.workloadIdentityUser \
  --member="serviceAccount:${PROJECT_ID}.svc.id.goog[myapp/app-ksa]"
kubectl annotate serviceaccount app-ksa --namespace=myapp \
  iam.gke.io/gcp-service-account=app-gsa@${PROJECT_ID}.iam.gserviceaccount.com

常用运维命令:

gcloud container clusters list
gcloud container clusters upgrade prod-cluster --region=us-central1 --master
kubectl top nodes && kubectl top pods --namespace=myapp
kubectl scale deployment web-app --replicas=5 --namespace=myapp
kubectl autoscale deployment web-app --namespace=myapp --min=3 --max=20 --cpu-percent=70
kubectl logs -f deployment/web-app --namespace=myapp --all-containers

适用场景

  • 大规模容器化微服务的自动扩缩与自愈。
  • 需要服务网格、自定义调度或专用硬件(GPU/TPU)的工作负载。
  • 已使用 Kubernetes 生态工具链的团队。
  • 长时间运行或有状态、不适合 Cloud Run 请求模型的工作负载。

限制与注意事项

  • 写入操作前需确认 gcloud 账号/项目、集群上下文、区域及配额/预算。
  • 区域级 Standard 节点数与自动扩缩标志可能按可用区计算,需显式核算总节点数与成本;Autopilot 计费与限制取决于计算类别与当前定价。
  • 建议使用专用的最小权限节点服务账号,以及按存储桶/资源范围限定的工作负载权限,而非宽泛的项目级授权。
  • 私有节点本身并不使控制平面端点变为私有。
  • 文档中的 Terraform 为节选,需要 provider、变量和网络定义;启用某项策略功能并不等于安装拒绝/允许规则或证明其已生效。
  • 基础设施命令可能中断服务:变更状态前应确认目标主机/范围,并准备备份或快照。
  • 本条目为仅文档导入,上游脚本与模板未随附。

相关技能

gcp-networking(GKE 集群的 VPC、防火墙规则与负载均衡)、terraform-gcp(以基础设施即代码方式创建 GKE 集群)、gcp-compute(工作负载更适合 VM 而非容器时)、gcp-cloud-sql(通过 sidecar 代理将 GKE Pod 连接到 Cloud SQL)。