Kubernetes API:无法列出资源“;豆荚“;在API组中“&引用;

Kubernetes API:无法列出资源“;豆荚“;在API组中“&引用;,kubernetes,Kubernetes,我正在尝试制作一个豆荚,作为其他豆荚的控制器,基本上根据需要创建和停止它们。我最初创建了一个ServiceAccount、一个Role、一个RoleBinding和一个简单的Alpine容器,我可以用它来测试curl,所有这些都在一个新的名称空间中。这是我所有这些的YAML文件: apiVersion:v1 种类:名称空间 元数据: 名称:nfv 标签: 名称:nfv --- 版本:v1 种类:服务帐户 元数据: 名称:nfv svc 名称空间:nfv --- apiVersion:rbac.a

我正在尝试制作一个豆荚,作为其他豆荚的控制器,基本上根据需要创建和停止它们。我最初创建了一个ServiceAccount、一个Role、一个RoleBinding和一个简单的Alpine容器,我可以用它来测试
curl
,所有这些都在一个新的名称空间中。这是我所有这些的YAML文件:

apiVersion:v1 种类:名称空间 元数据: 名称:nfv 标签: 名称:nfv --- 版本:v1 种类:服务帐户 元数据: 名称:nfv svc 名称空间:nfv --- apiVersion:rbac.authorization.k8s.io/v1 种类:角色 元数据: 名称:nfv角色 名称空间:nfv 规则: -蜂群: - '' 资源: -“豆荚” 动词: -“创建” -“删除” -“得到” -“列表” -“补丁” --- apiVersion:rbac.authorization.k8s.io/v1 种类:RoleBinding 元数据: 名称:nfv rolebind 学科: -种类:服务帐户 名称:nfv svc 名称空间:nfv roleRef: 种类:角色 名称:nfv角色 apiGroup:rbac.authorization.k8s.io --- 版本:v1 种类:豆荚 元数据: 名称:sdn测试 名称空间:nfv 规格: serviceAccountName:nfv svc 容器: -图片:阿尔卑斯山:3.9 名称:sdn测试容器 命令: -睡眠 - "10000" 然后,我连接到alpine测试容器并执行以下操作:

apk添加--更新curl
CA_CERT=/run/secrets/kubernetes.io/servicecomport/CA.crt
NAMESPACE=$(cat/var/run/secrets/kubernetes.io/servicecomport/NAMESPACE)
令牌=$(cat/run/secrets/kubernetes.io/servicecomport/TOKEN)
curl-H“授权:持票人$TOKEN”--cacert$CA_证书https://kubernetes.default/api/v1/namespaces/$NAMESPACE/pods
然后我得到以下输出:

{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {
    
  },
  "status": "Failure",
  "message": "pods is forbidden: User \"system:serviceaccount:nfv:nfv-svc\" cannot list resource \"pods\" in API group \"\" in the namespace \"nfv\"",
  "reason": "Forbidden",
  "details": {
    "kind": "pods"
  },
  "code": 403
}

角色
应该有足够的权限列出我的命名空间中的pod,那么为什么它不起作用呢?我错过了什么?我正在Ubuntu 16.04上使用Kubernetes v1.18.2。

RoleBinding
中需要一个名称空间
名称空间:nfv
,因为它是一个名称空间范围的资源

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
    name: nfv-rolebind
    namespace: nfv
subjects:
    - kind: ServiceAccount
      name: nfv-svc
      namespace: nfv
roleRef:
    kind: Role
    name: nfv-role
    apiGroup: rbac.authorization.k8s.io
要验证权限,可以使用以下命令

kubectl auth can-i list pods --as=system:serviceaccount:nfv:nfv-svc -n nfv
yes

我从来没有感到如此愚蠢:)我只是添加了名称空间,并修复了它。