显示未授权的 Kubernetes 仪表板

标签 kubernetes dashboard kubeadm

我在本地使用 KUBEADM 工具配置了具有 1 个主节点和 4 个工作节点的 kubernetes 集群。所有节点都运行良好。部署了一个应用程序并能够从浏览器访问该应用程序。我尝试了很多方法来使用 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 已创建。

运行以下命令:

$ 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。它显示相同的未经授权的错误。

最佳答案

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

 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

关于显示未授权的 Kubernetes 仪表板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53521962/

相关文章:

docker - Kubernetes 使用 flannel 创建容器时卡在 "ContainerCreating"-state

拉取 docker 镜像时 Kubernetes ImagePullBackOff 错误

kubernetes - 选择正确的NodePort

用于集成的 Java Portal 引擎

python - DataTable - 单元格中的唯一颜色子字符串

css - 在 OpenStack Horizo​​n 中更改字体

kubernetes - kubeadm v1.7.2 主机名 ""无法访问

docker - 为什么 minikube 需要 VM

amazon-web-services - 为什么 Kubernetes apiserver 向 etcd 服务器提供了错误的证书?

kubernetes - 如何为 Kubernetes 集群确定合适的 pod CIDR 值?