云产品 · 计算

容器化不是目的,可重复的交付才是

我们交付的不只是一个能跑的集群,而是一整套包含网络规划、权限模型、发布流程与成本归属的运行平台。

  • EKS / ECS / Fargate
  • GitOps 发布
  • Karpenter 弹性
  • 多租户隔离

EKS 还是 ECS,怎么选

选 ECS + Fargate 的场景

  • 团队规模小,没有专职平台工程师
  • 服务数量在几十个以内,编排需求不复杂
  • 希望最少的运维面,不想管节点和 K8s 版本升级
  • 已经深度使用 AWS 原生服务,不需要跨云可移植性

选 EKS 的场景

  • 需要 K8s 生态能力:Operator、Service Mesh、自定义调度
  • 有跨云或混合云的可移植性要求
  • 服务数量上百,需要精细的资源配额与多租户隔离
  • 已有 K8s 经验积累,或计划长期投入平台工程

EKS 生产集群参考架构

入口层

Route 53 CloudFront WAF ALB / NLB

网关层

AWS Load Balancer Controller Ingress NGINX ExternalDNS cert-manager

工作负载

业务 Deployment HPA / KEDA PodDisruptionBudget Namespace 配额

节点层

Karpenter 托管节点组 Fargate Profile Bottlerocket AMI

平台组件

Argo CD Prometheus / Grafana Fluent Bit → OpenSearch OPA Gatekeeper

数据与状态

RDS / Aurora ElastiCache S3 EFS / EBS CSI

Karpenter 替代 Cluster Autoscaler 后,节点扩容通常从 2-3 分钟降到 40 秒内,且能自动挑最便宜的可用规格。

Karpenter NodePool 配置

yaml karpenter-nodepool.yaml
apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
  name: general-purpose
spec:
  template:
    metadata:
      labels:
        workload-tier: general
    spec:
      requirements:
        - key: karpenter.sh/capacity-type
          operator: In
          values: ["spot", "on-demand"]     # 优先 Spot,不可用时自动回落
        - key: kubernetes.io/arch
          operator: In
          values: ["amd64", "arm64"]        # 允许 Graviton,成本更优
        - key: karpenter.k8s.aws/instance-category
          operator: In
          values: ["c", "m", "r"]
        - key: karpenter.k8s.aws/instance-generation
          operator: Gt
          values: ["5"]                     # 只用新代次,性价比更好
      nodeClassRef:
        group: karpenter.k8s.aws
        kind: EC2NodeClass
        name: default
      expireAfter: 720h                     # 30 天强制轮换,配合镜像更新

  disruption:
    consolidationPolicy: WhenEmptyOrUnderutilized
    consolidateAfter: 1m
    budgets:
      - nodes: "15%"                        # 一次最多干扰 15% 节点
      - schedule: "0 9 * * mon-fri"         # 工作日白天禁止整合
        duration: 10h
        nodes: "0"

  limits:
    cpu: "2000"
    memory: 4000Gi

生产环境务必配置 disruption budgets,否则整合动作可能在业务高峰期触发节点回收。

生产集群上线检查清单

网络与安全

  • VPC CNI 前缀委派开启,避免 IP 耗尽
  • Pod 级 IAM(IRSA / Pod Identity)替代节点角色
  • Security Group for Pods 覆盖敏感服务
  • 私有集群端点 + 堡垒或 SSM 访问
  • OPA Gatekeeper 或 Kyverno 拦截特权容器

稳定性

  • 每个业务 Deployment 配置 PodDisruptionBudget
  • readiness / liveness / startup 三类探针齐全
  • requests 与 limits 明确,避免 Guaranteed 之外的抢占
  • 拓扑分布约束跨 3 个可用区
  • 控制面与关键组件版本落后不超过 2 个小版本

可观测与成本

  • 容器日志采集到 OpenSearch 或 CloudWatch Logs
  • Prometheus 指标 + Grafana 看板 + 告警路由
  • Kubecost 或标签方案实现 Namespace 级成本归属
  • OpenTelemetry 链路追踪覆盖核心调用链
  • 节点与 Pod 资源利用率周报

下一步

把云的复杂度交给我们,你只管做业务

留下需求,沐杉云的解决方案架构师会在一个工作日内联系你,提供免费的现状评估、迁移方案草案与 TCO 测算表。