前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你能给大家解释一下k8s里面五花八门的各种port吗?

你能给大家解释一下k8s里面五花八门的各种port吗?

作者头像
create17
发布2022-11-17 09:33:23
7600
发布2022-11-17 09:33:23
举报

每一个成功人士的背后,必定曾经做出过勇敢而又孤独的决定。

放弃不难,但坚持很酷~

1

nodePort

nodePort 提供了集群外部客户端访问 service 的一种方式,它提供了集群外部客户端访问 service 的端口,即 k8s 集群 nodeIP:nodePort 。

适用于外部用户要访问 k8s 集群中的服务。

优点:通过 k8s 集群的任意节点(装有 kube-proxy 的)加上 nodePort 都可以访问服务。

缺点:网络请求路由较复杂。在并发量很大的情况下,有可能会造成拒绝连接。(亲自遇到过这种场景,设置成 hostPort 方式访问,就扛住了。)

2

port

port 是暴露在 cluster ip 上的端口,它提供了集群内其它容器访问 service 的入口,即:ClusterIP:port 。

适用于k8s集群内部各服务通信。

3

hostPort

这是一种直接定义Pod网络的方式。hostPort 是直接将容器的端口与所调度的节点上的端口路由,hostPort 是暴露在 pod 所调度的机器上的端口,可以使用 pod 所在的节点 ip:hostPort 来访问服务。

适用于外部用户要访问k8s集群中的服务。

缺点:Pod 重新调度的时候该 Pod 被调度到的节点可能会变动,这样就变化了,所以用户必须手动维护一个 Pod 与所在宿主机的对应关系。

优点:相较于 nodePort 的方式,减少了网络请求的路由,提高请求效率和并发。

4

targetPort

targetPort 是 pod 上的端口,从 port/nodePort 上来的流量,经过kube-proxy流入到后端 pod 的 targetPort 上,最后进入容器。

与制作镜像时暴露的端口一致(通过 DockerFile 中的 EXPOSE 暴露)。

5

containerPort

containerPort 是在 pod 控制器中定义的、pod 中的容器需要暴露的端口,通常暴露的端口就是你程序启动时的端口。

6

小结

总的来说,port 和 nodePort 都是 service 的端口,前者暴露给 k8s 集群内部服务访问,后者暴露给 k8s 集群外部流量访问。从上两个端口过来的数据都需要经过反向代理 kube-proxy ,流入后端 pod 的 targetPort 上,最后到达 pod 内的容器。

nodeport 与 hostport 都是通过,主机 ip+端口 的方式访问,区别为:hostport 是通过固定主机 ip ,nodeport 是通过 k8s 集群任意节点ip访问。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-02-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据实战演练 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档