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

通过CURL调用EKS集群API出现403错误如何解决

报错核心原因

403错误是由于CURL请求未携带Kubernetes合法身份凭证,EKS APIServer将请求识别为未认证的匿名用户system:anonymous,该用户默认无任何资源访问权限,无法访问default命名空间下的db1资源。

解决步骤

1. 本地配置EKS访问凭证

首先确保本地已安装AWS CLI,且使用的IAM身份有EKS集群访问权限,执行命令生成本地kubeconfig配置:
aws eks update-kubeconfig --name <替换为你的EKS集群名> --region <替换为集群所在AWS区域>
凭证生成后默认保存到~/.kube/config文件。

2. 给CURL请求添加认证凭证

两种可用方案按需选择:

  • 方案一:通过kubectl代理发起请求(无需手动处理凭证,最便捷)
    启动本地代理:kubectl proxy --port=8080 &
    直接请求本地代理端口:curl http://localhost:8080/api/v1/namespaces/default/db1
  • 方案二:手动提取token带入请求
    先获取当前身份的认证token:TOKEN=$(kubectl config view --raw -o jsonpath='{.users[?(@.name == "eks-<替换为你的集群名>")].user.token}')
    发起带认证的请求:curl -k -H "Authorization: Bearer $TOKEN" https://<替换为你的EKS APIServer地址>/api/v1/namespaces/default/db1

3. 补充RBAC权限(如仍报403)

如果完成前两步后还是提示权限不足,说明你使用的身份没有db1资源的访问权限,需要创建对应RBAC规则:

  1. 新建db1-role.yaml文件,内容如下:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: db1-reader
rules:
- apiGroups: [""]
  resources: ["db1"]
  verbs: ["get", "list", "watch"]
  1. 新建db1-rolebinding.yaml文件,将<替换为你的IAM用户名/ARN>替换为实际使用的身份标识:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-db1
  namespace: default
subjects:
- kind: User
  name: <替换为你的IAM用户名/ARN>
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: db1-reader
  apiGroup: rbac.authorization.k8s.io
  1. 执行命令创建资源:
    kubectl apply -f db1-role.yaml
    kubectl apply -f db1-rolebinding.yaml

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:15:07