您好我使用本教程在Ubuntu 16.04上安装了一个新的kubernetes集群:
https://blog.alexellis.io/kubernetes-in-10-minutes/
然而,只要我尝试访问我的api(例如:https://[server-ip]:6443 / api / v1 / namespaces),我就会收到以下消息
{
"kind": "Status",
"apiVersion": "v1",
"metadata": {},
"status": "Failure",
"message": "namespaces is forbidden: User \"system:bootstrap:a916af\" cannot list namespaces at the cluster scope",
"reason": "Forbidden",
"details": {
"kind": "namespaces"
},
"code": 403
}
有谁知道如何解决这个或我做错了什么?
答案 0 :(得分:0)
虽然我没有完成该教程,但您提出请求的服务帐户无法访问群集级信息,例如列出命名空间。 RBAC(基于角色的访问控制)将用户与Role或ClusterRole绑定,后者授予他们不同的权限。我的猜测是服务帐户不应该知道存在哪些其他命名空间,因此无权列出它们。
就“修复”而言,除了创建具有正确权限的serviceaccount / user之外,该教程还会对存储在$HOME/.kube/config
的配置文件进行多次引用,该文件存储应该具有访问权限的用户的凭据到群集级资源,包括列出命名空间。你可以从那里开始。
答案 1 :(得分:0)
您应该将角色为cluster-admin的服务帐户system:serviceaccount:default:default(绑定到Pod的默认帐户)绑定,只需创建一个Yaml(名称为fabric8-rbac.yaml),并包含以下内容:>
我通过创建来解决
# NOTE: The service account `default:default` already exists in k8s cluster.
# You can create a new account following like this:
#---
#apiVersion: v1
#kind: ServiceAccount
#metadata:
# name: <new-account-name>
# namespace: <namespace>
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: fabric8-rbac
subjects:
- kind: ServiceAccount
# Reference to upper's `metadata.name`
name: default
# Reference to upper's `metadata.namespace`
namespace: default
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
kubectl apply -f fabric8-rbac.yaml