阿里云容器服务Kubernetes版(ACK)对接使用完全指南

apphuang2026年06月29日 13:37:493

一、ACK集群类型解析与选型决策

在开始对接使用阿里云容器服务Kubernetes版(ACK)之前,首先需要深入理解ACK提供的不同集群类型及其适用场景。ACK目前主要提供三种集群形态:ACK托管集群、ACK专有集群和ACK Serverless集群。

1.1 ACK托管集群

ACK托管集群的控制面(包括kube-apiserver、kube-controller-manager、kube-scheduler和etcd等核心组件)完全由阿里云托管,用户只需负责Worker节点的创建与运维。托管集群又细分为Pro版和基础版:

  • Pro版:适用于企业生产与测试环境,提供99.95%的区域级SLA保障。单集群默认支持最大5000个Worker节点并可申请提高配额。Pro版收取集群管理费用,但相比自行维护Master节点的专有集群,整体TCO通常更低。
  • 基础版:仅供个人学习与测试,单账号最多创建2个集群,单集群仅支持10个Worker节点且不支持提高配额。基础版不收取集群管理费用。

每一个托管集群的管控面包含至少2个kube-apiserver实例和3个etcd实例,并部署在不同的可用区以提供可用区级别的高可用性。这种设计显著降低了用户的运维负担,让团队可以更专注于业务应用的开发和部署。

1.2 ACK专有集群

ACK专有集群的控制面需要用户自行创建并运维。根据官方公告,ACK专有集群已于2024年8月21日起停止新建(云盒场景除外),官方推荐在生产环境中使用ACK托管集群Pro版。

1.3 ACK Serverless集群

ACK Serverless集群完全基于弹性容器实例(ECI)运行,用户无需管理底层ECS服务器,只需提供打包好的镜像即可运行容器。该集群类型与阿里云容器服务无缝对接,仅为容器实际运行消耗的资源付费。ACK Serverless集群适用于对资源弹性要求极高、希望免于节点运维的场景。

1.4 选型建议

对于大多数企业的生产环境,ACK托管集群Pro版是最佳选择。它具有以下优势:提供了可赔付的SLA保障;具备etcd高频冷热备机制和异地容灾能力;支持从基础版或专有集群热迁移至Pro版。对于测试或个人学习场景,可选择ACK托管集群基础版。对于对资源弹性要求极高、不想管理节点的场景,ACK Serverless集群是理想选择。

需要先登录阿里云控制台,点击:阿里云控制台

二、ACK托管集群创建与初始化配置

选定集群类型后,接下来进入集群创建阶段。ACK托管集群支持通过多种方式创建,包括控制台、API、Terraform、SDK以及CLI等。

2.1 控制台创建流程

在阿里云控制台中进入"容器服务Kubernetes版",点击"创建集群",选择"ACK托管集群"。创建过程中需要配置以下关键参数:

  • 集群名称:自定义命名,创建后仍可修改。
  • 集群规格:选择Pro版或基础版,生产环境务必选择Pro版。
  • 地域和可用区:地域一经创建不可修改。建议选择与用户和业务资源部署地域较近的地域以降低网络延迟,同时配置至少两个不同可用区以保证高可用。
  • Kubernetes版本:仅支持创建最近三个次要版本,建议使用当前最新版本以获得更好的稳定性、性能和安全性更新。
  • 自动升级:开启后可在维护窗口期内自动升级集群控制面和节点池,有效降低版本维护负担。
  • 专有网络(VPC)和交换机:可选择自动创建或使用已有VPC。建议选择2个及以上不同可用区的交换机以保障高可用。

2.2 网络插件选型:Terway vs Flannel

ACK提供两种CNI插件——Terway和Flannel。创建集群时需选定网络插件,且创建后无法更改。

