K8s中nodePort、port、targetPort、hostPort介绍

1、nodePort

外部流量访问k8s集群中service入口的一种方式(另一种方式是LoadBalancer),即nodeIP:nodePort是提供给外部流量访问k8s集群中service的入口。比如外部用户要访问k8s集群中的一个Web应用,那么我们可以配置对应service的type=NodePort,nodePort=30001。其他用户就可以通过浏览器http://node:30001访问到该web服务。而数据库等服务可能不需要被外界访问,只需被内部服务访问即可,那么我们就不必设置service的NodePort。

作者:taj3991
链接:https://www.jianshu.com/p/8275f2031c83
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2、port

k8s集群内部服务之间访问service的入口。即clusterIP:port是service暴露在clusterIP上的端口。mysql容器暴露了3306端口,集群内其他容器通过33306端口访问mysql服务,但是外部流量不能访问mysql服务,因为mysql服务没有配置NodePort。对应的service.yaml如下:
apiVersion: v1
kind: Service
metadata:
name: mysql-service
spec:
ports:

  • port: 33306
    targetPort: 3306
    selector:
    name: mysql-pod

3、targetPort

容器的端口(最终的流量端口)。targetPort是pod上的端口,从port和nodePort上来的流量,经过kube-proxy流入到后端pod的targetPort上,最后进入容器。
制作容器时暴露的端口一致(使用DockerFile中的EXPOSE),例如官方的nginx(参考DockerFile)暴露80端口。 对应的service.yaml如下

apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort // 有配置NodePort,外部流量可访问k8s中的服务
ports:

  • port: 30080 // 服务访问端口
    targetPort: 80 // 容器端口
    nodePort: 30001 // NodePort
    selector:
    name: nginx-pod

4、hostPort

这是一种直接定义Pod网络的方式。hostPort是直接将容器的端口与所调度的节点上的端口路由,这样用户就可以通过宿主机的IP加上来访问Pod了,如:

apiVersion: v1
kind: Pod
metadata:
name: influxdb
spec:
containers:
- name: influxdb
image: influxdb
ports:
- containerPort: 8086
hostPort: 8086
这样做有个缺点,因为Pod重新调度的时候该Pod被调度到的宿主机可能会变动,这样就变化了,用户必须自己维护一个Pod与所在宿主机的对应关系。
使用了 hostPort 的容器只能调度到端口不冲突的 Node 上,除非有必要(比如运行一些系统级的 daemon 服务),不建议使用端口映射功能。如果需要对外暴露服务,建议使用 NodePort Service。

5、总结

 总的来说,port和nodePort都是service的端口,前者暴露给k8s集群内部服务访问,后者暴露给k8s集群外部流量访问。从上两个端口过来的数据都需要经过反向代理kube-proxy,流入后端pod的targetPort上,最后到达pod内的容器。nodeport与hostport都是通过,主机ip+端口的方式访问,区别为:hostport确认的是固定主机ip,nodeport可以动态一些。

