云托管 K8s 实战(一):AKS vs EKS vs GKE 横览

写在前面

版本说明:本文基于 2026 年三大云的托管 K8s 服务(Azure AKS、AWS EKS、GCP GKE),命令和特性以官方当前 GA 版本为准。

这个系列承接「K8s 学习笔记」八篇——那八篇讲的是 K8s 原理和自建(kubeadm、网络、存储、调度)。但真到生产,绝大多数团队不会自己拿 kubeadm 搭集群,而是用云厂商的托管 K8s:控制平面交给云,自己只管节点和应用。

三大云各有托管 K8s 产品:

  • Azure AKS(Azure Kubernetes Service)
  • AWS EKS(Elastic Kubernetes Service)
  • GCP GKE(Google Kubernetes Engine,K8s 的"娘家")

姿势相近(都是 upstream K8s + 云集成),但细节差异巨大——控制平面收不收费、网络模型、身份对接、Serverless 节点、监控栈、IaC 工具,每家一套。

本系列 5 篇

  • 本篇(1):三家横览,建立全景和选型初印象
  • 2-4 篇:AKS / EKS / GKE 各一篇端到端实战(创建集群 → 推镜像 → 部署应用 → 暴露服务 → 监控 → 清理算账),三篇用同一套路,方便你横向对照
  • 5 篇:横向对比 + 选型建议

读完你能:在任意一家云上把一个应用跑进托管 K8s,并且知道什么场景该选哪家


一、为什么上云托管 K8s

自建 K8s 的运维负担常被低估。一个生产级自建集群,你要长期维护:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
自建 K8s 你要兜的事:
  ✓ 控制平面高可用(多 master、etcd 备份与恢复)
  ✓ 证书签发与轮换(API server、kubelet)
  ✓ 版本升级(kubeadm 升级,etcd 兼容性踩坑)
  ✓ CNI 网络插件(Calico/Cilium/Flannel 选型、故障排查)
  ✓ CSI 存储插件(对接某存储后端)
  ✓ Ingress controller(部署、证书、配置)
  ✓ 监控/日志栈(Prometheus + Grafana + Loki/EFK)
  ✓ 节点扩缩容(Cluster Autoscaler)
  ✓ 安全加固(CIS 基线、NetworkPolicy、RBAC)

  → 中小团队常扛不住,要么裸奔要么雇专职 SRE

云托管的核心交易:把上面这些"通用但难搞"的部分(控制平面、CNI、CSI 基础设施、升级、监控集成)交给云厂商,你只管业务相关的(节点池、应用、节点自动伸缩)

1
2
3
4
5
6
云托管你只管:                    云厂商托管:
  - worker node(VM 规格数量)      - controlplane(API/etcd/调度器)
  - 应用(Deployment/Service)     - CNI(云原生集成)
  - 节点池/自动伸缩配置            - CSI(对接云存储)
                                    - 控制平面升级(自动或一键)
                                    - 监控/日志的基础集成

代价是被锁定到某家云的生态(身份、存储、监控、LB),以及控制平面可能收费(见第三节)。但对绝大多数业务,这笔交易划算。


二、三大云托管 K8s 一览

先上一张总表,建立全局印象(细节后面各篇展开):

维度Azure AKSAWS EKSGCP GKE
发布年份2018(预览 2017)20182014(K8s 起源地)
控制平面费用免费~$73/月/集群($0.10/h)Standard 免费 / Autopilot 按 Pod
节点费用Azure VM(按需/预留/Spot)EC2(按需/预留/Spot)GCE / Autopilot 按 Pod 计费
默认 CNIAzure CNI(含 Overlay)/ KubenetAmazon VPC CNIVPC-native(Alias IP)
Pod 网络拿 VNet IP 或 Overlay 私网直接拿 ENI 的次级 IP节点子网 Alias IP
Serverless 节点Virtual Nodes(ACI)FargateAutopilot(全托管)
身份对接Managed IdentityIRSA(IAM Roles for SA)Workload Identity
镜像仓库ACRECRArtifact Registry
监控Azure MonitorCloudWatch Container InsightsCloud Operations(原 Stackdriver)
七层入口Application Gateway IngressAWS Load Balancer ControllerGCE Ingress Controller
IaC 首选Bicep / Terraformeksctl / Terraform / CDKTerraform / Config Connector
K8s 上游一致性紧跟(约 1-2 月内)紧跟最快(自家出的)

三家都是 upstream K8s,你学过的 kubectl/YAML/Helm 全部通用。差异主要在"云集成层"(网络、身份、存储、监控怎么对接云)。


三、控制平面收费:选型的隐形大头

这是三家最显眼的差异,也是最容易被忽视的成本项:

1
2
3
4
5
6
                      控制平面      说明
  ─────────────────────────────────────────────────
  AKS                 免费          微软承担 etcd/API server 等
  GKE Standard        免费          同上(Standard 模式)
  EKS                 ~$73/月       $0.10/h × 730h,每集群固定
  GKE Autopilot       按 Pod        无节点概念,按 Pod 秒级计费