Terway是阿里云自研的CNI插件,它将ECS实例的弹性网卡(ENI)分配给集群中的Pod,使Pod直接连接到专有网络VPC,无需经过VXLAN等隧道封装,从而提升网络效率。Terway适用于对网络性能和安全隔离要求较高的大规模集群。创建ACK集群时,Terway支持两种模式:

  • 独占ENI模式:每个Pod拥有独立的ENI,网络性能最优。
  • 共享ENI模式:多个Pod共享ENI,提升单节点的Pod密度。共享ENI模式支持DataPath V2网络加速。

Terway还支持为Pod配置固定IP、独立安全组和交换机,独占ENI模式额外支持Kubernetes网络策略。

Flannel是开源CNI插件,使用VXLAN等网络虚拟化技术为Pod构建覆盖网络。Flannel配置简单,但存在NAT开销导致网络性能较弱,且访问控制能力不如Terway。Flannel支持最多1000个节点的集群,适用于对网络性能要求不高的场景或快速搭建测试环境。

2.3 使用Terraform创建集群

对于基础设施即代码(IaC)实践,ACK支持通过Terraform进行集群的声明式创建和管理。以下是一个使用Terraform创建ACK托管集群的配置示例:

resource "alicloud_cs_managed_kubernetes" "default" {
  name               = "my-ack-cluster"
  cluster_spec       = "ack.pro.small"
  kubernetes_version = "1.28"
  vswitch_ids        = ["vsw-abc123", "vsw-def456"]
  new_nat_gateway    = true
  service_cidr       = "172.16.0.0/20"
  pod_cidr           = "10.0.0.0/18"
  
  worker_nodes {
    instance_type = "ecs.g6.large"
    count         = 3
    system_disk_category = "cloud_efficiency"
    system_disk_size = 40
    data_disks {
      category = "cloud_efficiency"
      size = 100
    }
  }
}

2.4 配置kubectl访问集群

集群创建完成后,需配置kubectl工具访问集群。在ACK集群列表页,点击目标集群的"连接信息",获取集群访问凭证(kubeconfig文件)。将kubeconfig保存到本地 `~/.kube/config` 路径后,即可通过kubectl命令操作集群:

kubectl get nodes
kubectl get pods --all-namespaces

三、节点池管理与弹性伸缩

节点池是对集群中节点的逻辑分组,用于统一管理具有相同配置(如ECS规格、操作系统、容器运行时)的节点。通过节点池,可实现节点的批量创建、扩容、缩容和升级。

3.1 节点池的核心应用场景

  • 按业务类型分组:如将运行Web应用的节点归为"Web节点池",运行数据库的节点归为"数据节点池"。
  • 按资源规格分组:如高性能节点池(用于计算密集型业务)、通用节点池(用于普通业务)。
  • 版本管理:统一升级节点的Kubernetes版本或操作系统版本。

3.2 启用节点弹性伸缩

ACK节点池的弹性伸缩底层依赖ESS(弹性伸缩服务)。为节点池开启弹性伸缩的步骤如下:

  1. 在节点池页面,点击"节点伸缩"后方的"去配置"。
  2. 首次使用节点自动伸缩功能时,需按照页面提示开通ESS服务。
  3. 在节点伸缩配置页面,选择节点伸缩方案为"自动伸缩",配置伸缩的配置项,然后点击确定。

启用节点自动伸缩功能后,ACK会根据工作负载的资源需求自动调整节点数量。对于需要秒级弹性响应的场景,ACK提供了ack-autoscaling-placeholder组件,通过少量资源冗余实现容器秒级伸缩。

四、应用部署:工作负载编排实践

ACK完全兼容原生Kubernetes API,支持使用标准的YAML文件定义和部署工作负载。

4.1 核心工作负载类型

  • Deployment(无状态工作负载):适用于无状态应用(如Web服务、API服务),Pod副本完全一致,可随意替换,支持滚动更新和回滚。
  • StatefulSet(有状态工作负载):适用于有状态应用(如数据库、分布式缓存),每个Pod有唯一标识,支持稳定的存储挂载和有序部署。
  • DaemonSet(守护进程工作负载):适用于需要在集群所有节点上运行的应用(如日志采集器、监控代理),确保每个节点仅运行一个Pod副本。
  • Job/CronJob(任务型工作负载):适用于一次性任务或定时任务。

