Kubernetes中的nodePort,targetPort,port的区别和意义(转)

67 篇文章 5 订阅
订阅专栏

Kubernetes中的nodePort,targetPort,port的区别和意义(转)

原文https://blog.csdn.net/u013760355/article/details/70162242

https://blog.csdn.net/xinghun_4/article/details/50492041

1. nodePort

 外部机器可访问的端口。 
比如一个Web应用需要被其他用户访问,那么需要配置type=NodePort,而且配置nodePort=30001,那么其他机器就可以通过浏览器访问scheme://node:30001访问到该服务,例如 http://node:30001。 
 例如MySQL数据库可能不需要被外界访问,只需被内部服务访问,那么不必设置NodePort

2. targetPort

 容器的端口(最根本的端口入口),与制作容器时暴露的端口一致(DockerFile中EXPOSE),例如docker.io官方的nginx暴露的是80端口。 
 docker.io官方的nginx容器的DockerFile参考 https://github.com/nginxinc/docker-nginx

3. port

 kubernetes中的服务之间访问的端口,尽管mysql容器暴露了3306端口(参考 https://github.com/docker-library/mysql/的DockerFile),但是集群内其他容器需要通过33306端口访问该服务,外部机器不能访问mysql服务,因为他没有配置NodePort类型

 

服务中的3个端口设置

这几个port的概念很容易混淆,比如创建如下service:

[plain]  view plain  copy

  1. apiVersion: v1  
  2. kind: Service  
  3. metadata:  
  4.   labels:  
  5.     name: app1  
  6.   name: app1  
  7.   namespace: default  
  8. spec:  
  9.   type: NodePort  
  10.   ports:  
  11.   - <strong>port: 8080  
  12.     targetPort: 8080  
  13.     nodePort: 30062</strong>  
  14.   selector:  
  15.     name: app1  

 

port

The port that the service is exposed on the service’s cluster ip (virsual ip). Port is the service port which is accessed by others with cluster ip.

即,这里的port表示:service暴露在cluster ip上的端口,<cluster ip>:port 是提供给集群内部客户访问service的入口。

nodePort

On top of having a cluster-internal IP, expose the service on a port on each node of the cluster (the same port on each node). You'll be able to contact the service on any<nodeIP>:nodePortaddress. So nodePort is alse the service port which can be accessed by the node ip by others with external ip.

首先,nodePort是kubernetes提供给集群外部客户访问service入口的一种方式(另一种方式是LoadBalancer),所以,<nodeIP>:nodePort 是提供给集群外部客户访问service的入口。

targetPort

The port on the pod that the service should proxy traffic to.

targetPort很好理解,targetPort是pod上的端口,从port和nodePort上到来的数据最终经过kube-proxy流入到后端pod的targetPort上进入容器。

port、nodePort总结

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

When a client connects to the VIP the iptables rule kicks in, and redirects the packets to the serviceproxy's own port (random port). The service proxy chooses a backend, and starts proxying traffic from the client to the backend. This means that service owers can choose any port they want without risk of collision.The same basic flow executes when traffic comes in through a nodePort or through a LoadBalancer, though in those cases the client IP does get altered.

kube-proxy与iptables 

当service有了port和nodePort之后,就可以对内/外提供服务。那么其具体是通过什么原理来实现的呢?奥妙就在kube-proxy在本地node上创建的iptables规则。

Kube-Proxy 通过配置 DNAT 规则(从容器出来的访问,从本地主机出来的访问两方面),将到这个服务地址的访问映射到本地的kube-proxy端口(随机端口)。然后 Kube-Proxy 会监听在本地的对应端口,将到这个端口的访问给代理到远端真实的 pod 地址上去。

kube-proxy会在nat表里生成4个chain,分别如上所示(主要是从容器出来的访问,从本地主机出来的访问两方面)。

创建service以后,kube-proxy会自动在集群里的node上创建以下两条规则:
KUBE-PORTALS-CONTAINER
KUBE-PORTALS-HOST
如果是NodePort方式,还会额外生成两条:
KUBE-NODEPORT-CONTAINER
KUBE-NODEPORT-HOST

KUBE-PORTALS-CONTAINER

主要将由网络接口到来的通过服务集群入口<cluster ip>:port的请求重定向到本地kube-proxy端口(随机端口)的映射,即来自本地容器的服务访问请求

注:我认为,这种情况的网络包不可能来自外部网络,因为cluster ip是个virtual ip,外部网络中不存在这样的路由将该数据包发送到本机;所以该请求只能来自本地容器,从本地容器出来的访问,服务访问请求是通过本地容器虚拟网卡输入到本地网络接口的。

KUBE-NODEPORT-CONTAINER

主要将由网络接口到来的通过服务集群外部入口<node ip>:nodePort的请求重定向到本地kube-proxy端口(随机端口)的映射;即来自k8s集群外部网络的服务访问请求,可以来自本机容器,也可以来自其他node的容器,还可以来自其他node的进程

KUBE-PORTALS-HOST

主要将该node本地进程通过服务集群入口<cluster ip>:port的请求重定向到本地kube-proxy端口(随机端口)的映射。

KUBE-NODEPORT-HOST

主要将该node本地进程通过服务集群外部入口<node ip>:nodePort的请求重定向到本地kube-proxy端口(随机端口)的映射。

kube-proxy反向代理

不管是通过集群内部服务入口<cluster ip>:port还是通过集群外部服务入口<node ip>:nodePort的请求都将重定向到本地kube-proxy端口(随机端口)的映射,然后将到这个kube-proxy端口的访问给代理到远端真实的 pod 地址上去。

 

k8sporttargetPortnodePort,containerPort区别
小橙子的笔记屋
07-08 1229
nodePortporttargetPort,containerPort
K8S的hostPortNodePorttargetPortport、containerPort区别
叱咤少帅的博客
01-06 869
K8S的hostPortNodePorttargetPortport、containerPort区别
kubernetesporttarget portnode port的对比分析,以及kube-proxy代理
热门推荐
xinghun_4的专栏
01-10 8万+
容器网络实例 服务的3个端口设置 这几个port的概念很容易混淆,比如创建如下service: apiVersion: v1 kind: Service metadata: labels: name: app1 name: app1 namespace: default spec: type: NodePort ports: - port: 8080
k8s 四种Service类型(ClusterIP、NodePort、LoadBalancer、ExternalName)详解
最新发布
博客虽小,世界尽在其中
08-08 2万+
本文深入探讨了Kubernetes (k8s) Service资源的四种核心类型,每种类型均在设计上服务于不同的网络访问需求,为在Kubernetes集群内部及外部高效、灵活地暴露服务提供了强大支持。 ExternalName Service:本文首先介绍了ExternalName Service,这是一种特殊类型的Service,它不提供负载均衡或代理功能,而是将集群内的服务名解析为集群外部的DNS名称。这种类型特别适用于需要将服务请求重定向到集群外部资源(如另一个集群的服务或第三方SaaS服务)的
k8snodePorttargetPortport区别意义
weixin_44615267的博客
10-08 4078
端口所应用位置不同 port是service的的端口 targetport是pod也就是容器的端口 nodeport是容器所在宿主机的端口 一、nodePort 外部机器可访问的端口。 比如一个Web应用需要被其他用户访问,那么需要配置type=NodePort,而且配置nodePort=30001,那么其他机器就可以通过浏览器访问scheme://node:30001访问到该服务,例如http://node:30001。 apiVersion: v1 kind: Service metadata: n
k8s基础概念:porttargetportnodeport
Zx13170918986的博客
07-19 3687
k8s基础概念:porttargetportnodeport
K8S系列:Service属性NodePorttargetPortportnodePode区别
NIO4444
06-07 965
targetPort:容器本身的端口(默认:30000-32767)(与制作容器时暴露的端口一致DockerFileEXPOSE)port:Service使用的端口,暴露给K8s访问的nodePode:Service使用的端口,nodePort是暴露给外部访问的。
Kubernetes引入NodePort服务
编程故事的地方
01-27 1248
摘要 在本文,您将学习Kubernetes Pods的剖析以及在Pods运行容器的NodePort Service示例。 豆荚介绍 Kubernetes围绕豆荚旋。 因此,您必须知道这些吊舱是什么。 Pod是我们用来部署应用程序的运行时环境。 它是Kubernetes调度的基本单位。 一起部署在单个主机上的一个或多个容器称为Pod。 我们将看到如何在Kubernetes集群部署和...
k8s 辨析 portNodePorttargetPort、containerPort 区别
Veeupup博客
08-22 3430
刚接触 k8s 涉及到端口到内容较多,容易混淆,这里整理如下: 文章目录nodePortporttargetPortcontainerPort参考文章 nodePort nodePort 提供了集群外部客户端访问 Service 的一种方式,nodePort 提供了集群外部客户端访问 Service 的端口,通过 nodeIP:nodePort 提供了外部流量访问k8s集群service的入口。 比如外部用户要访问k8s集群的一个Web应用,那么我们可以配置对应service的type=NodePort
nodePortporttargetPort和containerPort
zcx的博客
10-10 2051
containerPort用在deployment的container标签下,与Dockerfile文件EXPOSE的端口应一致 nodePortporttargetPort用在service组件 nodePort:k8s服务对外暴露服务的端口,暴露之后,可以对外提供服务 port:k8s服务之间相互访问的端口 targetPort:当一个pod有多个容器时,Service怎么知道要选择哪个容器的端口呢?就是根据targetPort来确定。一般来说targetPort应该是对外提供服务的容器的端口
K8s porttargetPortNodePort区别
nvd11的专栏
06-19 1572
看1个例子:我们用下面命令去创建1个pod2, 里面运行的是1个nginx当这个POD被创建后, 其实并不能被外部访问, 因为端口映射并没有完成.我们用下面这个命令去创建1个svc , 暴露端口生成了1个service, service name is pod2-service, nodePort是31382 (这里是随机生成)这时pod2的nginx就可以被外部的机器访问了我的k8s 集群有5个node, 而上面创建的pod2 只部署在了其1个node k8snode0 上。
Kubernetes基础(二十七)-nodePort/targetPort/port/containerPort/hostPort
sre救赎之路
03-04 1356
portnodePort都是service的端口,前者暴露给集群内客户访问服务,后者暴露给集群外客户访问服务。从这两个端口到来的数据都需要经过反向代理kube-proxy流入后端pod的targetPod,从而到达pod上的容器内。
k8s配置porttargetPortnodePort和containerPort区别
GuXiaoyan12的博客
12-29 2万+
port port是k8s集群内部访问service的端口,即通过clusterIP: port可以访问到某个service nodePort nodePort是外部访问k8s集群service的端口,通过nodeIP: nodePort可以从外部访问到某个service。 targetPort targetPort是pod的端口,从portnodePort来的流量经过kube-proxy流入...
KubernetesnodePorttargetPortport区别和访问范围
Vic的博客
07-24 1433
一、概念:三种端口 nodePort:指的是servicename(或者称为service或者svc) nodetype类型暴露出来的端口。 port:指的是servicename(或者称为service或者svc) cluster类型暴露出来的端口。 targetPort:是pod上的端口。 containerPort:就是targetPort。 其对应的是:“k8s ymal文件里面的containerPort”和“docker dockefile里面的expose”
k8syaml文件portnodePorttargetport区别
qq_70531838的博客
07-08 332
指定了这个 YAML 文件是针对哪个 Kubernetes API 版本的。: 定义了这个 YAML 文件描述的是一个 Kubernetes 资源类型,这里是。,适用于 Kubernetes 1.18 及之后的版本。是容器内部应用实际使用的端口。是Pod内部容器监听的端口。
k8sPortNodePortTargetPort概念的区分
weixin_45629044的博客
07-01 552
1:三个类型端口所应用位置的不同 Port是Service的的端口 TargetPort是Service映射pod的容器的端口(containerPortNodePort是容器所在宿主机的端口(实质上也是通过service暴露给了宿主机,而port却没有) 2:在作用上 port 的主要作用是集群内其他pod访问本pod的时候,需要的一个port,如nginx的pod访问mysql的pod,那么mysql的pod的service可以如下定义,由此可以这样理解,port是service的port,ngin
【K8S】配置porttargetPortnodePort和containerPort区别
m0_45406092的博客
07-18 3404
文章目录portnodePorttargetPortcontainerPort图解参考 port port是k8s集群内部访问service的端口,即通过clusterIP: port可以访问到某个service。 仅限于集群节点内互相访问,外部无法访问。 nodePort nodePort是外部访问k8s集群service的端口,通过nodeIP: nodePort可以从外部访问到某个service。 targetPort targetPort是pod的端口,从portnodePort来的流量经过ku
如何看k8stargetport与containerport是否关联
06-08
Kubernetes,可以通过以下步骤来确认`targetPort`和`containerPort`是否关联成功: 1. 确认Service名称和Pod名称 使用`kubectl get svc`和`kubectl get pods`命令确认Service名称和Pod名称。 2. 查看Service...
写文章

热门文章

  • Unity3D游戏引擎最详尽基础教程 76160
  • mui几种页面跳转方式对比 64632
  • 使用行为树(Behavior Tree)实现游戏AI 59302
  • Unity中使用GameObject.Find、Transform.Find查找GameObject 53257
  • Go操作mysql实现增删改查及连接池 50694

分类专栏

  • Unity 67篇
  • Golang 103篇
  • 服务端 41篇
  • 容器云 67篇
  • 前端开发 63篇
  • 后端开发 167篇
  • 小游戏 49篇
  • DevOps 48篇
  • 数据分析 8篇
  • 产品经理 3篇
  • Python 9篇
  • 黑科技 2篇
  • 图形渲染 18篇
  • Android 105篇
  • iOS 30篇
  • C# 13篇
  • 微信开发 9篇
  • 数据库+NoSql 38篇
  • MMO设计理念 9篇
  • 游戏设计 54篇
  • 技术变现 1篇
  • 素材分享------------------------------- 1篇
  • ActiveX|Com 4篇
  • C#|MFC专题之Socket 21篇
  • C#|MFC专题之音视频处理 23篇
  • C#|MFC专题之多线程与委托 11篇
  • C#|MFC专题之布局美化 6篇
  • C#专题之ADO.net 12篇
  • C#专题之高级类、控件的使用 28篇
  • C#高级编程 25篇
  • C++/CLI/C#/dll(多重语言交互) 10篇
  • DirectX专题之Direct3D 20篇
  • DirectX专题之DXUT 15篇
  • GameEngine专题之AI 5篇
  • GameEngine专题之Client 11篇
  • GameEngine专题之Server 53篇
  • Lua脚本语言入门 12篇
  • Silverlight|WPF 8篇
  • VC++深入浅出 35篇
  • XNA|ManagedDX专题 22篇
  • 思月行云 -------------------- 14篇
  • Flash | as3 53篇
  • AIR | Starling 46篇
  • PHP 45篇
  • Java 11篇
  • javaScript | html5 | css3 19篇
  • jQuery | jQuery Mobile 14篇
  • PhoneGap 13篇
  • Box2D 2篇
  • 开源项目 5篇
  • 听见月光 32篇

最新评论

  • 亲测可用!国内最全的docker镜像源

    nanfengnan?: 看不懂你写的是什么

  • Cocos Creator 粒子效果插件

    gimimm: 哪里下载啊?

  • 苹果本Win10双系统开启CPU虚拟化

    2401_86385011: 可以录方法视频看看吗

  • 后端开源编程语言包管理器

    思月行云: 其他官方maven源: [code=html] https://repository.jboss.org/ https://repository.jboss.org/maven2/ [/code]

  • 亲测可用!国内最全的docker镜像源

    m0_74215254: 还是都用不了

大家在看

  • Kylin系统安装 32
  • vue.js组件库的搭建教程 6
  • zlibrary镜像网站入口,国内最新可访问地址官网
  • !!!带你了解震撼人心的1024!!!(内附代码) 1006
  • python画图|图例设置基础教程 752

最新文章

  • Spring Boot 如何使用拦截器、过滤器、监听器详解
  • GORM中事务的使用
  • Golang搭建WebRTC视频通话服务及SIP通信服务
2024年7篇
2023年87篇
2022年74篇
2021年58篇
2020年71篇
2019年124篇
2018年57篇
2017年46篇
2016年118篇
2015年138篇
2014年51篇
2013年189篇
2012年86篇
2011年120篇
2010年118篇
2009年62篇
2008年44篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家迪庆玻璃钢雕塑供应商商场开业美陈素材万安商场美陈武穴玻璃钢花盆花器朔州玻璃钢造型雕塑节庆商场美陈哪里买透明树脂玻璃钢户外人物雕塑南海玻璃钢花盆花器玻璃钢发光蝴蝶雕塑陕西卡通雕塑玻璃钢遵义玻璃钢浮雕人物山水雕塑蚌埠步行街玻璃钢雕塑销售厂家侯马玻璃钢牌匾雕塑河西五一商场美陈玻璃钢校园运动雕塑定做衢州玻璃钢人物雕塑定制嘉峪关动物玻璃钢雕塑安装山东超市商场美陈制造公园摆件玻璃钢雕塑尺寸湛江定制玻璃钢动物雕塑遵义商场美陈价格专业的玻璃钢雕塑设计制作玻璃钢香菇雕塑湖南水景玻璃钢人物雕塑成都商场美陈售价惠州透明玻璃钢雕塑厂家电话福建玻璃钢花盆报价三河玻璃钢雕塑生产厂家枣强玻璃钢雕塑设计许昌玻璃钢雕塑雕刻价格香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化