K8s中nodePort、port、targetPort、hostPort介绍相关推荐

  1. 从部署 httpd 入手,理清 k8s 配置中的 containerPort、port、nodePort、targetPort

    注:文中各种内网.公网 IP 仅为示例,不保证所有 IP 都可以访问,且你的环境中 IP 可能不同. 背景 在上一篇文章 自己搭建一个k8s环境 中,我们一顿操作猛如虎,搭建出了由 1 个 maste ...

  2. k8s中几种port介绍

    1.端口所应用位置的不同 port是service的的端口 targetport是pod也就是容器的端口 nodeport是容器所在宿主机的端口(实质上也是通过service暴露给了宿主机,而port ...

  3. k8s四种port解析:nodePort、port、targetPort、containerPort

    1. nodePort nodePort提供了集群外部客户端访问service的一种方式,:nodePort提供了集群外部客户端访问service的端口,即nodeIP:nodePort提供了外部流量 ...

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

    Kubernetes中的nodePort,targetPort,port的区别和意义(转) 原文https://blog.csdn.net/u013760355/article/details/701 ...

  5. Kubernetes中的nodePort,targetPort,port的区别和意义

    1. nodePort 外部机器可访问的端口. 比如一个Web应用需要被其他用户访问,那么需要配置type=NodePort,而且配置nodePort=30001,那么其他机器就可以通过浏览器访问sc ...

  6. K8s 中 ConfigMap 使用介绍

    K8s 中 ConfigMap 使用介绍 一.基本介绍 二.ConfigMap 使用介绍 1.ConfigMap 的创建 2.Pod 中使用 ConfigMap 一.基本介绍 ConfigMap 是一 ...

  7. kubernetes(三)k8s中通信和Service

    目录 1.同一个Pod中的容器通信 2.集群内Pod之间的通信 3 集群内Service-Cluster IP 4.外部服务访问集群中的Pod 4.1 Service-NodePort 4.2.Ser ...

  8. 在 k8s 中部署 Prometheus 和 Grafana

    部署 Prometheus 和 Grafana 到 k8s Intro 上次我们主要分享了 asp.net core 集成 prometheus,以及简单的 prometheus 使用,在实际在 k8 ...

  9. K8s9(2-1) k8s中的通信机制, kube-proxy的ipvs模式 ,无头服务,LoadBalancer,ExternalName,外部公有 ip(externalIPs)

    1.K8s中的service和通信: Service可以看作是一组提供相同服务的Pod对外的访问接口.借助Service,应用可以方便地实现服务发现和负载均衡. service默认只支持4层负载均衡能 ...

  10. k8s中Service ClusterIP ping不通?

    一. Service的类型 先来看看<kubernetes权威指南>中对Service类型的介绍: ClusterIP:kubernetes默认会自动设置Service的虚拟IP地址,仅可 ...

最新文章

  1. 5G的3大应用场景落地开花,中国或将引领全球5G产业发展
  2. UNIX网络编程之旅-配置unp.h头文件环境
  3. 深圳湾口岸明起开通公交大巴
  4. 一看就懂的动态规划入门教程
  5. 修改 IE 查看源文件默认工具
  6. Unicode、UTF-8、Big Endian、Little Endian、GBK、UCS-2
  7. android 怎么自定义任务栈,Android中的Activity详解--启动模式与任务栈
  8. 【转载】三极管,场效应管 工作原理小结
  9. 以容器为代表的云原生技术,正成为释放云价值最短路径
  10. Essentials of Deep Learning: Visualizing Convolutional Neural Networks in Python
  11. C++编程题积累——for循环判断条件陷阱
  12. ONLINE_JUDGE
  13. 如何打破线下流量瓶颈?三四线城市实体门店的生存之道
  14. Android开发20——单个监听器监听多个按钮点击事件
  15. 简单了解一下ArcPy
  16. 计算机组成原理罗克露课后答案,计算机组成原理[完整版](罗克露)(全)原版教案.ppt...
  17. c语言写莫迪康通信,常用PLC通信协议有哪些?
  18. AlphaFold2: Highly accurate protein structure prediction with AlphaFold笔记
  19. word2010自动弹出信息检索解决方法
  20. 【数字预失真】基于Volterra级数的宽带射频功放数字预失真线性化技术matlab仿真

热门文章

  1. 概率论在实际生活的例子_概率论在实际生活中的应用
  2. 如何控制局域网网速_单臂路由|N1盒子(OpenWRT)单线多拨实现网速叠加
  3. VLAN隔离技术 — 端口隔离
  4. 算法工程师的职业发展前景思考和总结
  5. 【夏栀的博客】3月9日零点正式上线
  6. python ffmpeg mp3文件转为wav文件
  7. 【K8S】K8s部署Metrics-Server服务
  8. USGS批量下载影像(Sentinel2/哨兵2/Landsat)数据、bda程序安装-(史上最全讲解)
  9. 利用python编程,制作自己的游戏“外挂”!
  10. 苹果电子邮件怎么注册_电子邮件地址怎么写