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

简介: 本文提供了一份完整的阿里云容器服务Kubernetes版(ACK)对接使用指南。首先解析ACK托管版、专有版与Serverless版的架构差异与选型策略,帮助用户根据业务场景做出合理决策。随后详细讲解通过控制台和Terraform创建ACK托管集群的完整流程,涵盖网络规划(Terway与Flannel对比、CIDR配置)、节点池管理等关键环节。在应用部署层面,深入介绍Deployment、StatefulSet等核心工作负载的YAML编排实践,并通过Service与ALB Ingress实现服务暴露与七层负载均衡。存储管理部分系统讲解基于CSI的云盘动态存储卷与ossfs 2.0的使用方法。可

一、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 Terraform创建集群

对于基础设施即代码(IaC)实践,ACK支持通过Terraform创建托管集群。以下是一个基本的Terraform配置示例:

provider "alicloud" {
  region = "cn-hangzhou"
}
resource "alicloud_cs_managed_kubernetes" "default" {
  name               = "my-ack-cluster"
  cluster_spec       = "ack.pro.small"
  kubernetes_version = "1.28"
  vswitch_ids        = ["vsw-xxx1", "vsw-xxx2"]
  
  worker_instance_types = ["ecs.g7.large"]
  worker_number         = 3
  password              = "YourPassword123!"
  
  pod_cidr     = "172.20.0.0/16"
  service_cidr = "172.21.0.0/20"
}

三、网络规划与CNI插件选型

ACK集成了Kubernetes网络与阿里云网络服务,提供稳定、高性能的容器网络。集群网络插件在创建时确定,创建后无法更改。

3.1 Terway网络插件

Terway是阿里云开源的基于专有网络VPC的容器网络接口CNI插件,支持基于Kubernetes标准的网络策略来定义容器间的访问策略。Terway将ECS实例的弹性网卡(ENI)分配给Pod,使Pod直接连接到VPC,无需VXLAN等隧道封装,从而提升网络效率。

Terway提供两种模式:

  • 独占ENI模式:每个Pod获得专用的ENI,提供最佳网络性能。
  • 共享ENI模式:Pod共享ENI,提高单节点的Pod密度。

共享ENI模式支持DataPath V2加速,启用后Terway使用不同的转发路径实现更快的通信。两种模式均支持固定IP地址、独立安全组和虚拟交换机配置。

单节点支持的Pod数量基于ECS规格支持的ENI数量计算。以通用型实例规格族g7的ecs.g7.4xlarge为例,该规格支持8个ENI,单个ENI支持30个私有IP,单节点Pod限额为(8-1)×30=210个。

3.2 Flannel网络插件

Flannel是开源CNI插件,使用VXLAN等网络虚拟化技术为Pod构建覆盖网络。它配置简单,但由于NAT开销,网络性能弱于Terway。Flannel支持最多1000个节点的集群,适用于网络性能要求不高的场景或快速搭建集群的需求。

3.3 网络规划建议

创建集群前需根据业务场景和集群规模规划VPC网段和Kubernetes网段(Pod地址段和Service地址段),定义整个集群的IP地址范围。如果对网络安全、IPAM管理(例如固定Pod IP、NetworkPolicy等)有强诉求,建议使用Terway;如果集群规模较小(例如小于500个节点),且对网络无特殊需求,可使用Flannel。

四、集群连接与kubectl配置

集群创建完成后,需配置kubectl工具进行连接操作。

4.1 获取KubeConfig

在ACK集群列表页点击目标集群的"连接信息",获取集群访问凭证即KubeConfig文件。KubeConfig包含访问集群所需的认证信息,ACK支持为不同阿里云账号、RAM用户或角色签发KubeConfig。

根据安全需求和使用场景选择KubeConfig类型:

  • 临时KubeConfig:支持配置有效期(30分钟~3天),过期后自动失效,适用于日常运维、故障排查、CI/CD流水线等无需长期连接API Server的场景。
  • 长期KubeConfig:默认有效期为3年,适用于无法频繁更新KubeConfig的自动化系统或长期监控服务。

