Minikube 服务暴露给公共 IP

时间:2021-04-02 18:34:38

标签: kubernetes minikube

我正在学习 Kubernetes 并尝试使用 MiniKube 部署应用程序。

我已设法在 Minikube IP 上公开映射到 nginx pod 的服务。我可以通过 url $(minikube ip):$(serviceport) 访问 nginx 服务。这很好,但是我希望将其公开给公共网络。目前此服务只能通过我的本地机器访问,我的 wifi 网络上的任何其他机器都无法访问它,因为它只在 minikube ip 上公开。我不想通过 IPtables 在我的本地 linux 中转发端口,我正在寻找一个内置的解决方案来向世界公开端口(而不仅仅是在 minikube ip 上)。我知道它可以作为 minikube 仪表板默认实现在本地主机上公开服务,这意味着 minikube 可以与其他网络适配器通信并可以注册端口,我不确定如何。

这是我的服务 yaml:

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
  name: nginxservice
  labels:
    app: nginxservice
spec:
  type: NodePort
  ports:
  - port: 80
    name: http
    targetPort: 80
    nodePort: 32756
  selector:
    app: nginxcontainer

2 个答案:

答案 0 :(得分:0)

您必须创建入口。 按照本文档中的步骤操作 - https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/

答案 1 :(得分:0)

@subudear 是对的 - 您需要 Ingress

<块引用>

管理对服务的外部访问的 API 对象 集群,通常是 HTTP。 Ingress 可以提供负载均衡、SSL 终止和基于名称的虚拟主机。

Ingress 公开 HTTP 和 HTTPS 从集群外部路由到集群内的服务。 流量路由由 Ingress 上定义的规则控制 资源。

enter image description here

为了能够经常使用 ingress(我现在不是在谈论 minikube) - 仅仅创建 Ingress 对象是不够的。您应该首先安装相关的 ingress controller

有很多,最受欢迎的是:

前两个非常相似,但使用了完全不同的注释。它经常发生people confuse them


谈到minikube: 根据 guidelines,为了安装 ingress,您唯一需要做的是

minikube addons enable ingress

请注意,默认情况下,minikube 完全安装 NGINX Ingress 控制器

nginx-ingress-controller-5984b97644-rnkrg 1/1 Running 0 1m