使用minikube完整创建一个pod并暴露端口(使用docker驱动安装)

因为minikube使用service暴露端口是使用nodeIP:nodePort 而不是 localhost:nodePort 公开访问。我们只能使用kubectl的端口转发功能或者使用iptables的转发功能来实现外网服务暴露。

下面我就以运行nginx服务来做举例

查看nginx的pod服务端口号

可以看到nginx的内部服务端口号是80,我们需要使用kubectl的端口转发进行服务暴露,在做之前我们还需要把类型改为NodePort。

kubectl expose deployment nginx-service --type=NodePort

备注:如果使用以上命令找不到Nginx-service的pod,可以直接使用下面的命令进行端口暴漏

使用kubectl的端口转发功能

kubectl port-forward --address 0.0.0.0 nginx-deployment-75d4475c89-h66vh  20080:80

使用后台运行

nohup kubectl port-forward --address 0.0.0.0 nginx-deployment-75d4475c89-h66vh  20080:80 &

在进行外网访问可以发现可以成功访问到了

第二种方法可以使用iptables进行暴露,需要暴露service的端口,内部端口是不通的。

iptables -t nat -A  DOCKER -p tcp --dport 20081 -j DNAT --to-destination 192.168.49.2:30000
#提交策略
service iptables save

使用service iptables save报错The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.

缺少服务,安装iptables服务即可

yum install iptables-services

安装完成之后再次保存规则就可以了。

再次使用新端口访问

发表评论

后才能评论