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

如何修复EKS 1.23集群中aws-ebs-csi-driver的"no topology key found on CSINode"错误?

解决EKS 1.23部署AWS EBS CSI Driver时的Topology Key报错

问题根源

这个报错是因为EBS CSI Driver的节点守护进程没把拓扑信息正确注册到CSINode资源里,要么就是StorageClass的拓扑键配置出错。EKS 1.23里CSI驱动默认开启拓扑感知,得保证节点侧组件正常运行,且能正确上报拓扑数据。

排查修复步骤

1. 检查EBS CSI节点组件状态

直接运行命令查看守护进程和对应的Pod是否在所有节点正常运行:

kubectl get daemonset ebs-csi-node -n kube-system
kubectl get pods -n kube-system -l app=ebs-csi-node

如果有Pod未正常启动,查看日志定位问题:

kubectl logs -n kube-system <ebs-csi-node-pod-name> -c node-driver-registrar
kubectl logs -n kube-system <ebs-csi-node-pod-name> -c ebs-plugin

2. 验证CSINode资源的拓扑信息

选取任意节点,查看对应的CSINode资源是否包含topology.ebs.csi.aws.com/zone拓扑键:

kubectl get csinode <node-name> -o yaml

正常情况下,spec.drivers数组中应该有如下配置:

spec:
  drivers:
  - name: ebs.csi.aws.com
    nodeID: <node-id>
    topologyKeys:
    - topology.ebs.csi.aws.com/zone

如果没有该拓扑键,说明节点组件未完成注册,重启守护进程即可:

kubectl rollout restart daemonset ebs-csi-node -n kube-system

3. 检查StorageClass配置

查看gp2 StorageClass的配置是否正确,动态创建卷时,要么配置allowedTopologies,要么保证默认拓扑匹配逻辑正常。先查看当前配置:

kubectl get storageclass gp2 -o yaml

如果未配置allowedTopologies,可以添加以下内容(替换为你的集群可用区):

allowedTopologies:
- matchLabelExpressions:
  - key: topology.ebs.csi.aws.com/zone
    values:
    - us-west-2a
    - us-west-2b
    - us-west-2c

注意不要配置错误的拓扑键,同时确保CSI驱动的provisioner支持动态拓扑选择。

4. 确认IAM权限配置

EBS CSI节点组件需要权限访问EC2元数据获取可用区信息,不管是使用节点IAM角色还是IRSA配置,都要确保包含ec2:DescribeAvailabilityZones等相关权限。如果用IRSA,检查Service Account的注解和IAM角色绑定是否正确。

5. 重新创建PVC

完成上述检查后,删除原有PVC并重新创建,观察是否能正常生成卷:

kubectl delete pvc <你的PVC名称>
kubectl apply -f <你的PVC配置文件>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:40:48