Skip to content

阿里云

概念

阿里云 ACK(Alibaba Cloud Container Service for Kubernetes)的 cloud-controller-manager 让 K8s 集成阿里云资源(SLB / NAS / OSS / 阿里云盘 / ECS)。

集成的能力

K8s 资源 阿里云资源
Service type=LoadBalancer SLB(负载均衡)
Service annotation service.beta.kubernetes.io/alicloud-loadbalancer-spec: slb.s1.small SLB 配置规格
PersistentVolume (云盘) 阿里云盘(ESSD / SSD / 高效云盘)
PV (NAS) 阿里云 NAS(NFS 协议)
PV (OSS) 阿里云 OSS(对象存储)
Node lifecycle ESS(弹性伸缩)
节点 metadata ECS metadata

架构

┌───────── K8s control plane ──────────┐
│                                       │
│  cloud-controller-manager             │
│   ├─ Service Controller              │ → SLB 创建
│   ├─ Node Controller                 │
│   └─ Volume Controller               │
│                                       │
│  csi-plugin (DaemonSet)              │
│   ├─ disk.csi.alibabacloud.com       │ → 云盘
│   ├─ nas.csi.alibabacloud.com        │ → NAS
│   └─ oss.csi.alibabacloud.com        │ → OSS
│                                       │
│  terway (CNI)                         │
└───────────────────────────────────────┘
       │
       │ 阿里云 Open API + RAM 角色
       ▼
┌──────── 阿里云 ────────────────────────┐
│  ECS / ESS / SLB / 云盘 / NAS / OSS    │
└─────────────────────────────────────────┘

部署

ACK(托管 K8s)

ACK 自带所有组件,不用装

自建 K8s(kubeadm)

# 1. 创建 RAM 角色 + AccessKey(权限策略见项目 README)
# 2. 装 cloud-controller-manager
kubectl apply -f https://raw.githubusercontent.com/AliyunContainerService/cloud-provider-alibaba-cloud/master/docs/deploy.md

# 3. 配 kubelet provider id
--provider-id=cn-hangzhou.i-xxxxx

# 4. 装 csi-plugin
kubectl apply -f https://raw.githubusercontent.com/AliyunContainerService/kubernetes-csi-driver/master/deploy/disk/run.sh

常用用法

SLB Service

apiVersion: v1
kind: Service
metadata:
  name: web
  annotations:
    service.beta.kubernetes.io/alicloud-loadbalancer-spec: slb.s1.small
    service.beta.kubernetes.io/alicloud-loadbalancer-address-type: internet
    service.beta.kubernetes.io/alicloud-loadbalancer-bandwidth: "5"
spec:
  type: LoadBalancer
  selector:
    app: web
  ports:
  - port: 80
    targetPort: 8080

云盘 StorageClass

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alicloud-disk-essd
provisioner: disk.csi.alibabacloud.com
parameters:
  type: cloud_essd
  regionId: cn-hangzhou
  zoneId: cn-hangzhou-h
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer

NAS(共享存储)

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alicloud-nas
provisioner: nas.csi.alibabacloud.com
parameters:
  server: "xxxxxxx.cn-hangzhou.nas.aliyuncs.com"
  paths: "/share"

优缺点

  • ✅ ACK 自带,自建 K8s 也能用
  • ✅ 跟阿里云服务深度集成(SLB / ESS / 云盘 / NAS)
  • ✅ 中文文档 + 案例多
  • ✅ RAM 角色精细授权
  • 绑死阿里云
  • ❌ SLB 创建慢(~1 分钟起步)
  • ❌ 部分高级特性要 ack-admin 配合(仅 ACK 托管版)

适用场景

  • 阿里云上跑 K8s
  • 用 SLB 做 ingress(生产环境 NLB 级别)
  • 用云盘 / NAS 做持久化

监控 / 排查

# cloud-controller-manager
kubectl -n kube-system get pods -l app=cloud-controller-manager

# csi-plugin
kubectl -n kube-system get pods -l app=csi-plugin

# SLB 创建
kubectl describe svc <lb-svc>

# 阿里云侧
aliyun slb DescribeLoadBalancers
aliyun ecs DescribeInstances

一句话

阿里云上 K8s 标配,ACK 自带,自建也能用