我正在运行启用了 RBAC 的 Kubernetes 1.6.2。我已经创建了一个用户kube-admin
具有以下集群角色绑定
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: k8s-admin
subjects:
- kind: User
name: kube-admin
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
当我尝试kubectl exec
进入正在运行的 Pod 时出现以下错误。
kubectl -n kube-system exec -it kubernetes-dashboard-2396447444-1t9jk -- /bin/bash
error: unable to upgrade connection: Forbidden (user=system:anonymous, verb=create, resource=nodes, subresource=proxy)
我的猜测是我错过了ClusterRoleBinding
ref,我缺少哪个角色?
kubectl 和 api 之间的连接良好,并且授权正确。
为了满足 exec 请求,apiserver 会联系运行 pod 的 kubelet,而该连接是被禁止的。
您的 kubelet 配置为对请求进行身份验证/授权,并且 apiserver 未提供 kubelet 识别的身份验证信息。
apiserver 向 kubelet 进行身份验证的方式是使用客户端证书和密钥,配置为--kubelet-client-certificate=... --kubelet-client-key=...
提供给 API 服务器的标志。
See https://kubernetes.io/docs/admin/kubelet-authentication-authorization/#overview了解更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)