访问K8S dashboard的正确方式是什么?
What is the correct way to access the K8S dashboard?
问题
不清楚如何使用HTTPS访问仪表板,也找不到明确的文档(它只是告诉使用kubectl proxy)。那么用HTTPS访问dashboard的方法是什么?
Kubernetes Dashboard GitHub 告诉:
The shortcut http://localhost:8001/ui is deprecated. Use the full proxy URL shown above.
K8S Dashboard Recommended Setup 或
K8S Dashboard FAQ 不告诉如何在没有代理的情况下访问仪表板。
I'm accessing Dashboard over HTTPS
The reason why /ui redirect does not work for HTTPS is that it hasn't yet been updated in the core repository. You can track https://github.com/kubernetes/kubernetes/pull/53046#discussion_r145338754 to find out when it will be merged. Probably it won't be available until K8S 1.8.3+.
Correct links that can be used to access Dashboard are in our documentation. Check Accessing Dashboard to find out more.
但是,kubernetes-dashboard.yaml 清单定义了仪表板的服务端点,如下所示:
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 proxy直接访问clusterIP:443是用HTTPS访问dashboard的方式吗?
请建议有关如何使用 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"}
据我所知,您不想将您的 k8s 仪表板暴露给外部世界,因为这是一种访问您的 k8s 集群的图形方式,这就是为什么 k8s-dashboard 的服务类型是 clusterIP 而不是 LoadBalancer 或NodePort(Minikube 使用它)。
现在,如果您想在不将其暴露给外部的情况下访问仪表板,world.There 是您在问题中描述的 2 种方式。
- Kubectl 代理(它为 kube-api 服务器创建 HTTP 代理)
- Kubectl port-forward(它为 k8s-dashboard pod 创建 TCP 代理)
由于没有时间测试 Suresh 的建议,暂时在下面使用。
获取 kubernetes-dashboard 服务帐户令牌(给定集群管理员角色)。
$ kubectl get secret -n kube-system | grep kubernetes-dashboard
kubernetes-dashboard-token-42b78 kubernetes.io/service-account-token 3 1h
$ kubectl describe secret kubernetes-dashboard-token-42b78 -n kube-system
Name: kubernetes-dashboard-token-42b78
Namespace: kube-system
Labels: <none>
Annotations: kubernetes.io/service-account.name=kubernetes-dashboard
kubernetes.io/service-account.uid=36347792-ecdf-11e7-9ca8-06bb783bb15c
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1025 bytes
namespace: 11 bytes
token: <TOKEN>
启动 SSH 隧道。
ssh -L localhost:8001:172.31.4.117:6443 centos@<K8SServer>
使用 Chrome ModHeader 扩展发送 Bearer 令牌。
通过 SSH 隧道(本地端口 8001)访问 API 服务器端点。
https://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy
对于那些卡在 status-code 403
和 coredns- 容器的用户,请尝试为您的集群安装 pod 网络附加组件:
例如印花布:
kubectl apply -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml
来源:https://kubernetes.io/fr/docs/setup/independent/create-cluster-kubeadm/
问题
不清楚如何使用HTTPS访问仪表板,也找不到明确的文档(它只是告诉使用kubectl proxy)。那么用HTTPS访问dashboard的方法是什么?
Kubernetes Dashboard GitHub 告诉:
The shortcut http://localhost:8001/ui is deprecated. Use the full proxy URL shown above.
K8S Dashboard Recommended Setup 或 K8S Dashboard FAQ 不告诉如何在没有代理的情况下访问仪表板。
I'm accessing Dashboard over HTTPS
The reason why /ui redirect does not work for HTTPS is that it hasn't yet been updated in the core repository. You can track https://github.com/kubernetes/kubernetes/pull/53046#discussion_r145338754 to find out when it will be merged. Probably it won't be available until K8S 1.8.3+.
Correct links that can be used to access Dashboard are in our documentation. Check Accessing Dashboard to find out more.
但是,kubernetes-dashboard.yaml 清单定义了仪表板的服务端点,如下所示:
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 proxy直接访问clusterIP:443是用HTTPS访问dashboard的方式吗?
请建议有关如何使用 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"}
据我所知,您不想将您的 k8s 仪表板暴露给外部世界,因为这是一种访问您的 k8s 集群的图形方式,这就是为什么 k8s-dashboard 的服务类型是 clusterIP 而不是 LoadBalancer 或NodePort(Minikube 使用它)。
现在,如果您想在不将其暴露给外部的情况下访问仪表板,world.There 是您在问题中描述的 2 种方式。
- Kubectl 代理(它为 kube-api 服务器创建 HTTP 代理)
- Kubectl port-forward(它为 k8s-dashboard pod 创建 TCP 代理)
由于没有时间测试 Suresh 的建议,暂时在下面使用。
获取 kubernetes-dashboard 服务帐户令牌(给定集群管理员角色)。
$ kubectl get secret -n kube-system | grep kubernetes-dashboard
kubernetes-dashboard-token-42b78 kubernetes.io/service-account-token 3 1h
$ kubectl describe secret kubernetes-dashboard-token-42b78 -n kube-system
Name: kubernetes-dashboard-token-42b78
Namespace: kube-system
Labels: <none>
Annotations: kubernetes.io/service-account.name=kubernetes-dashboard
kubernetes.io/service-account.uid=36347792-ecdf-11e7-9ca8-06bb783bb15c
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1025 bytes
namespace: 11 bytes
token: <TOKEN>
启动 SSH 隧道。
ssh -L localhost:8001:172.31.4.117:6443 centos@<K8SServer>
使用 Chrome ModHeader 扩展发送 Bearer 令牌。
通过 SSH 隧道(本地端口 8001)访问 API 服务器端点。
https://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy
对于那些卡在 status-code 403
和 coredns- 容器的用户,请尝试为您的集群安装 pod 网络附加组件:
例如印花布:
kubectl apply -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml
来源:https://kubernetes.io/fr/docs/setup/independent/create-cluster-kubeadm/