4.2 Deployment部署示例

以下是一个部署Nginx应用的Deployment YAML示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
  namespace: my-nginx-namespace
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.1
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: "250m"
            memory: "256Mi"
          limits:
            cpu: "500m"
            memory: "512Mi"

部署命令:

kubectl apply -f my-nginx.yaml

为每个容器的requests和limits设置合理的CPU和内存值是保障集群稳定性和公平调度的关键。requests决定了调度时的资源预留,limits则限制了容器可使用的最大资源量。

4.3 配置管理与敏感信息

将应用配置从镜像中解耦是云原生实践的重要原则:

  • ConfigMap:存储通用配置(如数据库连接串、环境变量)。
  • Secret:以加密形式存储敏感信息(如密码、Token)。

ConfigMap示例:

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  database_url: "mysql://user:password@host:3306/db"
  log_level: "info"

Secret示例(注意:Secret的值需要base64编码):

apiVersion: v1
kind: Secret
metadata:
  name: app-secret
type: Opaque
data:
  db_password: cGFzc3dvcmQxMjM=

五、服务发现与流量管理

5.1 Service:为Pod提供稳定访问入口

Kubernetes中的Pod是临时性的,其IP地址会随着Pod的重建而变化。Service为一组具有相同逻辑功能的Pod提供稳定的虚拟IP地址和端口。ACK支持ClusterIP、NodePort、LoadBalancer、Headless和ExternalName等多种Service类型。

Service示例:

apiVersion: v1
kind: Service
metadata:
  name: my-nginx-svc
  namespace: my-nginx-namespace
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: ClusterIP

Service通过Label Selector匹配后端Pod,当后端Pod发生变化时,Service会自动更新转发规则。

5.2 ALB Ingress:七层负载均衡

与Service提供的四层负载均衡不同,Ingress管理七层(HTTP/HTTPS)的外部访问。ALB Ingress基于阿里云应用型负载均衡ALB之上提供更强的Ingress流量管理能力,兼容Nginx Ingress,支持HTTP、HTTPS和QUIC协议。

ALB Ingress涉及的核心概念:

  • ALB Ingress Controller:负责管理Ingress资源的组件,通过API Server获取Ingress资源变化,动态创建ALB实例、监听、路由转发规则和后端服务器组。
  • AlbConfig CRD:每个AlbConfig对应一个ALB实例。
  • Ingress Class:定义Ingress Controller的类别,允许集群中同时使用多个Ingress Controller。

ALB Ingress配置示例:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: demo-ingress
  namespace: my-nginx-namespace
  annotations:
    kubernetes.io/ingress.class: "alb"
spec:
  rules:
  - host: demo.domain.ingress.top
    http:
      paths:
      - path: /coffee
        pathType: Prefix
        backend:
          service:
            name: coffee-service
            port:
              number: 80
      - path: /tea
        pathType: Prefix
        backend:
          service:
            name: tea-service
            port:
              number: 80

使用ALB Ingress时需注意:如果使用Flannel网络插件,后端Service仅支持NodePort和LoadBalancer类型。

六、存储管理:基于CSI的持久化存储

Kubernetes应用通常需要持久化存储来保存数据。ACK通过标准的容器存储接口CSI,集成了多种阿里云存储服务(如云盘、OSS、NAS、CPFS等),并兼容Kubernetes原生存储机制。

6.1 存储基础概念

  • PV(PersistentVolume):集群中的存储资源抽象,由管理员预先创建或通过StorageClass动态生成。
  • PVC(PersistentVolumeClaim):用户对存储资源的申请,系统会将PVC与符合条件的PV自动绑定。
  • StorageClass:定义存储的"模板",允许PVC按需动态创建PV。

