在AWS EKS部署Strimzi持久化Kafka时Zookeeper Pod处于Pending状态
解决EKS 1.24 + Strimzi 0.33 持久化ZooKeeper Pod Pending问题
核心原因
EKS 1.24版本移除了内置的EBS存储驱动,必须使用AWS EBS CSI驱动才能动态创建持久化卷。临时部署(kafka-ephemeral-single.yaml)不依赖持久化PV,所以能正常运行;而持久化部署需要动态生成EBS卷,因CSI驱动未正确配置导致PVC无法绑定,进而Pod处于Pending状态。
解决步骤
1. 检查并安装AWS EBS CSI驱动
首先确认集群中是否已部署EBS CSI驱动:
kubectl get pods -n kube-system -l app.kubernetes.io/name=aws-ebs-csi-driver
如果没有返回运行中的Pod,使用eksctl快速安装:
eksctl create addon --name aws-ebs-csi-driver --cluster <你的集群名称> --force
安装完成后再次检查Pod状态,确保所有CSI驱动Pod处于Running状态。
2. 修正gp2存储类的Provisioner配置
默认的gp2存储类可能仍使用旧的内置驱动标识kubernetes.io/aws-ebs,需要改为CSI驱动的标识ebs.csi.aws.com:
查看当前存储类配置:
kubectl get storageclass gp2 -o yaml
若provisioner字段不是ebs.csi.aws.com,直接编辑存储类:
kubectl edit storageclass gp2
将provisioner值修改为ebs.csi.aws.com,保存退出。
3. 验证CSI驱动的IAM权限
EBS CSI驱动需要足够的IAM权限才能创建/管理EBS卷,确保其ServiceAccount关联了正确的IAM角色:
检查kube-system下的CSI服务账户:
kubectl get sa -n kube-system ebs-csi-controller-sa
确认该账户已通过IRSA(IAM Roles for Service Accounts)关联了带有AmazonEBSCSIDriverPolicy权限的IAM角色。如果未关联,需要:
- 创建IAM策略(直接使用AWS托管的
AmazonEBSCSIDriverPolicy) - 创建IAM角色并绑定到
kube-system/ebs-csi-controller-sa服务账户 - 确保CSI驱动部署使用该ServiceAccount
4. 重新触发PVC绑定
修改配置后,删除原有异常的PVC并重新部署Strimzi集群:
kubectl delete pvc data-my-cluster-zookeeper-0 kubectl apply -f kafka-persistent-single.yaml
等待几分钟后检查Pod状态:
kubectl get pods -n <你的命名空间>
确认ZooKeeper Pod进入Running状态。
内容的提问来源于stack exchange,提问作者Mahendran
相关产品推荐
相关产品推荐

