我在GCP中创建了一个Debian VM,并安装了kubectl和minikube。我在kubectl中部署了一个映像。我使用命令kubectl expose deployment hw --type=NodePort --port=80
公开了该服务。它在端口31343中公开。但是无法使用VM的外部ip访问。我将防火墙规则添加到端口的流量。但是仍然无法正常工作。如何使用虚拟机的外部IP访问该站点。
我知道,我可以使用GKE。但是我需要尝试kubernetes的安装和配置。这就是为什么我遵循这些步骤。
答案 0 :(得分:0)
Minikube本质上是VM,因此您正在VM内运行VM。
您已将deployment
从Minikube暴露给VM,可以使用$ minikube ip
或$ minikube status
检查Minikube的地址。
要使此功能现在正常运行,您需要在GCP VM上设置一个proxy
,该流量会将流量发送到minikube
。
答案 1 :(得分:0)
我通过使用nginx代理找到了解决方案。可能使用之前答案中提到的kubeadm是标准方法。但是我在网络上没有得到足够的参考。 我们可以使用GCP vm外部IP连接到Nginx服务器,它将请求重定向到minikube。同时返回响应。
sudo apt install nginx
在Linux vm中安装nginx sudo vim /etc/nginx/conf.d/upstream.conf
将以下行添加到文件中。替换和。
upstream app_server_32108 {
server <minikube ip>:<port>;
}
server {
listen 80;
location /proxy {
proxy_pass http://app_server_32108/;
}
}
sudo nginx -t
使用sudo systemctl reload nginx
现在,可以使用http://<vm ip>/proxy
如果无法访问,请编辑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"
此注释是用于其他内容。