阿里云
概念
阿里云 ACK(Alibaba Cloud Container Service for Kubernetes)的 cloud-controller-manager 让 K8s 集成阿里云资源(SLB / NAS / OSS / 阿里云盘 / ECS)。
- 项目:https://github.com/AliyunContainerService/cloud-provider-alibaba-cloud
- 配套:
- cloud-controller-manager:节点 / Service 控制器
- csi-plugin:阿里云盘 / NAS / OSS CSI driver
- terway / flannel:CNI(ACK 默认 terway)
集成的能力
| 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 自带,自建也能用。