我在ubuntu计算机18.04上的Azure云中安装了minikube。但是我不知道如何使用虚拟机的真实IP通过kubectl连接到它。在virtualbox驱动程序(https://192.168.99.100:8443)上使用i minikube。请告诉我如何进行端口转发?谢谢。
答案 0 :(得分:0)
我对其进行了测试,并提出了一些解决方案。
使用ssh端口转发可以实现从本地计算机访问minikube的最简单方法(但是您需要记住始终打开ssh会话,但这并不是您真正想要的,因为它将只能从本地计算机访问)。
您可以运行:
ssh <user>@<azure_vm_ip> -L 8443:192.168.99.100:8443
开始从本地主机到minikube虚拟机的端口转发。
您还需要将这些证书文件从azure vm ~/.minikube/
目录复制到
您的本地计算机:
ca.crt
client.crt
client.key
还将.kube/config
从azure vm复制到本地计算机,并编辑前面提到的证书文件的路径,并将服务器IP地址更改为localhost。
使用ssh端口转发使其可访问(这一次允许外部访问)的第二种方法是可以做到的:
在Azure虚拟机的文件/etc/ssh/sshd_config
中,将GatewayPorts
更改为yes
,保存文件并运行
systemctl restart sshd
接下来,将ssh转到您的Azure虚拟机并运行:
ssh -R 0.0.0.0:8443:192.168.99.100:8443 localhost
记住有关证书文件的信息,并在您的Azure虚拟机的.kube/config
文件公共IP中更改服务器IP。
尝试连接到minikube表单时,本地计算机可能会看到:
$ kubectl get pods
Unable to connect to the server: x509: certificate is valid for 192.168.99.100, 10.96.0.1, 10.0.0.1, not <your_vm_ip>
因此,您需要使用--insecure-skip-tls-verify
标志或生成新的有效证书(或以--apiserver-ips=<public_ip>
启动minikube,它将为您生成有效证书)。
注意:请记住允许在端口8443上向您的Azure虚拟机提供入口流量。
如果您不想使用ssh端口转发,则可以使用任何代理,例如nginx,它将在azure vm上运行并将请求转发到minkube vm
可能是最好的方法。在没有VM的情况下运行:
sudo minikube start --vm-driver=none --apiserver-ips=<public_ip>
需要 --apiserver-ips
来生成适当的证书。
--vm-driver=none
将不会创建vbox虚拟机
现在,您所需要做的就是将证书复制到本地计算机,并在.kube/confg
文件中提供适当的服务器ip。
让我知道它是否有帮助。