根据访问方式选择:

  • 内网访问:kubectl客户端机器必须与集群位于同一VPC,延迟更低、更安全。
  • 公网访问:通过公网中的任意机器作为客户端连接集群,依赖EIP连接API Server。

4.2 配置kubectl

将复制的KubeConfig内容粘贴至客户端的$HOME/.kube/config文件中。RAM用户连接集群前,除容器服务的系统权限外,还需要被授予集群操作的RBAC权限。

# 验证集群连接
kubectl cluster-info
# 查看节点状态
kubectl get nodes
# 查看所有命名空间
kubectl get namespaces

五、应用部署与服务暴露

5.1 核心工作负载部署

生产环境中,Deployment是最常用的工作负载资源对象,提供副本管理、自动恢复和滚动升级能力。以下是一个标准的Deployment YAML示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: default
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.25
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: 500m
            memory: 512Mi
          limits:
            cpu: 1000m
            memory: 1Gi
        livenessProbe:
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 30
          periodSeconds: 10
        readinessProbe:
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 5
          periodSeconds: 5

生产环境中所有服务必须设置资源限制(requests和limits),避免CPU抢占、OOM和节点雪崩。同时必须配置健康检查(LivenessProbe和ReadinessProbe)。

5.2 Service服务发现

Pod在Kubernetes中是临时性的,其网络资源在Pod销毁或替换时会发生变化。Service为Pod组提供稳定的访问入口,内置负载均衡能力。ACK支持ClusterIP、NodePort、LoadBalancer、Headless和ExternalName等多种Service类型。

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

5.3 ALB Ingress七层负载均衡

ALB Ingress基于阿里云应用型负载均衡ALB之上提供Ingress流量管理方式,兼容Nginx Ingress,具备处理复杂业务路由和证书自动发现的能力,支持HTTP、HTTPS和QUIC协议。

ALB Ingress涉及的核心概念:

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

以下是一个ALB Ingress配置示例:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  namespace: default
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internet
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}]'
spec:
  rules:
  - host: demo.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: nginx-service
            port:
              number: 80

六、存储管理:CSI组件与实践

6.1 CSI组件概述

阿里云csi-plugin组件遵循标准CSI规范,提供了云盘、NAS、OSS等类型阿里云云存储服务的挂载能力。自ACK 1.16版集群开始,部署集群时会默认安装最新版本的CSI组件。csi-plugin提供了数据卷的全生命周期管理,包括数据卷的创建、挂载、卸载、删除及扩容等服务。

CSI存储组件由两部分构成:

  • csi-plugin:以DaemonSet形式在每个节点上运行,负责执行存储卷的挂载、卸载以及文件系统格式化等节点侧操作。
  • csi-provisioner:作为中心控制器以Deployment形式运行,负责处理存储卷的动态创建、删除、扩容、快照等操作。

新建集群默认启用csi-provisioner托管版,组件Pod由ACK托管,在kube-system命名空间下不可见,ACK负责组件维护和资源调优。

6.2 云盘动态存储卷

通过StorageClass和PersistentVolumeClaim(PVC)可以动态创建云盘存储卷:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alicloud-disk-ssd
provisioner: diskplugin.csi.alibabacloud.com
parameters:
  type: cloud_ssd
  regionId: cn-hangzhou
  zoneId: cn-hangzhou-g
reclaimPolicy: Delete
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: disk-pvc
  namespace: default
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: alicloud-disk-ssd
  resources:
    requests:
      storage: 20Gi

6.3 OSS存储卷(ossfs 2.0)

对于需要共享存储的场景,ACK支持通过ossfs将OSS Bucket挂载为Pod中的文件系统。ossfs 2.0版本提供了更好的性能和稳定性。以下是一个使用OSS存储卷的示例:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: oss-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  csi:
    driver: ossplugin.csi.alibabacloud.com
    volumeHandle: oss-pv
    volumeAttributes:
      bucket: my-bucket
      url: oss-cn-hangzhou.aliyuncs.com
      otherOpts: -o max_stat_cache_size=0 -o allow_other
    nodePublishSecretRef:
      name: oss-secret
      namespace: default

