我正在学习 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
答案 0 :(得分:0)
您必须创建入口。 按照本文档中的步骤操作 - https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/
答案 1 :(得分:0)
@subudear 是对的 - 您需要 Ingress。
<块引用>管理对服务的外部访问的 API 对象 集群,通常是 HTTP。 Ingress 可以提供负载均衡、SSL 终止和基于名称的虚拟主机。
Ingress 公开 HTTP 和 HTTPS 从集群外部路由到集群内的服务。 流量路由由 Ingress 上定义的规则控制 资源。
为了能够经常使用 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