K8s端口映射

news/2024/11/21 1:47:15/

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net

1、nodePort

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

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: 33306targetPort: 3306selector: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      // NodePortselector:name: nginx-pod

4、hostPort

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

apiVersion: v1
kind: Pod
metadata:name: influxdb
spec:containers:- name: influxdbimage: influxdbports:- containerPort: 8086hostPort: 8086

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

5、总结

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


http://www.ppmy.cn/news/491192.html

相关文章

DES算法S盒学习

在密码学中,S盒(Substitution-box)是对称密钥算法执行置换计算的基本结构。 S盒用在分组密码算法中,是唯一的非线性结构。 S盒是将48比特压缩成32比特,S盒接受特定数量的输入48比特,经过8个盒将其转换为32比特输出。 在DES算法中…

K8s集群重新初始化

学习来源: 51cto: https://edu.51cto.com/sd/518e5 腾讯课堂: https://ke.qq.com/course/2738602 K8s集群环境搭建:https://blog.csdn.net/qq_26900081/article/details/109291999 学习过程中一不小心把K8s给折腾坏了&am…

PHP -S 命令

从php5.4开始,引入了一个内置web服务器,可以在测试环境迅速搭建web环境而无须复杂的配置。性能肯定是不如nginx和apache服务器的,生成环境还是要搭建服务器。 1-命令使用方法: php -S 0.0.0.0:99 当然的其前提是进入到项目的相…

海思开发:yolo v5s :pytorch->onnx->caffe->nnie

一、前言 主要是遇见几个问题,赶紧记录一下,免得后面兄弟们吃同样的亏,也帮助自己记忆。附上我的 yolo v5 后处理部分 c 语言版本代码:C版 yolo v5s 后处理部分 二、转换报错 1. 报错: Reshape dimention number shall be 2 or…

K8s 端口映射

原文链接 https://www.jianshu.com/p/8275f2031c83 1. nodePort 外部流量访问k8s集群中service入口的一种方式(另一种方式是LoadBalancer),即nodeIP:nodePort是提供给外部流量访问k8s集群中service的入口。比如外部用户要访问k8s集群中的一…

windows本地安装K8S

一、安装docker desktop windows 安装k8s , 首先需要安装docker,一般我们是安装docker desktop, Windows版的Docker Desktop 是社区版本,您可以从Docker Hub上直接下载,下载链接如下: Docker Hub 系统…

宋茜 许魏洲 生来倔强 高音质伴奏

宋茜 许魏洲 生来倔强 高音质伴奏

ts重点学习86-map类型笔记

export default {}// 创建 let nameSiteMapping new Map();// 设置 nameSiteMapping.set("邱淑贞", 1); nameSiteMapping.set("宋茜", 2); nameSiteMapping.set("景甜", 3);// 获取键队友的值 // console.log(nameSiteMapping.get("景甜&q…