如何从Internet访问Kubernetes服务?

时间:2018-05-14 15:22:39

标签: linux kubernetes ip minikube

我在Linux Mint上安装了Kubernetes(minikube)集群。然后我部署了演示Example: Deploying WordPress and MySQL with Persistent Volumes

apiVersion: v1
kind: Service
metadata:
  name: wordpress
labels:
  app: wordpress
spec:
  ports:
    - port: 80
      nodePort: 30375
  selector:
    app: wordpress
    tier: frontend
  type: NodePort
  externalIPs:
    - 178.54.220.175
    - 192.168.1.10

如果外部IP 178.54.220.175仅在路由器中,则使用Internet访问Kubernetes服务,使用Linux 192.168.1.10和ip Kubernetes 192.168.99.100:30375进行主机IP。

如何将这些IP地址与178.54.220.175关联 - > 192.168.1.10 - > 192.168.99.100:30375

1 个答案:

答案 0 :(得分:1)

如果使用迷你立方体,则禁用此功能。

当使用VirtualBox作为管理程序时,您还可以使用VirtualBox NAT端口转发功能来允许从外部访问通过NodePorts公开的服务。

像这样的东西(限制范围,暴露整个默认的NodePort范围30000-32767需要永远......):

for port in {30000..30100}; do VBoxManage controlvm minikube natpf1 "NodePort$port,tcp,,$port,,$port"; done

您可以将它与反向SSH隧道结合到VPS,这样任何人都可以从公共互联网进行临时访问:

R_ARGS=$(for port in {30000..30100}; do echo -n "-R $port:localhost:$port "; done)
autossh -M 0 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ExitOnForwardFailure=yes -o ServerAliveInterval=5 -o ServerAliveCountMax=3 user@examplevps.com -N $R_ARGS

删除VirtualBox端口转发规则:

for port in {30000..30100}; do VBoxManage controlvm minikube natpf1 delete "NodePort$port"; done

SSH转发方法虽然比较简单,但我认为管理程序不可知,所以非常感谢!

https://github.com/kubernetes/minikube/issues/877

https://cwienczek.com/reaching-minikube-from-your-machines-public-ip-aka-network-bridge/