七、安全与权限管理

7.1 RAM授权与RBAC双层模型

ACK使用RAM进行基础设施层面的权限管理,使用Kubernetes RBAC进行集群内资源访问控制。

  • RAM授权:通过RAM策略授予调用ACK及依赖云服务API的权限,涵盖集群创建、查看、升级、删除,节点池管理,权限管理,集群监控、日志和事件等操作。
  • RBAC授权:基于Kubernetes RBAC,在集群内资源层面授予不同用户对不同Kubernetes资源的操作权限,包括工作负载、网络、存储、命名空间、ConfigMap、Secret等。

默认情况下,仅阿里云账号和集群创建者拥有集群的完整权限。其他RAM用户或角色在获得访问集群的RAM授权后,仍需具有RBAC权限,才能对集群内的Kubernetes资源进行操作。

7.2 RRSA凭证隔离方案

为保护集群内应用访问阿里云服务的安全,ACK支持RRSA(RAM Roles for Service Accounts)功能,实现ServiceAccount级别的RAM权限配置和Pod权限隔离。通过RRSA,可以为不同的ServiceAccount授予不同的RAM角色,实现最小权限原则。

7.3 免密组件配置

使用ACR作为镜像来源时,免密组件aliyun-acr-credential-helper可自动化完成拉取镜像时的认证流程。免密组件的工作原理如下:

  1. 免密组件从ACR实例获取临时账号和临时密码。
  2. 组件将临时账号和密码保存到Secret中。
  3. 组件将Secret关联到配置中指定的ServiceAccount。
  4. 使用这些ServiceAccount的工作负载默认使用Secret中保存的临时账号和密码拉取镜像。

免密组件支持同时管理多个命名空间的ServiceAccount,并根据配置定时更新临时账号和密码,以降低泄露风险。

# 安装免密组件(托管版)
# 在ACK控制台的组件管理页面安装aliyun-acr-credential-helper
# 配置免密组件(同账号拉取)
# 在kube-system命名空间创建acr-configuration配置
apiVersion: v1
kind: ConfigMap
metadata:
  name: acr-configuration
  namespace: kube-system
data:
  acr-registry-info: |
    [
      {
        "instanceId": "cri-xxxxx",
        "regionId": "cn-hangzhou"
      }
    ]

八、可观测性体系建设

8.1 日志采集与SLS集成

ACK与阿里云日志服务SLS深度集成,通过Logtail组件采集容器日志。集群创建时可选择开启日志服务,系统会自动创建Logtail DaemonSet采集容器标准输出和文件日志。

集群控制面日志(包括API Server、Controller Manager、Scheduler等组件日志)可通过SLS进行查询和分析。审计日志记录Kubernetes操作审计追踪。

8.2 监控告警体系

ACK兼容阿里云可观测性产品,如云监控和托管Prometheus服务,提供监控插件帮助观察集群健康状况。alicloud-monitor-controller是ACK系统组件,将集群与托管Prometheus、SLS和云监控集成,同步可观测配置(包括告警规则)并管理其全生命周期。

监控覆盖以下维度:

  • 基础资源监控:CPU、内存、网络等集群基础资源。
  • 应用监控:通过ARMS和ack-onepilot进行拓扑分析、API监控、调用链追踪和性能瓶颈检测。
  • 集群监控:通过eBPF版应用监控无侵入采集容器性能数据。
  • 事件监控:使用Node Problem Detector和SLS事件中心实时监控和告警。
  • 控制面组件监控:通过Prometheus和Grafana实时监控API Server、etcd等组件。

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

9.1 节点池概念

节点池是ACK中一组具有相同配置的ECS节点的集合,支持统一的节点规格、操作系统、标签和污点配置。通过节点池,可以实现对不同类型工作负载的隔离和资源管理。

9.2 弹性伸缩方案

