首页 > 解决方案 > 外部流量是否可以访问我在 Minikube 中的部署?

问题描述

Kubernetes 新手在这里。只是想让我的基本理解正确。Minikube 以本地开发而闻名,是否可以通过外部连接(不仅仅是集群外部)访问我在 minikube 中部署的 pod?

我在 ec2 实例中运行我的 minikube,所以我使用 command 启动了我的 minikube minikube start --vm-driver=none,这意味着使用 Docker 运行 minikube,没有配置 VM。我的最终目标是允许外部连接到达集群内的 pod 并通过 pod 执行 POST 请求(例如使用 Postman)。

如果是,我还使用 yaml 文件中的 NodePort 将我的服务资源应用kubectl apply -f到我的 minikube 中。此外,我也希望正确理解portnodePorttargetPortport是分配给该特定服务nodePort的端口号,是节点上的端口号(在我的情况下是我的 ec2 实例私有 IP), 是与我在部署的 yaml 中分配targetPort的端口号等效的端口号。containerPort如果我在此声明中错了,请纠正我。

谢谢。

标签: kubernetesminikube

解决方案


是的,你可以这么做

当您使用以下命令启动 minikube 时:

minikube start --vm-driver=none

nodePort是集群外的客户端将“看到”的端口。nodePort 通过 kube-proxy 在集群中的每个节点上打开。您可以使用 nodePort 从外部访问应用程序。喜欢https://loadbalancerIP:NodePort

port是您的服务在集群内侦听的端口。让我们看这个例子:

apiVersion: v1
kind: Service
metadata:
  name: test-service
spec:
  ports:
  - port: 8080
    targetPort: 8070
    nodePort: 31222
    protocol: TCP 
  selector:
    component: test-service-app

从 k8s 集群内部,可以通过http://test-service.default.svc.cluster.local:8080(集群内的服务到服务通信)访问该服务,并且任何到达那里的请求都将转发到 targetPort 8070 上正在运行的 pod .

tagetPort如果未另行指定,则默认情况下与 port 的值相同。


推荐阅读