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