问题
目前尚不清楚如何使用HTTPS访问仪表板并且无法找到明确的文档(它只是告诉使用kubectl代理) . 那么使用HTTPS访问仪表板的方式是什么?
Kubernetes Dashboard GitHub告诉:
不推荐使用快捷方式http:// localhost:8001 / ui . 使用上面显示的完整代理URL .
K8S Dashboard Recommended Setup或K8S Dashboard FAQ不告诉如何在没有代理的情况下访问仪表板 .
我通过HTTPS访问仪表板/ ui重定向不适用于HTTPS的原因是它尚未在核心存储库中更新 . 您可以跟踪https://github.com/kubernetes/kubernetes/pull/53046#discussion_r145338754以了解它何时合并 . 可能在K8S 1.8.3之前不可用 . 我们的文档中提供了可用于访问仪表板的正确链接 . 检查访问仪表板以了解更多信息 .
但是,kubernetes-dashboard.yaml清单将服务 endpoints 定义到仪表板,如下所示:
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
ports:
- port: 443
targetPort: 8443
selector:
k8s-app: kubernetes-dashboard
分配的集群IP(在我的环境中)如下 .
# kubectl get svc -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard ClusterIP 10.101.199.14 <none> 443/TCP 4h
只需创建一个到10.101.199.14:443的SSH隧道,然后访问它(https://localhost:8001)即可显示仪表板 .
所以,基本上,没有必要使用kubectl代理并直接访问clusterIP:443是使用HTTPS访问仪表板的方法吗?
请提供关于如何使用K8S仪表板的最新和准确文档的建议 .
环境
# kubectl version
Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.0", GitCommit:"925c127ec6b946659ad0fd596fa959be43f0cc05", GitTreeState:"clean", BuildDate:"2017-12-15T21:07:38Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.0", GitCommit:"925c127ec6b946659ad0fd596fa959be43f0cc05", GitTreeState:"clean", BuildDate:"2017-12-15T20:55:30Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}
2 回答
据我所知,您不希望将k8s仪表板暴露给外部世界因为它是一种图形化的方式来访问您的k8s集群,这就是为什么k8s-dashboard的服务类型是clusterIP而不是LoadBalancer或NodePort(Minikube使用它) ) .
现在如果您想要访问仪表板而不将其暴露给外部世界 . 您在问题中描述了两种方法 .
Kubectl代理(它为kube-api服务器创建HTTP代理)
Kubectl port-forward(它创建到k8s-dashboard pod的TCP代理)
由于没时间测试Suresh的建议,现在用于下面 .
获取kubernetes-dashboard服务帐户令牌(给定集群管理员角色) .
启动SSH隧道 .
使用Chrome ModHeader扩展程序发送Bearer令牌 .
通过SSH隧道(本地端口8001)访问API服务器 endpoints .