如何使用远程集群中的NodePort访问kubernetes仪表板进行测试?

时间:2019-01-10 13:44:14

标签: kubernetes kubectl kubernetes-dashboard

我有一个在远程VM(在VSphere上)上运行的测试Kubernetes集群,我可以通过ssh(它们具有私有IP)对VM进行完全访问。知道我可以远程执行所有kubectl命令,我如何才能公开服务并从群集外部(从我的远程笔记本电脑尝试访问计算机)访问它们。

例如:我尝试使用仪表板,安装了该仪表板,将服务更改为NodePort,并尝试使用此URL http:master-private-ip:exposedport从笔记本电脑访问它,也使用了工作IP。不起作用。它仅在浏览器中返回(二进制输出)。当我尝试通过https连接时,会引发证书错误。

$ kubectl get svc -n kube-system -l k8s-app=kubernetes-dashboard
  NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
  kubernetes-dashboard   NodePort       10.97.143.110    <none>        443:30714/TCP   42m
$ kubectl  proxy -p 8001
$ curl http://172.16.5.226:30714 --output -

我期望输出显示Kubernetes仪表板的UI中的html

1 个答案:

答案 0 :(得分:2)

  

注意:仪表板不应通过HTTP公开公开。对于通过HTTP访问的域,将无法登录。单击登录页面上的“登录”按钮后,什么也不会发生。

如果您正确完成了所有操作,则应该可以在HTTPS上工作

Accessing Dashboard 1.7.X and above中所述。

要使用NodePort公开信息中心,您需要编辑kubernetes-dashboard服务。

kubectl -n kube-system edit service kubernetes-dashboard

找到type: ClusterIP并将其更改为type: NodePort,然后保存文件。

然后,检查仪表板暴露给哪个端口:

kubectl -n kube-system get service kubernetes-dashboard 可能看起来:

NAME                   CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes-dashboard   10.100.124.90   <nodes>       443:31707/TCP   21h

要访问控制台,请在浏览器中导航至https://<server_IP>:31707

编辑:

如果您使用的是自签名证书,则需要将其保密。它必须命名为kubernetes-dashboard-certs,并且必须在kube-system名称空间中。

您必须将证书另存为dashboard.crtdashboard.key,并将它们存储在$HOME/certs下。

kubectl create secret generic kubernetes-dashboard-certs --from-file=$HOME/certs -n kube-system

此安装过程的说明here