含义

  • 单集群生产:EKS 的 $73/月可忽略(相对节点成本)。
  • 多集群 / 开发测试环境:EKS 成本陡增——10 个测试集群光控制平面就 $730/月,而 AKS/GKE Standard 是 0。这时分摊策略(少集群多租户)或用更便宜方案(比如 Kind/k3s 做测试)很关键。
  • 小规模/突发:GKE Autopilot、AKS Virtual Nodes、EKS Fargate 这种"按 Pod 计费、无空闲节点"的模式更省——但单价更高,规模化后反而贵。

选型第一问:你会有多少个集群?答案 >3 且含大量测试环境 → EKS 成本劣势显现。


四、网络模型差异(选型重头,先概览)

网络是三家差异最大、踩坑最深的地方,本节先概览,深入留到各实战篇。

模型Pod IP 来源特点
AKSAzure CNIVNet 子网Pod 直接在 VNet 可达,可与本地/对等网络互通;IP 消耗大
AKSAzure CNI Overlay私有 CIDR(推荐)Pod 用 overlay IP,节点用 VNet;兼顾 IP 节约与互通
AKSKubenetNAT简单,Pod 通过节点 NAT 出网;旧默认
EKSAmazon VPC CNIENI 次级 IPPod 拿 VPC IP,原生互通;IP 密度受 ENI 限制
GKEVPC-native(Alias IP)节点 Alias 范围GCE 子网分配 alias 段给 Pod;GKE 默认且推荐
1
2
3
4
5
6
7
选型直觉:
  - 需要 Pod 与 VPC/VNet 内其他资源直连(数据库、对等网络)
    → 选原生 CNI(Azure CNI / VPC CNI / GKE Alias)
  - IP 紧张、规模大
    → Azure CNI Overlay / EKS Prefix Delegation
  - 简单起步
    → Kubenet(AKS 旧默认)/ 默认 VPC CNI

五、身份对接:让 Pod 拿到云权限

应用要访问云资源(读 ACR/ECR/AR 镜像、写存储、查 Key Vault),怎么给 Pod 授权?三家都有"把云身份绑定到 ServiceAccount“的现代方案(取代旧的节点级密钥/AAD Pod Identity):

机制原理
AKSManaged Identity + Workload IdentityServiceAccount 关联 Managed Identity,Pod 通过 OIDC 联邦拿到 Azure AD token
EKSIRSA(IAM Roles for SA)ServiceAccount 注解关联 IAM Role,通过 OIDC 联邦签发 AWS STS token
GKEWorkload IdentityKubernetes SA 与 GCP Service Account 建立映射,Pod 拿 GCP token

三家原理高度同构:OIDC 联邦 + ServiceAccount 注解 + 短 token。会一个就会另两个。这是本系列实战篇的重头戏(旧式节点级密钥已不推荐)。


六、CLI 与 IaC

三家创建集群的"一把梭"命令:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
Azure (az CLI):
  az group create -n rg-demo -l eastus
  az aks create -g rg-demo -n myAKS --node-count 3 --enable-managed-identity
  az aks get-credentials -g rg-demo -n myAKS    # 写入 kubeconfig

AWS (eksctl,最省心的姿势):
  eksctl create cluster --name myEKS --region us-east-1 --nodes 3
  aws eks update-kubeconfig --name myEKS --region us-east-1

GCP (gcloud):
  gcloud container clusters create-auto myGKE --region us-central1
  gcloud container clusters get-credentials myGKE --region us-central1
工具定位
azAzure 官方 CLI,AKS 是其中一个模块
eksctlWeaveworks 出的 EKS 脚手架,比 aws eks 好用 10 倍,事实标准
gcloudGCP 官方 CLI,含 GKE 模块
Terraform三家都支持,多云统一 IaC 的首选
Bicep / CDK / Config Connector各家原生 IaC,深度集成但锁生态

实战建议:单云用各家最顺手的 CLI(az / eksctl / gcloud);多云或要入 GitOps 用 Terraform 统一。


七、本系列怎么跟

2-4 篇用同一套姿势,每家一篇,你照着做完三家就能横向体感差异:

1
2
3
4
5
6
7
8
每篇套路(统一):
  1. 建镜像仓库 + 推一个 demo 镜像
  2. 创建托管集群(CLI 一把梭)
  3. 配身份让集群能拉私有镜像
  4. kubectl 部署 Deployment + Service
  5. 暴露给公网(云 LB / Ingress)
  6. 接监控(云原生监控栈)
  7. 清理资源 + 算这笔账花了多少

demo 应用统一用一个最小 web 服务(nginx 或 .NET 单文件),避免业务复杂度干扰,专注云侧差异。

第 5 篇做横向对比 + 选型决策树(按规模 / 团队 / 已有云绑定 / 成本)。


八、小结

1
2
3
4
云托管 K8s 的一句话画像:
  AKS     控制平面免费,Azure 生态,企业 AD 集成强,国内访问一般
  EKS     控制平面收费,生态最广,IAM 成熟,复杂度略高
  GKE     控制平面免费,体验最顺(K8s 娘家),Autopilot 省心,国内访问差

下一篇:AKS 端到端实战——从 az group createkubectl get svc,在 Azure 上把一个应用跑进 AKS。