Kubernetes新手在这里。只是想让我的基本理解正确。 Minikube以本地开发而闻名,外部连接(不仅是集群外部)是否可以访问我在minikube中部署的Pod?
我正在ec2实例中运行我的minikube,所以我使用命令minikube start --vm-driver=none
启动了我的minikube,这意味着在没有配置VM的情况下使用Docker运行minikube。我的最终目标是允许外部连接到达群集内的Pod,并通过Pod执行POST请求(例如使用Postman)。
如果是,我还使用
kubectl apply -f
通过yaml文件中的NodePort将服务资源应用于minikube。另外,我也希望正确理解port
,nodePort
和targetPort
。port
是 分配给该特定服务的端口号,nodePort
是 节点上的端口号(在我的情况下是我的ec2实例专用IP),targetPort
是与我拥有的containerPort
等效的端口号 在部署的yaml中分配。如果我在此陈述中有误,请纠正我。
谢谢。
答案 0 :(得分:1)
是的,你可以做到
当您通过以下命令启动了迷你库时:
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
的默认值也与端口相同。