You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在kubeadm搭建的AWS EC2 Kubernetes集群中使用EBS持久卷

配置AWS EBS作为Kubernetes 1.19集群持久卷步骤

前置准备:配置EC2实例IAM权限

你需要先为所有控制平面节点、工作节点关联的IAM角色添加EBS操作权限,权限策略示例如下:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:AttachVolume",
        "ec2:CreateSnapshot",
        "ec2:CreateTags",
        "ec2:CreateVolume",
        "ec2:DeleteSnapshot",
        "ec2:DeleteVolume",
        "ec2:DescribeInstances",
        "ec2:DescribeSnapshots",
        "ec2:DescribeTags",
        "ec2:DescribeVolumes",
        "ec2:DetachVolume"
      ],
      "Resource": "*"
    }
  ]
}

配置集群开启AWS云提供商

kubeadm默认部署的1.19版本集群未启用AWS云提供商,需要手动修改组件配置:

1. 调整控制平面组件参数

首先在所有控制平面节点创建空的云配置文件:
touch /etc/kubernetes/cloud-config

  • 编辑/etc/kubernetes/manifests/kube-apiserver.yaml,在command列表中添加以下参数:
    • --cloud-provider=aws
    • --cloud-config=/etc/kubernetes/cloud-config
  • 编辑/etc/kubernetes/manifests/kube-controller-manager.yaml,同样添加上述两个参数,保存后控制平面组件会自动重启。

2. 调整所有节点的kubelet配置

在所有控制平面、工作节点执行以下操作:

  • 编辑/var/lib/kubelet/config.yaml,添加配置项cloud-provider: aws
  • 执行命令重启kubelet:systemctl daemon-reload && systemctl restart kubelet
  • 重启完成后执行kubectl get nodes确认所有节点状态为Ready。

部署AWS EBS CSI驱动

1.19版本原生树内EBS插件已标记废弃,推荐部署CSI驱动实现EBS卷管理,直接部署兼容1.19版本的EBS CSI驱动清单即可,部署完成后执行以下命令确认驱动运行正常:
kubectl get pods -n kube-system | grep ebs-csi
所有CSI相关Pod状态为Running即为部署成功。

创建EBS存储类

创建存储类配置文件sc.yaml,内容示例如下:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: aws-ebs-sc
provisioner: ebs.csi.aws.com
volumeBindingMode: WaitForFirstConsumer
parameters:
  type: gp2
  fsType: ext4
reclaimPolicy: Retain

执行命令创建存储类:kubectl apply -f sc.yaml
如果需要将该存储类设置为集群默认存储类,执行以下命令:
kubectl patch storageclass aws-ebs-sc -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

功能验证

创建测试PVC配置文件test-pvc.yaml:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: ebs-test-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: aws-ebs-sc
  resources:
    requests:
      storage: 10Gi

执行kubectl apply -f test-pvc.yaml创建PVC,再创建测试Pod挂载该PVC,执行kubectl get pv,pvc查看状态,PVC状态为Bound即代表配置生效。

注意事项

  • EBS卷和挂载的EC2实例必须在同一可用区,volumeBindingMode设置为WaitForFirstConsumer可避免可用区不匹配问题
  • 集群节点名称必须和EC2实例的私有DNS名称一致,否则云提供商识别会出错
  • 如果选择使用原生树内EBS插件,不需要部署CSI驱动,将存储类的provisioner参数改为kubernetes.io/aws-ebs即可

内容的提问来源于stack exchange,提问作者Suresh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 00:36:03