每当我尝试kubectl logs
在 Azure 上运行时,都会出现以下错误:
来自服务器的错误(禁止):禁止(用户 = 系统:匿名,动词 = 获取,资源 = 节点,子资源 = 代理)( pods/log )
kubectl exec
和kubectl attach
大多数 helm 命令都会返回类似的错误:
错误:无法升级连接:禁止(用户=系统:匿名,动词=创建,资源=节点,子资源=代理)
这是默认的 Azure Aks 安装。从 1.8.10 升级到 1.9.x 后出现问题
kubectl api-versions
入场注册.k8s.io/v1alpha1 入场注册.k8s.io/v1beta1 apiextensions.k8s.io/v1beta1 apiregistration.k8s.io/v1beta1 apps/v1 apps/v1beta1 apps/v1beta2 身份验证.k8s.io/v1 身份验证.k8s.io/v1beta1 授权.k8s.io/v1 授权.k8s.io/v1beta1 自动缩放/v1 自动缩放/v2beta1 批次/v1 批次/v1beta1 证书.k8s.io/v1beta1 事件.k8s.io/v1beta1 扩展/v1beta1 网络.k8s.io/v1 政策/v1beta1 rbac.authorization.k8s.io/v1 rbac.authorization.k8s.io/v1beta1 存储.k8s.io/v1 storage.k8s.io/v1beta1 v1
kubectl version
客户端版本:version.Info{Major:“1”,Minor:“9”,GitVersion:“v1.9.1”,GitCommit:“3a1c9449a956b6026f075fa3134ff92f7d55f812”,GitTreeState:“clean”,BuildDate:“2018-01-04T11:52:23Z”,GoVersion:“go1.9.2”,编译器:“gc”,平台:“linux / amd64”}
服务器版本:version.Info{Major:“1”,Minor:“9”,GitVersion:“v1.9.6”,GitCommit:“9f8ebd171479bec0ada837d7ee641dec2f8c6dd1”,GitTreeState:“clean”,BuildDate:“2018-03-21T15:13:31Z”,GoVersion:“go1.9.3”,编译器:“gc”,平台:“linux/amd64”}
答案1
我设法通过应用这个 yaml 来创建一种解决方法:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: anonymous-logs-role
rules:
- apiGroups: [""]
resources: ["nodes/proxy"]
verbs: ["create", "get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: anonymous-logs-binding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: anonymous-logs-role
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: system:anonymous
这样,日志、执行和附加工作就完成了,并且 api 服务器不会暴露任何信息。不确定是否有任何缺点...
答案2
此命令将赋予您的用户(您)集群管理员角色。
kubectl create clusterrolebinding me-cluster-admin \
--clusterrole=cluster-admin \
--user=system:anonymous