6.2 静态存储卷 vs 动态存储卷

  • 静态存储卷:需预先创建PV来代表已有的存储资源(如已有的NAS文件系统或云盘)。应用通过创建PVC来"匹配"并申请使用此PV。常用于纳管存量存储资源,但其绑定的PVC默认不支持在线扩容。
  • 动态存储卷:无需预先创建PV。应用创建PVC时,系统会根据PVC指定的StorageClass,按需自动创建一个全新的存储卷及与之对应的PV。此模式更灵活,且支持存储卷扩容。

6.3 使用NAS静态存储卷

NAS存储卷提供数据持久化(Pod重建后数据不丢失)和数据共享(多Pod同时读写)能力。在ACK集群中挂载NAS静态存储卷的主要流程如下:

  1. 创建PV:在集群中"注册"已有的NAS文件系统,声明其挂载地址、容量、访问模式等。
  2. 创建PVC:应用通过PVC来"申请"使用已注册的存储资源。
  3. 在应用中挂载:将已绑定的PVC挂载到应用Pod中。

PV配置示例(NAS静态存储卷):

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nas-pv
spec:
  capacity:
    storage: 100Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  csi:
    driver: nasplugin.csi.alibabacloud.com
    volumeHandle: nas-pv
    volumeAttributes:
      server: "xxxxxxxx.nas.aliyuncs.com"
      path: "/k8s/data"
      vers: "3"
      options: "noresvport,nolock"

使用NAS时需注意:NAS文件系统需与集群VPC保持一致,不支持跨VPC挂载。存储卷使用期间,请勿在NAS控制台删除其对应的挂载点,以免导致节点I/O异常。

6.4 云盘存储卷

云盘(云服务器ECS的块存储)适用于需要高IOPS和低延迟的数据库等有状态应用。ACK支持使用CSI驱动以PV、PVC方式挂载云盘静态存储卷和动态存储卷。云盘存储卷的访问模式为RWO(ReadWriteOnce),即单个节点可读写。

七、可观测性:日志与监控

7.1 日志采集:SLS集成

ACK与阿里云日志服务SLS深度集成,可自动采集容器日志而无需修改应用代码。日志采集通过在集群中部署alibaba-log-controller组件(以DaemonSet形式运行在每个节点上),将节点上所有容器的日志转发到SLS进行查询和分析。

通过SLS CRD配置日志采集的YAML示例:

apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
  name: simple-stdout-example
spec:
  project: k8s-my-project
  logstore: k8s-stdout
  logstoreMode: standard
  shardCount: 2
  lifeCycle: 90
  logtailConfig:
    inputType: plugin
    configName: simple-stdout-example
    inputDetail:
      plugin:
        - type: "stdout"

重要提示:通过CRD方式创建的日志配置,在SLS控制台上对其修改不会同步到CRD中。后续如需更新配置,应直接修改CRD资源。

7.2 监控告警:托管Prometheus

ACK集成托管Prometheus监控服务,提供集群、节点、Pod和应用的多层次监控指标。通过配置告警规则,可实现对集群异常状态的实时感知。对于ACK Edge集群,同样可以接入阿里云Prometheus监控,使数据中心和边缘节点的GPU资源拥有与云上一致的可观测能力。

八、安全体系:RAM与RBAC权限管理

8.1 RAM授权

ACK的权限体系分为两个层面:RAM权限(控制台级别)和RBAC权限(集群内级别)。RAM用户或RAM角色必须被授予相应的RAM权限策略,才能操作ACK资源。阿里云账号默认拥有所有权限,无需额外授权。

ACK提供默认的系统权限策略,用于指定全局资源的读写访问控制。推荐遵循最小权限原则,仅为用户授予其工作所需的最小权限集合。

8.2 RBAC权限管理

RBAC(基于角色的访问控制)是Kubernetes原生的集群内权限管理机制。通过ack-ram-authenticator组件,ACK托管集群基于阿里云RAM,通过Webhook机制为API Server的访问请求提供更安全的身份验证。

