首页 文章

Kubernetes仪表板显示未经授权

提问于
浏览
0

我使用KUBEADM工具IN LOCAL为kubernetes集群配置了一个主节点和4个工作节点 . 所有节点都运行正常 . 部署了一个应用程序,并能够从浏览器访问该应用我尝试了很多方法来使用kubectl创建仪表板,但我失败了 .

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

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

尝试使用网址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 回答

  • 1

    使用 --accept-hosts 选项运行kubectl proxy命令

    kubectl proxy --address="172.20.22.101" -p 8001  --accept-hosts="^*$"
    

    它会工作正常 .

    Note: this is not recommended for production grade kubernetes clusters, since you're accessing the dashboard through plain http.

    更安全的替代方案是通过像这样的ssh隧道访问仪表板 .

    在一个终端运行中:

    kubectl proxy
    

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

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

相关问题