ACK提供两种弹性伸缩方案:

  • 节点自动伸缩:根据Pod调度需求自动扩缩节点资源。
  • 节点即时弹性:相较于节点自动伸缩,具有更快的弹性速度、更高的交付效率和更低的使用门槛。

ACK GOATScaler是ACK为节点即时弹性场景提供的下一代节点伸缩组件,重点提升扩容成功率与弹性策略可定制能力。

9.3 智能托管节点池

ACK托管集群Pro版支持智能托管节点池。启用后可根据工作负载变化自动完成节点扩缩容,无需提前规划容量,实现更优的资源成本控制。弹性响应更快,通过事件驱动的机制触发扩缩行为,结合ContainerOS能力进行弹性加速,伸缩速度约为45±10秒。

十、生产环境最佳实践

10.1 资源限制与健康检查

所有工作负载必须设置资源请求和限制:

resources:
  requests:
    cpu: 500m
    memory: 512Mi
  limits:
    cpu: 1000m
    memory: 1Gi

必须配置存活探针(LivenessProbe)和就绪探针(ReadinessProbe),确保Pod在异常时能够自动重启,在未就绪时不会接收流量。

10.2 滚动更新策略

Deployment支持滚动更新策略,通过配置maxSurge和maxUnavailable控制更新过程中的可用性和资源消耗:

spec:
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%

10.3 集群自动升级

开启集群自动升级功能,在维护窗口期内自动升级集群控制面和节点池,有效降低版本维护负担。ACK会且仅会在定义的维护窗口期内执行自动化运维任务,包括集群自动升级、OS CVE漏洞自动修复等。

10.4 成本优化建议

  • 使用ACK托管集群Pro版,相比自行维护Master节点,整体TCO更低。
  • 利用节点即时弹性,根据工作负载自动调整节点数量,避免资源浪费。
  • 合理配置存储类型,将不常用的数据转为低频或归档存储。
  • 使用同地域内网访问云服务,避免外网流量费用。

常见问题解答

问题1:ACK托管集群和专有集群有什么区别?

ACK托管集群的控制面由阿里云托管,用户只需管理Worker节点;ACK专有集群需要用户自行创建和运维控制面。官方推荐生产环境使用ACK托管集群Pro版,专有集群已于2024年8月21日起停止新建。

问题2:Terway和Flannel网络插件如何选择?

如果对网络安全、IPAM管理(如固定Pod IP、NetworkPolicy)有强诉求,建议使用Terway;如果集群规模较小(小于500个节点)且对网络无特殊需求,可使用Flannel。网络插件在集群创建后无法更改。

问题3:如何安全地管理集群访问凭证?

建议使用临时KubeConfig(有效期30分钟至3天)进行日常运维,定期轮换凭证,遵循最小权限原则。RAM用户需同时授予RAM权限和RBAC权限才能操作集群资源。

问题4:ACK如何实现存储卷的动态创建?

ACK通过CSI组件(csi-plugin和csi-provisioner)实现存储卷的动态创建。用户只需定义StorageClass和PVC,系统会自动创建对应的云盘、NAS或OSS存储卷。

问题5:如何为ACK集群配置日志和监控?

集群创建时可选择开启日志服务,系统自动部署Logtail采集容器日志。监控方面,ACK集成托管Prometheus服务,通过alicloud-monitor-controller组件同步告警规则和监控配置。

问题6:什么是RRSA?为什么要使用它?

RRSA(RAM Roles for ServiceAccounts)允许为Kubernetes的ServiceAccount关联RAM角色,实现Pod级别的云服务访问权限隔离。相比传统的Worker RAM角色,RRSA遵循最小权限原则,提升了安全性。

