谷歌云 GKE 完整教程:集群创建、Autopilot 与 Standard 模式、节点池配置与计费方式

📅 2026/7/19 5:29:01
谷歌云 GKE 完整教程:集群创建、Autopilot 与 Standard 模式、节点池配置与计费方式
Google Kubernetes EngineGKE是 GCP 提供的全托管 Kubernetes 服务。它负责运行和维护 Kubernetes 控制平面用户负责管理工作负载和应用。相比在 Compute Engine 上自建 Kubernetes 集群GKE 省去了 etcd 备份、API Server 高可用、控制平面升级等运维工作让工程团队专注于应用本身。GKE 和 AWS EKS 在功能上基本对等但有几个明显差别GKE 的 Autopilot 模式让节点管理完全由 Google 负责而 EKS 没有等价的完全托管节点模式GKE 的控制平面在 Standard 模式下每月 $72EKS 同样每集群 $72但 GKE 每个 Billing Account 有一个免费的 Zonal 集群可以抵扣GKE 与 GCP 的 IAM、VPC、Cloud Load Balancing 整合更原生配置一致性更高。GKE 适合什么场景GKE 适合以下几类工作负载容器化的微服务架构多个服务各自独立部署和扩缩通过 Kubernetes Service 和 Ingress 互相通信。有状态应用数据库、消息队列通过 PersistentVolume 挂载 GCE 持久化磁盘配合 StatefulSet 管理 Pod 的顺序启动和稳定网络标识。AI/ML 推理服务需要 GPU 实例通过节点池按需分配 GPU 资源推理服务 Pod 通过节点亲和性调度到 GPU 节点。批处理任务使用 Job 和 CronJobSpot VM 节点池降低成本任务完成后节点自动缩容。不适合 GKE 的场景单个无状态 HTTP 服务、团队没有 Kubernetes 经验且不打算投入学习时间——这类场景选 Cloud Run 更简单运维负担更低成本也更可控。Autopilot 与 Standard两种运行模式的核心差别这是 GKE 中最重要的选择直接影响运维工作量和成本结构。Autopilot 模式Autopilot 是 GKE 当前推荐的生产模式。在 Autopilot 下Google 负责节点的创建、维护、升级和扩缩容用户看不到任何节点也不需要选择机型或配置 Auto Scaler。计费方式是按 Pod 实际请求的 CPU、内存和临时存储计算控制平面费用已包含在 Pod 定价内不单独计费。Autopilot 的计费价格us-central12026 年$0.0445/vCPU-小时$0.0049/GiB-小时内存。以 4 个 Pod每个请求 0.5 vCPU、1GiB 内存全月运行为例月度费用约 $78–80控制平面成本已包含其中。Autopilot 的核心优势是消除了节点空闲浪费。Standard 模式下即使节点上只运行了 20% 的工作负载剩余 80% 的节点资源仍然计费。Autopilot 按 Pod 请求计费空闲节点资源的成本完全消失。Google 官方数据显示在常见工作负载下Autopilot 比节点利用率不高的 Standard 集群便宜 12–40%。每个 Billing Account 每月有 $74.40 的 GKE 免费 Credits足以覆盖一个测试集群的基础运行成本。Standard 模式Standard 模式保留了对 Kubernetes 集群基础设施的完整控制自行选择节点机型、配置节点池、调整 Cluster Autoscaler 参数、使用 Spot VM。控制平面固定收费 $0.10/小时约 $72/月节点按 GCE 实例按需价格计费。Standard 在以下情况比 Autopilot 更合适节点利用率持续维持在 85% 以上且工程团队有能力通过精细的 Pod 资源请求设置实现高密度调度需要使用 GPU 节点池Autopilot 也支持 GPU但 Standard 在节点池配置上更灵活有特殊的操作系统或内核配置需求或者需要使用 Spot VM 节点池进一步压低成本Autopilot 有 Spot Pod 机制但 Standard 的 Spot VM 节点池配置更直接。判断原则节点利用率难以持续维持在 85% 以上、或团队没有专职平台工程师管理节点池选 Autopilot需要极致成本优化且有能力进行节点级调优选 Standard。创建 GKE 集群创建 Autopilot 集群# 创建 Autopilot 集群推荐生产环境gcloud container clusters create-auto my-cluster \–locationasia-east2# 获取集群凭证配置 kubectlgcloud container clusters get-credentials my-cluster \–locationasia-east2Autopilot 集群的 –location 参数指定区域Region而不是单个可用区ZoneGKE 自动在区域内的多个可用区分配 Pod提供跨可用区高可用能力。创建 Standard 集群# 创建 Standard 集群3 个节点e2-standard-4 机型gcloud container clusters create my-cluster \–zoneasia-east2-b \–machine-typee2-standard-4 \–num-nodes3 \–enable-autoscaling \–min-nodes1 \–max-nodes10# 获取集群凭证gcloud container clusters get-credentials my-cluster \–zoneasia-east2-bStandard 集群创建时指定 –zone单可用区或 –region多可用区多可用区集群节点数是指每个可用区的节点数3 个可用区各 3 节点意味着实际有 9 个节点。生产环境建议创建区域集群Regional Cluster以获得跨可用区高可用能力。验证集群状态# 查看集群节点状态kubectl get nodes# 查看集群信息kubectl cluster-info部署应用Deployment 与 Service创建 DeploymentDeployment 定义了应用的期望状态包括运行的副本数、容器镜像和资源请求。资源请求requests是 Kubernetes 调度 Pod 到节点的依据在 Autopilot 模式下也直接决定计费量设置过高会浪费成本设置过低会影响性能apiVersion: apps/v1kind: Deploymentmetadata:name: web-appnamespace: productionspec:replicas: 3selector:matchLabels:app: web-apptemplate:metadata:labels:app: web-appspec:containers:– name: web-appimage: asia-east2-docker.pkg.dev/my-project/my-repo/web-app:v1resources:requests:cpu: “250m”memory: “512Mi”limits:cpu: “500m”memory: “1Gi”ports:– containerPort: 8080env:– name: PORTvalue: “8080”kubectl apply -f deployment.yamlkubectl get pods -n production通过 Service 暴露应用Service 将外部流量路由到 Pod。type: LoadBalancer 会在 GCP 创建一个 Network Load Balancer分配一个外部 IPapiVersion: v1kind: Servicemetadata:name: web-app-servicenamespace: productionspec:type: LoadBalancerselector:app: web-appports:– port: 80targetPort: 8080kubectl apply -f service.yamlkubectl get service web-app-service -n production每个 LoadBalancer 类型的 Service 会创建一个独立的 GCP 负载均衡器按小时计费约 $18/月起。如果有多个 HTTP/HTTPS 服务需要对外暴露使用 Ingress 一个 HTTP(S) 负载均衡器更经济多个服务共用同一个负载均衡器通过域名或路径路由到不同 Service。节点池配置Standard 模式Standard 集群支持多个节点池每个节点池可以有不同的机型、操作系统和标签。将不同类型的工作负载分配到不同节点池是 Standard 模式最常见的成本优化策略。混合 Spot VM 和按需节点池# 创建 Spot VM 节点池用于批处理任务gcloud container node-pools create spot-pool \–clustermy-cluster \–zoneasia-east2-b \–machine-typee2-standard-4 \–spot \–num-nodes0 \–enable-autoscaling \–min-nodes0 \–max-nodes20# 创建 GPU 节点池用于 AI 推理gcloud container node-pools create gpu-pool \–clustermy-cluster \–zoneasia-east2-b \–machine-typeg2-standard-4 \–acceleratortypenvidia-l4,count1 \–num-nodes0 \–enable-autoscaling \–min-nodes0 \–max-nodes5Spot VM 节点池最小节点数设为 0空闲时完全缩容不产生任何节点费用。通过节点亲和性Node Affinity和污点Taint/Toleration配置将批处理 Job 调度到 Spot 节点池将核心在线服务保留在按需节点池两类工作负载各自独立扩缩互不影响。Workload IdentityPod 访问 GCP 资源GKE Pod 通常需要访问 GCP 资源如 Cloud Storage、Cloud SQL、Pub/Sub。最常见的错误做法是将服务账号密钥文件挂载到 Pod 内这带来密钥泄露的安全风险。Workload Identity 是 GKE 推荐的无密钥认证方式将 Kubernetes ServiceAccount 绑定到 GCP Service AccountPod 使用 Kubernetes SA 运行时自动获得对应 GCP SA 的权限无需任何密钥文件。# 启用 Workload Identity创建集群时指定或更新现有集群gcloud container clusters update my-cluster \–workload-poolmy-project.svc.id.goog \–zoneasia-east2-b# 创建 GCP Service Accountgcloud iam service-accounts create gke-app-sa \–display-name”GKE App Service Account”# 授予 GCP SA 访问 Cloud Storage 的权限gcloud projects add-iam-policy-binding my-project \–member”serviceAccount:gke-app-samy-project.iam.gserviceaccount.com” \–role”roles/storage.objectViewer”# 将 Kubernetes SA 绑定到 GCP SAgcloud iam service-accounts add-iam-policy-binding \gke-app-samy-project.iam.gserviceaccount.com \–roleroles/iam.workloadIdentityUser \–member”serviceAccount:my-project.svc.id.goog[production/web-app-sa]”在 Pod 的 ServiceAccount 上添加注解apiVersion: v1kind: ServiceAccountmetadata:name: web-app-sanamespace: productionannotations:iam.gke.io/gcp-service-account: gke-app-samy-project.iam.gserviceaccount.com配置完成后使用这个 Kubernetes SA 运行的 Pod 可以直接调用 GCP APIGCP 客户端库自动从 GKE 的元数据服务获取临时凭证。计费方式与成本控制GKE 账单由以下部分构成控制平面费用Standard 模式 $0.10/小时约 $72/月每个 Billing Account 有一个免费的 Zonal 集群Standard 或 Autopilot免费额度可覆盖开发测试集群的控制平面成本。Autopilot 的控制平面成本包含在 Pod 定价中。节点/Pod 计算费用Standard 模式按 GCE 实例价格计费Autopilot 按 Pod 请求的 CPU 和内存计费。附加资源费用持久化磁盘PVC按 GCE 持久化磁盘定价LoadBalancer 类型 Service 每个约 $18/月起Ingress 使用的 HTTP(S) 负载均衡器按规则数和流量计费Pod 之间的跨区域流量按 GCP 出站费率计费。折扣选项折扣类型适用模式节省幅度Flex CUD1 年Autopilot Standard28%Flex CUD3 年Autopilot Standard46%Resource CUD1 年仅 Standard最高 37%Resource CUD3 年仅 Standard最高 57%Spot Pod / Spot VMAutopilot / Standard最高 60%成本控制的几个直接操作为每个 Pod 设置准确的资源请求requests避免在 Autopilot 模式下因请求过高多付费用非生产环境的集群在下班时间扩缩节点到零Standard或删除 PodAutopilot使用 Namespace 和资源配额ResourceQuota控制各团队的资源用量上限防止某个团队的错误配置导致集群资源耗尽定期通过 Cloud Monitoring 的 GKE 工作负载指标检查 CPU 和内存利用率识别长期低利用率的 Pod 并调整请求值。账号开通与代理充值使用 GKE 需要有效的谷歌云账号且 GPU 节点池L4、A100、H100的配额在新账号下默认为零需要单独申请。通过谷歌云代理商渠道获取的稳定账号配额更宽松可以直接用于生产环境部署1 分钟交付免实名免绑卡。对于月均 GKE 消耗在 $500 以上的团队通过谷歌云代理充值可以享受赠金返点充值 $1000 到账 $1150充值 $3000 到账 $3500叠加 Flex CUD 的 46% 折扣年度实际集群运行成本明显低于官网按需计费价格付款支持 多货币 和对公转账。