ack-ram-authenticator的核心能力:

  • 基于Kubernetes原生Webhook Token认证方式,实现通过RAM完成集群API Server的请求认证。
  • 通过CRD形式提供RAM身份和RBAC权限的映射关系,灵活配置RBAC鉴权。
  • 在SSO角色对接场景下,API Server审计日志中包含企业IDP中的身份信息,支持对扮演同一角色的不同用户的行为审计。

安装ack-ram-authenticator组件:

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表。
  2. 在集群列表页面,单击目标集群名称,然后在左侧导航栏点击组件管理。
  3. 在组件管理页面,单击安全页签,找到ack-ram-authenticator,点击安装。

使用ack-ram-authenticator的优势:

  • 适配企业通过云SSO场景,提供灵活可控的数据面RBAC授权。
  • 当企业员工离职被删除RAM用户或RAM角色后,其在集群中的RBAC权限将自动失效。

8.3 安全加固最佳实践

ACK基于Alibaba Cloud Linux提供了等保2.0三级版,可为节点池启用等保加固并配置基线检查策略,使其满足操作系统的等级保护要求。此外,建议开启工作负载身份(RAM角色)以安全管理云资源访问权限。

九、生产级运维实践

9.1 集群自动升级

启用ACK托管集群的自动升级功能后,集群可保持周期性的自动升级,降低版本运维压力。配置自动升级策略后,系统会提前生成集群升级计划,在维护窗口期内触发前置检查并升级集群的控制面。集群维护窗口是一个为ACK集群预先设定的特定时间段,在此期间ACK将执行集群自动化运维操作。

升级节点池时需注意:升级集群至1.18版本后,ACK会默认配置节点资源预留策略。如果集群未配置资源预留且节点水位较高,升级后存在Pod驱逐后无法被快速调度的风险,推荐CPU使用率不超过50%,内存使用率不超过70%。

9.2 CI/CD流水线集成

ACK支持与多种CI/CD工具集成,实现从代码提交到应用部署的全流程自动化。典型的CI/CD方案包括:

  • 云效 + ACR + ACK:通过云效流水线实现镜像构建和部署的自动化。
  • Jenkins + Harbor + ACK:通过Jenkins将代码打包成镜像并推送到Harbor仓库,然后触发ACK拉取镜像并部署应用。
  • GitHub Actions + ACK:使用GitHub Actions实现Java Web应用的自动化部署。

流水线核心步骤通常包括:代码拉取 → 镜像构建 → 镜像推送(至ACR)→ 部署至ACK集群。

9.3 成本优化

ACK集群的成本管理围绕FinOps理念展开:

  • 使用ACK成本洞察:更准确地计算业务成本分摊,在享受云原生灵活性的同时有效管理和控制成本。
  • 合理配置资源请求和限制:为每个容器设置合理的requests和limits,避免资源浪费。
  • 利用弹性伸缩:根据业务负载动态调整节点数量,避免闲时资源空转。
  • 选择合适的节点规格:根据业务负载选择合适规格的ECS实例,避免规格过高造成浪费。

十、总结

阿里云容器服务Kubernetes版(ACK)为企业提供了从集群管理、应用部署到可观测性、安全管控的一站式容器化解决方案。通过合理选型ACK集群类型(托管Pro版为生产环境首选)、科学规划网络(Terway为推荐CNI插件)、规范应用编排(Deployment/StatefulSet + Service/Ingress)、完善存储方案(CSI + 云盘/NAS)、构建可观测体系(SLS + Prometheus)以及落实安全管控(RAM + RBAC),用户可以快速构建高可用、高弹性、安全可靠的生产级Kubernetes平台。结合CI/CD流水线、自动升级和成本优化等运维实践,ACK能够帮助企业聚焦业务创新,充分释放云原生技术红利。

常见问题解答

问1:ACK托管集群Pro版和基础版的主要区别是什么?

答:Pro版提供99.95%的区域级SLA保障,单集群默认支持最大5000个Worker节点并可申请提高配额,适用于企业生产环境,收取集群管理费用。基础版仅供个人学习与测试,单账号最多创建2个集群,单集群仅支持10个Worker节点且不支持提高配额,不收取集群管理费用。

