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

RKE部署的双节点K8S集群挂载AWS EBS PV时遇权限认证错误

解决RKE部署K8S集群使用EBS PV的凭证权限问题

看起来你遇到的核心问题是Kubernetes的云控制器组件无法获取AWS凭证,导致创建EBS PV时触发权限禁止和凭证缺失错误。你在本地终端导出的环境变量,根本没法被集群内部运行的kube-controller-manager等组件读取到——毕竟这些组件是跑在Pod里的,和你的终端环境完全隔离。下面是具体的解决步骤:

1. 给EC2节点绑定IAM角色(推荐安全方案)

这是AWS官方最推荐的方式,不需要硬编码密钥:

  • 新建一个IAM角色,给它添加AmazonEBSFullAccess权限(或者更精细的权限,比如仅允许在us-east-2区域创建/挂载EBS卷)
  • 将这个IAM角色关联到所有K8S集群的EC2节点(master和worker都要加)
  • 重启节点或者重新执行rke up,让节点的IAM角色生效。之后K8S组件会自动通过EC2实例元数据服务获取凭证,无需手动配置密钥

2. 在RKE配置中注入AWS凭证(临时应急方案)

如果暂时没法配置IAM角色,可以修改RKE的集群配置文件,给云控制器组件直接注入凭证:

  • 打开你的cluster.yml文件,找到services下的kube-controller-manager配置块,添加环境变量:
services:
  kube-controller-manager:
    extra_args:
      cloud-provider: aws
    env:
      - name: AWS_ACCESS_KEY_ID
        value: "你的AWS访问密钥ID"
      - name: AWS_SECRET_ACCESS_KEY
        value: "你的AWS秘密访问密钥"
  • 执行rke up更新集群配置,让新的环境变量生效
  • 之后再尝试运行kubectl create -f aws-persistent-volume.yml

3. 检查PV配置文件的正确性

确保你的PV YAML没有配置错误,比如:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: ebs-pv
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  awsElasticBlockStore:
    volumeID: "vol-xxxxxx" # 替换成你实际的EBS卷ID
    fsType: ext4

注意:EBS卷必须和集群节点在同一个可用区(不是仅同区域),否则无法挂载。

4. 验证凭证是否生效

执行命令检查kube-controller-manager Pod的环境变量,确认凭证已注入:

kubectl describe pod kube-controller-manager-<你的节点名称> -n kube-system | grep -i aws

如果用IAM角色方案,你可以查看Pod日志,确认它能正常从实例元数据服务获取凭证。

最后提醒下,尽量用IAM角色的方式,硬编码密钥会带来安全风险,后续维护也麻烦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:46:52