Kubernetes 仪表板显示未经授权

问题描述 投票:0回答:2

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

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

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

尝试使用网址http://172.20.22.101:8001/api/v1访问仪表板,但显示未经授权。

尝试2:创建了包含以下内容的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。它显示相同的未经授权的错误。

kubernetes dashboard kubeadm
2个回答
2
投票

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

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

它会工作得很好。

注意:对于生产级 kubernetes 集群,不建议这样做,因为您是通过普通 http 访问仪表板。

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

在一个终端运行:

kubectl proxy 

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

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

0
投票

这有效。 https://www.latcoding.com/how-to-solve-kubernetes-dashboard-unauthorized-401-invalid-credentials-provided/

解决方案 1:从 kubectl proxy 迁移到 kubectl port-forward。在开头添加 https,否则您将收到 400 Bad Request 错误。即 https://localhost:8443/

解决方案2:降级kubernetes仪表板版本并继续使用kubectl代理

致谢作者 [Ambar Hasbiyatmoko]。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.