我有一个在远程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
答案 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.crt
和dashboard.key
,并将它们存储在$HOME/certs
下。
kubectl create secret generic kubernetes-dashboard-certs --from-file=$HOME/certs -n kube-system
此安装过程的说明here。