我在 Google Kubernetes Engine 上使用 Kubernetes 1.8.6,并有一个运行 Alpine 的 Pod 作为StatefulSet
.
我已使用以下方式登录我的 podkubectl exec -it my-pod-0 -- /bin/sh
然后在提示符下运行以下命令:
$ CA_CERT=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
$ TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
$ NAMESPACE=$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace)
$ curl --cacert $CA_CERT -H "Authorization: Bearer $TOKEN" "https://kubernetes
/api/v1/namespaces/$NAMESPACE/services/"
不幸的是,返回了 403 Forbidden 错误:
{
"kind": "Status",
"apiVersion": "v1",
"metadata": {
},
"status": "Failure",
"message": "services is forbidden: User \"system:serviceaccount:default:default\" cannot list services in the namespace \"default\": Unknown user \"system:serviceaccount:default:default\"",
"reason": "Forbidden",
"details": {
"kind": "services"
},
"code": 403
我究竟做错了什么?
你没有做错任何事。该 Pod 的服务帐户(在 Pod 的 serviceAccountName 中指定)根本没有任何 API 权限。
您可以向该服务帐户授予查看角色,如下所示:
kubectl create rolebinding default-viewer \
--clusterrole=view \
--serviceaccount=default:default \
--namespace=default
See https://kubernetes.io/docs/admin/authorization/rbac/#service-account-permissions https://kubernetes.io/docs/admin/authorization/rbac/#service-account-permissions有关向服务帐户授予权限的更多详细信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)