如何在GCP VM中公开minikube

时间:2020-04-05 15:22:38

标签: kubernetes google-cloud-platform kubectl

我在GCP中创建了一个Debian VM,并安装了kubectl和minikube。我在kubectl中部署了一个映像。我使用命令kubectl expose deployment hw --type=NodePort --port=80公开了该服务。它在端口31343中公开。但是无法使用VM的外部ip访问。我将防火墙规则添加到端口的流量。但是仍然无法正常工作。如何使用虚拟机的外部IP访问该站点。

我知道,我可以使用GKE。但是我需要尝试kubernetes的安装和配置。这就是为什么我遵循这些步骤。

3 个答案:

答案 0 :(得分:0)

Minikube本质上是VM,因此您正在VM内运行VM。

您已将deployment从Minikube暴露给VM,可以使用$ minikube ip$ minikube status检查Minikube的地址。

要使此功能现在正常运行,您需要在GCP VM上设置一个proxy,该流量会将流量发送到minikube

我建议使用kubeadm并设置single control-plane cluster with kubeadm

答案 1 :(得分:0)

我通过使用nginx代理找到了解决方案。可能使用之前答案中提到的kubeadm是标准方法。但是我在网络上没有得到足够的参考。 我们可以使用GCP vm外部IP连接到Nginx服务器,它将请求重定向到minikube。同时返回响应。

  1. 使用sudo apt install nginx在Linux vm中安装nginx
  2. 创建一个nginx配置文件sudo vim /etc/nginx/conf.d/upstream.conf
  3. 将以下行添加到文件中。替换和。

    upstream app_server_32108 {
        server <minikube ip>:<port>;
    }    
    server {
        listen 80;
        location /proxy {
           proxy_pass http://app_server_32108/;
        }
    }
    
  4. sudo nginx -t

  5. 使用sudo systemctl reload nginx

  6. 重新启动nginx服务器
  7. 现在,可以使用http://<vm ip>/proxy

  8. 来访问minikube中托管的内容。

如果无法访问,请编辑nginx配置文件sudo vim /etc/nginx/nginx.conf并通过将#作为前缀在行include /etc/nginx/sites-enabled/*;中添加注释。

#include /etc/nginx/sites-enabled/*;

重新启动nginx,然后重试。 (按照步骤4、5和6进行操作。)

答案 2 :(得分:0)

因此,上面的几个答案可能是您应该做的事情,您还应该做的就是允许VPC防火墙中的端口

考虑通过Web界面或控制台获得的防火墙规则,您可以像下面的注释一样应用它

gcloud compute firewall-rules create "allow-internal-memcache" --allow=tcp:31343 --source-ranges="10.0.0.0/22,10.0.0.0/14" --description="Allow internal traffic and drop outside"

此注释是用于其他内容。