kubernetes中port、target port、node port的对比分析,以及kube-proxy代理
全栈工程师开发手册 (作者:栾鹏)
架构系列文章
在学习前要知道一个服务下可能有多个pod,每个pod可能在不同的主机上。一个主机可能有多个服务。而每个container又几乎模拟的是一个主机。所以不是只有主机才有ip和端口号。
容器网络实例
服务中的3个端口设置
这几个port的概念很容易混淆,比如创建如下service:
apiVersion: v1
kind: Service
metadata:labels:name: app1name: app1namespace: default
spec:type: NodePortports:- port: 8080targetPort: 8080nodePort: 30062selector:name: app1
port
即,这里的port表示:service暴露在cluster ip上的端口,<cluster ip>:port
是提供给集群内部客户访问service的入口。
nodePort
首先,nodePort是kubernetes提供给集群外部客户访问service入口的一种方式(另一种方式是LoadBalancer),所以,<nodeIP>:nodePort
是提供给集群外部客户访问service的入口。
targetPort
targetPort很好理解,targetPort是pod上的端口,从port和nodePort上到来的数据最终经过kube-proxy流入到后端pod的targetPort上进入容器。
port、nodePort总结
总的来说,port和nodePort都是service的端口,前者暴露给集群内客户访问服务,后者暴露给集群外客户访问服务。从这两个端口到来的数据都需要经过反向代理kube-proxy流入后端pod的targetPod,从而到达pod上的容器内。
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
主要将由网络接口到来的通过服务集群入口:port的请求重定向到本地kube-proxy端口(随机端口)的映射,即来自本地容器的服务访问请求;
注:我认为,这种情况的网络包不可能来自外部网络,因为cluster ip是个virtual ip,外部网络中不存在这样的路由将该数据包发送到本机;所以该请求只能来自本地容器,从本地容器出来的访问,服务访问请求是通过本地容器虚拟网卡输入到本地网络接口的。
KUBE-NODEPORT-CONTAINER
主要将由网络接口到来的通过服务集群外部入口:nodePort的请求重定向到本地kube-proxy端口(随机端口)的映射;即来自k8s集群外部网络的服务访问请求,可以来自本机容器,也可以来自其他node的容器,还可以来自其他node的进程;
KUBE-PORTALS-HOST
主要将该node本地进程通过服务集群入口:port的请求重定向到本地kube-proxy端口(随机端口)的映射。
KUBE-NODEPORT-HOST
主要将该node本地进程通过服务集群外部入口:nodePort的请求重定向到本地kube-proxy端口(随机端口)的映射。
kube-proxy反向代理
不管是通过集群内部服务入口:port还是通过集群外部服务入口:nodePort的请求都将重定向到本地kube-proxy端口(随机端口)的映射,然后将到这个kube-proxy端口的访问给代理到远端真实的 pod 地址上去。
案例
另一个案例
总结
所以这里我们要知道的关于ip的东西。
我们部署k8s的服务器肯定不是只有一台主机。一般是多台主机在一个局域网里面。并能为外界提供一个或多个外网ip。所以每台主机会有局域网ip和外网ip。局域网ip为192.168.xx.xx,而外网ip在阿里云或华为云的控制台中可以看到。
而k8s中对外提供服务的资源为service。一个k8s集群可能有多个service,要么使用端口号进行区分,要么使用ip地址+端口号进行区分。在k8s里面,为每个service设置了集群ip。10.233.xxx.xxx:port
如果设置了service的ports属性type为nodeport,则请求每个服务器192.168.xx.xx上的nodePort端口号,都会映射到该service上。而service里面包含多个容器组,不同的容器组部署在不同的服务器上,在service里面服务器为node。服务内部,可能会读取node上的数据,所以一个服务里面也会为node分配ip。不同service内,同一个服务器代表的node,nodeip是不一样的。
kubernetes中port、target port、node port的对比分析,以及kube-proxy代理相关推荐
- 深度学习中常用的激活函数详解及对比分析(sigmoid)
Sigmoid函数: 特性: 1.当变量值远离中心轴时,梯度几乎为0,在神经网络的反向传播过程中,链式求导导致经过sigmoid函数之后的梯度 很小,权重值更新较慢 2.计算机执行指数运算较慢 3.s ...
- 【转】DICOM:DICOM Print服务中PresentationContext协商之 MetaSOPClass与SOPClass对比分析!!!!!!!!
转自:https://zssure.blog.csdn.net/article/details/45119841 背景: 最近项目中遇到的实际问题较多,且大多是较隐蔽的.不易被发现的错误.究其根源来看 ...
- 关于 Kubernetes中Service的一些笔记
写在前面 学习K8s,整理记忆 博文内容涉及:K8s中通过Servie的实现的服务创建,服务发现,服务发布 以及Load balancer负载,Ingress7层路由负载等的实际Demo 陈平安说,& ...
- 制造与供应链中的人工智能行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
制造与供应链中的人工智能市场的企业竞争态势 该报告涉及的主要国际市场参与者有IBM.Microsoft.Oracle.Google.SAS.SAP SE.Siemens.Salesforce.Camb ...
- 中红外传感器行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
中红外传感器市场的企业竞争态势 该报告涉及的主要国际市场参与者有Daylight Solutions.Structured Materials Industries.Maxion Technologi ...
- 中红外激光行业调研报告 - 市场现状分析与发展前景预测
中红外激光市场的企业竞争态势 该报告涉及的主要国际市场参与者有IMRA America Inc..Quantronix Corporation.Ekspla.Rofin-Baasel UK Ltd.. ...
- Kubernetes中的nodePort,targetPort,port的区别和意义
1. nodePort 外部机器可访问的端口. 比如一个Web应用需要被其他用户访问,那么需要配置type=NodePort,而且配置nodePort=30001,那么其他机器就可以通过浏览器访问sc ...
- Kubernetes中的nodePort,targetPort,port的区别和意义(转)
Kubernetes中的nodePort,targetPort,port的区别和意义(转) 原文https://blog.csdn.net/u013760355/article/details/701 ...
- usb serial port 驱动_tty初探 — uart驱动框架分析
写在前面: 我们没有讲UART驱动,不过我们认为,只要系统学习了第2期,应该具备分析UART驱动的能力,小编做答疑几年以来,陆陆续续有不少人问到UART驱动怎么写,所以今天就分享一篇深度长文(1700 ...
最新文章
- c++ssh连接_一步步使SSH连接您的github仓库
- 2010年7月blog汇总:OpenTest、MetaModelEngine和敏捷个人
- 第一个android程序HelloWorld
- 北京超前布局通用人工智能 我国首个超大规模智能模型系统发布
- WebService入门Demo
- python实现交并比IOU
- UVA - 489 ​​​​​​​Hangman Judge
- 面试精讲之面试考点及大厂真题 - 分布式专栏 14 全面了解Kafka的使用与特性
- override和overload的小笔记
- 内向的人能做管理吗?
- 使用idea上传项目到gitHub
- 文件服务器 重复文件,ftp服务器校验重复文件
- 时间序列数据建模分析利器sktime初体验
- 【有利可图网】字体设计:英文字体的气质和选用详解(二)
- 【大数据语言】怎样利用Python爬虫,高效获取大规模数据
- win下使用curl
- python中reduce函数_reduce函数
- 在3D城市模型中添加不同的纹理
- halcon在图片上画几何形状并保存
- fgets函数的使用
热门文章
- python小白从哪来开始-老男孩python课程亮点在哪里?python小白
- 学python语言有前途吗-学习python的前景怎么样?
- win7系统启用与配置语音识别功能的操作方法
- 生活中的七个语音识别经典应用
- 3x3矩阵怎么求逆矩阵_表象变换的幺正算符怎么定义的? 为何说算符与态可以看作矩阵?...
- 使用批处理脚本(BAT)调用FFMPEG批量编码视频
- python自定义变量名有哪些_Python学习第161课——自定义变量和导出变量
- jquery 选择器 逗号
- python画太极八卦图_用布尔运算绘制一个太极八卦图
- 【NOI OpenJudge】【1.4】编程基础之逻辑表达式与条件分支