显示未经授权的 Kubernetes 仪表板
Posted
技术标签:
【中文标题】显示未经授权的 Kubernetes 仪表板【英文标题】:Kubernetes dashboard showing Unauthorized 【发布时间】:2019-04-30 12:13:34 【问题描述】:我在本地使用 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 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。它显示相同的未经授权的错误。
【问题讨论】:
我正在按照以下步骤安装仪表板:assistanz.com/steps-to-install-kubernetes-dashboard。当我尝试使用 url 访问该站点时:172.20.22.101:443/api/v1/namespaces/kube-system/services/…。它显示连接被拒绝。我观察了 nohup.out 中的输出,它显示以下错误:I1203 12:28:05.880828 15591 log.go:172] http: proxy error: dial tcp [::1]:8080: connect: connection denied跨度> 【参考方案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
【讨论】:
我已经编辑了我的答案,您必须使用 --accept-hosts 选项允许流量从特定来源到达 kubernetes 仪表板 我已经执行了 kubectl proxy 并从其他终端完成了 ssh。当我做 ssh 时。它什么也没显示。 我被执行了 kubectl proxy --address="172.20.22.101" -p 8001 --accept-hosts="^*$"。并尝试访问 URL:172.20.22.101:8001/api/v1/namespaces/kube-system/services。它显示的是 json 响应而不是仪表板。你能告诉我获取仪表板的网址吗 在 ssh 隧道的情况下,该命令将保持隧道打开,并且不会输出任何内容,要访问仪表板,请使用此 url:localhost:8001/api/v1/namespaces/kube-system/services/…,如果使用 --accept-hosts 选项,您可以使用此 url 访问仪表板:172.20.22.101:8001/api/v1/namespaces/kube-system/services/… "kind": "Status", "apiVersion": "v1", "metadata": , "status": "Failure", "message": "没有可用于服务的端点\"http:kubernetes-dashboard:\"", "reason": "ServiceUnavailable", "code": 503以上是关于显示未经授权的 Kubernetes 仪表板的主要内容,如果未能解决你的问题,请参考以下文章
AWS Bitnami Parse Server - 添加 HTTP 身份验证使我在解析仪表板中的应用程序“未经授权”