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

无公网访问的私有子网Microk8s集群EBS卷配置失败求助

无公网访问Microk8s集群中EBS CSI驱动配置失败的解决办法

问题根源

从日志核心错误能明确:

  • 首先是DNS解析ec2.eu-west-2.amazonaws.com失败,提示集群使用的DNS服务器(10.152.183.10)工作异常
  • 后续请求超时完全是因为域名解析失败,无法通过PrivateLink连接到EC2服务

在纯私有子网(无公网、无NAT)环境中,仅配置EC2的PrivateLink端点远远不够,还需要满足三个核心条件:DNS能正确解析AWS服务域名到PrivateLink内网IP、PrivateLink安全组放通集群节点的访问流量、EBS CSI驱动依赖的所有AWS服务都配置了对应的PrivateLink端点。

解决步骤

1. 补全必要的PrivateLink端点

EBS CSI驱动正常工作需要为以下AWS服务创建PrivateLink接口端点:

  • EC2服务:com.amazonaws.<你的区域>.ec2
  • EBS服务:com.amazonaws.<你的区域>.ebs
  • STS服务(如果使用IAM角色授权CSI驱动):com.amazonaws.<你的区域>.sts

创建时注意:

  • 端点必须部署在集群所在的私有子网内
  • 端点的安全组需允许集群节点(或节点所属安全组)的443端口(HTTPS)入站流量

2. 开启VPC私有DNS解析

要让集群Pod将AWS服务域名解析到PrivateLink内网IP,需完成两项配置:

  • 在VPC的DNS设置中开启启用DNS解析和启用DNS主机名
  • 为每个已创建的PrivateLink端点开启启用私有DNS选项(创建时勾选,或事后编辑端点配置)

开启私有DNS后,ec2.eu-west-2.amazonaws.com这类域名会被解析到PrivateLink的内网IP,而非公网IP。

3. 验证DNS解析状态

在集群节点或CSI驱动的Pod中执行以下命令验证解析结果:

nslookup ec2.eu-west-2.amazonaws.com

若返回VPC内网网段的IP(如10.x.x.x),说明DNS配置正常;若返回公网IP,需检查私有DNS是否正确启用。

4. 检查CSI驱动权限配置

确保EBS CSI驱动使用的服务账号(或节点IAM角色)拥有ec2:CreateVolume、ec2:AttachVolume等必要权限,且权限策略允许通过PrivateLink访问EC2服务。

对于Microk8s部署的EBS CSI驱动,无需额外指定端点配置,AWS SDK会在DNS解析正常时自动使用PrivateLink。

5. 重启CSI驱动Pod

修改配置后,重启CSI控制器和节点Pod使配置生效:

kubectl delete pods -n kube-system -l app=ebs-csi-controller
kubectl delete pods -n kube-system -l app=ebs-csi-node

验证配置有效性

创建测试PVC和Pod,确认EBS卷可正常创建:

# 测试PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: ebs-test-claim
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 4Gi
  storageClassName: ebs-sc # 替换为你的EBS存储类名称
# 测试Pod
apiVersion: v1
kind: Pod
metadata:
  name: ebs-test-pod
spec:
  containers:
  - name: test-container
    image: busybox:1.28
    command: ['sh', '-c', 'echo 测试运行中... && sleep 3600']
    volumeMounts:
    - mountPath: /data
      name: test-volume
  volumes:
  - name: test-volume
    persistentVolumeClaim:
      claimName: ebs-test-claim

应用后检查状态:

kubectl get pvc ebs-test-claim
kubectl get pod ebs-test-pod

若PVC状态变为Bound且Pod正常运行,说明配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:47:17