Kubernetes仪表板显示未经授权

时间:2018-11-28 14:41:11

标签: kubernetes dashboard kubeadm

我在本地使用KUBEADM工具将kubernetes集群配置为具有一个主节点和4个工作节点。所有节点都运行良好。部署了一个应用程序,并能够从浏览器访问该应用程序。我尝试了多种使用kubectl创建仪表板的方法,但失败了。

TRY1:直接尝试使用以下命令:

$ sudo kubectl proxy --address="172.20.22.101" -p 8001 

试图使用URL http://172.20.22.101:8001/api/v1访问仪表板,但表示未经授权。

TRY2:创建了以下内容的dashboard-admin.yaml文件:

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
   name: kubernetes-dashboard
   labels:
     k8s-app: kubernetes-dashboard
roleRef:
   apiGroup: rbac.authorization.k8s.io
   kind: ClusterRole
   name: cluster-admin
subjects:
-  kind: ServiceAccount
   name: kubernetes-dashboard
   namespace: kube-system

并运行以下命令:

$ kubectl create -f dashboard-admin.yaml

显示给我:clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created.

运行以下命令:

$ sudo kubectl proxy --address="172.20.22.101" -p 443

运行正常。我正在从浏览器访问http://172.20.22.101:443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/ URL。显示相同的未授权错误。

1 个答案:

答案 0 :(得分:1)

使用-accept-hosts 选项

运行kubectl代理命令
 kubectl proxy --address="172.20.22.101" -p 8001  --accept-hosts="^*$"

它将正常工作。

注意:不建议将其用于生产级kubernetes集群,因为您是通过纯http访问仪表板的。

更安全的选择是像这样通过ssh隧道运行对仪表板的访问。

在一个终端运行中:

kubectl proxy 

在另一个终端中运行ssh隧道到localhost:8001(默认的kubernetes仪表板端口)

ssh -NT -l SSH_USER -p SSH_PORT K8S_CONTROLLER_IP_ADDR -L 8001:localhost:8001