kubectl端口转发和NodePort服务的区别

16
kubectl端口转发和NodePort服务类型有什么区别?前者将本地主机的端口转发到集群中的Pod以获取集群资源访问,而后者则暴露出一个固定端口供外部流量访问。
3个回答

14

您正在比较两个完全不同的事物。 您应该比较 ClusterIP、NodePort、LoadBalancer 和 Ingress。

第一个、也是最重要的区别是,NodePort公开是持久的,而使用端口转发时,您始终需要运行kubectl port-forward ...并保持其活动状态。

kubectl port-forward旨在用于测试、实验室、故障排除,而不是长期解决方案。它会创建您的机器和Kubernetes之间的隧道,因此这种解决方案将为您的机器提供服务需求。

NodePort可以为您提供长期解决方案,并且可以为网络中任何地方的节点提供服务需求。


6
如果您使用端口转发kubectl port forward svc/{your_service} -n {service_namespace},您只需要一个ClusterIP,kubectl将为您处理流量。 Kubectl将成为流量的代理。
如果您使用NodePort来访问服务,则需要在工作节点上打开端口。

4
当您使用端口转发时,这会使我们的集群在不创建服务的情况下表现得像运行了一个节点端口服务一样。这仅用于开发环境,并且只需一个命令,就可以拥有一个节点端口服务。
 // find the name of the pod that running nats streaming server
kubectl get pods

kubectl port-forward nats-Pod-5443532542c8-5mbw9 4222:4222

kubectl将设置代理,将您本地计算机上的任何流量转发到特定Pod上的端口。

但是,要创建节点端口,您需要编写一个YAML配置文件来设置服务。 它将永久公开该端口并执行负载平衡。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接