我尝试创建一个具有权限的服务帐户,以获取有关端点 pod IP 的信息并恢复权限问题。
创建服务帐户并为其授予正确的权限:
$ kubectl create role endpoints-reader --verb=get --verb=list --resource=endpoints
$ kubectl create serviceaccount endpoints-reader-sa
$ kubectl create rolebinding default-endpoints-reader --role=endpoints-reader --serviceaccount=endpoints-reader-sa:endpoints-reader-sa
将此 sa 添加到部署 YAML 文件中:
...
spec:
serviceAccountName: endpoints-reader-sa
containers:
- name: ...
我声明了 pod 并登录到它 (ssh)。现在我想运行一个 REST 调用来提取信息:
$ TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token);
$ curl https://kubernetes.default.svc/api/v1/namespaces/XXX/endpoints --silent --header "Authorization: Bearer $TOKEN" --insecure
{
"kind": "Status",
"apiVersion": "v1",
"metadata": {
},
"status": "Failure",
"message": "endpoints is forbidden: User \"system:serviceaccount:XXX:endpoints-reader-sa\" cannot list resource \"endpoints\" in API group \"\" in the namespace \"XXX\"",
"reason": "Forbidden",
"details": {
"kind": "endpoints"
},
"code": 403
}
我做错了什么?