问2:ACK集群创建后能否更换网络插件?

答:不能。集群创建时选定的CNI插件(Terway或Flannel)在创建后无法更改。因此,创建集群前需根据业务场景慎重选择网络插件。

问3:如何为ACK集群配置外部访问?

答:可以通过两种方式实现外部访问:一是创建LoadBalancer类型的Service,系统会自动创建SLB实例暴露服务;二是创建ALB Ingress,通过应用型负载均衡ALB实现七层(HTTP/HTTPS)流量的路由和负载均衡。

问4:ACK中静态存储卷和动态存储卷有什么区别?

答:静态存储卷需要管理员预先创建PV来代表已有的存储资源,应用通过PVC申请使用,适合纳管存量存储,但PVC默认不支持在线扩容。动态存储卷无需预先创建PV,应用创建PVC时系统根据StorageClass按需自动创建存储卷和PV,更灵活且支持存储卷扩容。

问5:如何实现ACK集群节点的弹性伸缩?

答:ACK节点池的弹性伸缩底层依赖ESS服务。在节点池页面开启自动伸缩功能并配置伸缩策略后,ACK会根据工作负载的资源需求自动调整节点数量。对于需要秒级弹性响应的场景,可使用ack-autoscaling-placeholder组件实现容器秒级伸缩。

问6:ACK如何与CI/CD工具集成?

答:ACK支持与多种CI/CD工具集成,常见方案包括:云效+ACR+ACK、Jenkins+Harbor+ACK、GitHub Actions+ACK等。流水线核心步骤为:代码拉取→镜像构建→镜像推送(至ACR)→部署至ACK集群。

相关文章

买阿里云服务器能便宜吗?十年代理揭秘 3 大省钱攻略!

买阿里云服务器能便宜吗?十年代理揭秘 3 大省钱攻略!

作为深耕阿里云代理领域 10 年的 “老司机”,经常被问到:“买阿里云服务器能便宜吗?有没有优惠价格?” 今天就用实打实的行业经验告诉你:不仅能便宜,选对渠道还能省一大笔! 这篇文章带你解锁阿里云服务…

做了 10 年腾讯云代理,我想跟你聊聊返佣那些事儿​

做了 10 年腾讯云代理,我想跟你聊聊返佣那些事儿​

最近总有朋友问我:“腾讯云有返点吗?腾讯云服务器能拿佣金不?返佣比例到底有多少?” 作为一个在腾讯云代理行业摸爬滚打了 10 年的 “老人”,今天就来跟大家好好…

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

阿里云代理商的核心价值定位1. 代理商的角色与职责阿里云代理商作为阿里云生态的核心合作伙伴,承担着双重核心职能:• 产品销售:负责推广销售阿里云全系列云产品,包括云服务器ECS、云数据库RDS、对象存…

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

01一、阿里云代理商的核心价值定位1. 代理商的角色与职责阿里云代理商作为阿里云生态的核心合作伙伴,承担着双重核心职能:• 产品销售:负责推广销售阿里云全系列云产品,包括云服务器ECS、云数据库RDS…

阿里云代理商有哪些?阿里云代理返点是真的么?

阿里云代理商有哪些?阿里云代理返点是真的么?

一,阿里云代理商基本介绍阿里云代理商通俗一点,就是指从事阿里云云服务器,云数据库等阿里云公有云产品销售的代理商,每销售一件阿里云公有云产品出去,阿里云给予该代理商一定比例的提成。在阿里云官方定义中,这…

2026阿里云代理商生态全解析:五级代理体系、返佣政策与企业上云指南

2026阿里云代理商生态全解析:五级代理体系、返佣政策与企业上云指南

一、阿里云五级代理体系:权益阶梯与合作价值1. 五级代理的核心权益差异阿里云构建了多层次的代理生态体系,涵盖全国总代理、区域核心代理、行业ISV(独立软件开发商)、金牌/银牌认证代理及标准代理五大核心…