相关文章
|
3天前
|
人工智能 定位技术 SEO
我学 GEO 第 15 天:终于知道AI GEO该如何做?
我是暴走的莉莉酱,边旅行边研究AI GEO的数字游民。专注普通人如何提升“AI可见度”——让AI在回答用户问题时准确识别、理解并推荐你。不讲玄学,只做可测、可调、可持续的GEO实践。
370 124
|
5天前
|
机器学习/深度学习 人工智能 调度
🐴 HappyHorse 1.1 现已上线阿里云百炼!快来查收模型使用指南,现在调用享 6 折~
HappyHorse 1.1 是新一代视频生成大模型,全面升级动态表现力、角色一致性、指令遵循、视觉质感与音画协同能力。支持I2V/T2V/R2V三类生成,适配短剧、电商广告、品牌营销等场景,提供高质、流畅、可控的AI视频生产力。
638 4
🐴 HappyHorse 1.1 现已上线阿里云百炼!快来查收模型使用指南,现在调用享 6 折~
|
1天前
|
人工智能 自然语言处理 API
阿里云Token Plan团队版解析:功能、三档套餐与省钱订阅指南
阿里云百炼平台推出的Token Plan团队版,是面向企业与团队的AI大模型订阅服务,以Credits为统一计量单位,整合文本与图像生成模型,提供团队管理、数据安全、多工具兼容等核心能力,解决团队零散订阅AI服务的管理混乱、成本失控、数据安全等痛点。本文将从核心定位、套餐详情、计费规则、团队管理、工具兼容、便宜订阅技巧等方面,全面解析Token Plan团队版,帮助企业与团队高效、低成本地使用AI服务。
286 108
|
3天前
|
缓存 人工智能 运维
阿里云618百炼大模型Qwen3.7-Max功能、免费试用、订阅计费、配置接入详解
Qwen3.7-MAX是阿里云百炼平台推出的通义千问3.7系列旗舰大语言模型,专为智能体时代复杂任务打造,依托阿里云全域算力与自研技术,在逻辑推理、长文本处理、代码工程、长周期自主执行等领域达到行业顶尖水平。2026年618期间,该模型推出多重免费试用权益、按量计费5折、订阅套餐优惠等专属福利,覆盖个人开发者、团队与企业全场景需求,以下从核心功能、免费试用、订阅计费、配置接入四方面展开详细解析。
376 123
|
16天前
|
缓存 测试技术 API
Qwen 3.7 Plus 与 Max 实测:性价比与多模态能力差异解析(2026)
2026 年 6 月 1 日,阿里悄无声息地发布了 Qwen 3.7 Plus,距 Qwen 3.7 Max 上线刚好 11 天。同样的 1M 上下文,同样的 35 小时自治上限。但价格才是头条:Plus 是 0.40/M输入,Max是 2.50/M——便宜约 6 倍——并且还能看图、看视频。Vision Arena 上 Plus 已经排到 #16。所以这周真正值得讨论的问题不是”要不要为视觉能力买单”,而是”Max 凭什么用 6 倍价格换来 2 个百分点的 benchmark 领先”。
|
2天前
|
存储 人工智能 数据可视化
别再手动复制 Skill 了:多 Agent 时代的 Skill 管理方案
多 Agent 场景下 Skill 的统一管理与同步。
193 121
|
10天前
|
缓存 人工智能 运维
GLM 5.2自托管全流程实战:硬件选型、vLLM/SGLang部署与成本盈亏测算
2026年智谱发布GLM 5.2超大混合专家模型,区别于以往仅开放API的闭源大模型,该模型权重以MIT开源协议对外发布,企业与开发者可完整下载、本地审计、私有化部署,实现数据不出环境、自定义微调、自主调度推理资源。GLM 5.2拥有753B总参数,原生支持百万级上下文窗口,在代码生成、长文档推理、数学逻辑等多项基准测试中对标国际顶尖商用模型,是首款可完整自托管的前沿代码向大模型。
767 0
|
2天前
|
SQL 存储 运维
日志能不能改?SLS LogStore 原生支持更新和删除了
随着日志承载的业务语义越来越多,数据订正、回填、清理等需求变得越来越常见。SLS 现已为 LogStore 提供原生 update/delete 能力——支持按 RowID 精确修改,按查询条件批量操作,类似计费调账、标签刷新、反馈回填等场景都可以直接在 LogStore 内完成闭环。
176 124

热门文章

最新文章