Azure 中托管的 minikube 的外部访问

External access for minikube hosted in Azure

我在 ubuntu 机器 18.04 的 Azure 云中安装了 minikube。但是我不知道如何使用虚拟机的真实 IP 通过 kubectl 连接到它。在 virtualbox 驱动程序上使用 i minikube (https://192.168.99.100:8443)。请告诉我如何进行端口转发?谢谢。

我测试了它并提出了一些解决方案。

  1. 使用 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 虚拟机复制到您的本地计算机并编辑前面提到的证书文件的路径并将服务器 IP 地址更改为本地主机。

  2. 通过执行以下操作可以使用 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
    

    记住证书文件并在 .kube/config 文件中更改服务器 IP public 你的 Azure 虚拟机的 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

  3. 可能是最好的方法。 运行 没有虚拟机:

     sudo minikube start --vm-driver=none --apiserver-ips=<public_ip>
    
    需要

    --apiserver-ips 才能生成适当的证书。 --vm-driver=none 不会创建 vbox 虚拟机

    现在您只需将证书复制到您的本地计算机并在 .kube/confg 文件中提供适当的服务器 ip。

如果有帮助,请告诉我。