10、k8s对外服务之ingress
service和ingress的作用
service的作用
NodePort:会在每个节点开放一个端口,端口号30000-32767。
也是只能用于内网访问,四层转发。实现负载均衡。不能基于域名进行访问。
clusterip:service的默认类型,只能在集群内部访问。
loadBalancer:基于云平台的实现的,需要有loadBalancer的地址,仅限于云平台。
externallPS:service允许分配外部IP,把外部IP路由集中到集群的一个或者多个node节点。
ingress:只需要一个或者少量的公网IP地址或者loadBalancer的地址,就可以实现将多个http的服务暴露到外网,七层代理,service的service,基于域名和URL路径,把用户的请求转发到一个或者多个service的规则。
数据流向图

根据ingress-controller匹配到指定service,service再把访问ingress的基于域名的连接流量转发到service匹配的pod。
ingress的组成
ingress只能配置yaml文件配置,其实ingress是一种规则,根据ingress的配置匹配到指定service,service再把访问ingress的基于域名的连接流量转发到service匹配的pod。
ingress-controller:不是k8s自带的组件,第三方的软件,不管是哪一种ingress-controller机制都是一样的,没有任何区别,都是以pod的形式运行在集群当中。
- ingress-nginx:主流的ingress-controller。
- traefik:有图形化的ui,直观。
ingress-controller暴露方式
1、deployment+loabBalancer:你把ingress部署在公有云,可以采用这种方式,loadBalancer会为service自带创建一个负载均衡器,只要域名解析指向到loadbalancer的地址,就可以实现集群的对外访问。
2、daemonSet+hostnetwork+nodeSelector:ingress-controller会直接使用宿主机的网络和端口,一个node节点只能部署一个ingress-controller的pod。适用于大并发的生产环境。
3、deployment+nodeport:deployment部署也会执行一个ingress-controller的pod,pod也会执行一个service,service的模式是nodeport,分别对应80(http)和443(https),对应节点的端口号范围是30000-32767。
还需要额外部署一个service转发到pod,这种方式又会多了一层转发的请求,请求量级大,性能会有一定影响。
转发方式:NAT
ingress部署实现的过程
daemonSet+hostnetwork+nodeSelector模式
1、先给node2定义标签

2、提前准备好nginx-ingress-controller脚本文件并运行,保证daemonSet

由下可见hostnetwork直接使用了宿主机node2的端口转发流量

- 8181:nginx-controller默认配置的后台转发的端口,ingress没有匹配到规则时,使用的默认端口。
3、接着编写yaml脚本,定义pvc、pod、service和ingress,使ingress请求转向service,service再转向pod,pvc给pod自动分配pv。


4、最后给node2节点做域名映射,运行脚本后显示成功。

deployment+nodeport模式
1、提前准备好nginx-ingress-controller脚本文件并运行,保证deployment

2、创建service的yaml文件如下


3、直接运行上面实验(包含pvc、pod、service和ingress)的yaml脚本

4、最后node1或者node2节点做域名映射,运行脚本后显示成功。

https
https概念
http的加密版就是https,默认端口是443。加密方式:SSL或者TSL协议实现加密和认证。SSL已经淘汰,TLS证书是主流。
TLS的组成:
- 记录协议(record protocol):负责数据传输的可靠性
- 握手协议(handshake Security):建立安全连接的过程
TSL的作用:
- 数据加密:使用对称密钥加密通信的内容。
- 认知:通过数字证书验证服务器(服务端和客户端都要)的身份。证书可以自定义,也可以在专门的数字证书网站获取。
- 完整性检查:防止第三方对数据进行篡改。
htttps数据流向:
1、客户端发起请求,如向百度发起请求(请求方式:https,请求方法:get),请求建立连接:三次握手。
2、TLS/SSL的握手过程:
- 客户端——>发送支持tls版本的加密套件列表(证书和私钥文件)
- 服务端——>服务器选择一个双方都支持的TLS的证书和私钥等等,生产一个数字证书。
- 客户端——>客户端收到服务端的证书之后,验证证书的有效性(签发证书人是否合法,过期时间等等)。
- 客户端生成预定的密钥(TLS),和服务器交换密钥;服务端验证密钥的有效性,以及密钥是否正确。
- TLS的握手过程完成
3、建立安全连接:使用协商好的加密算法和密钥对后续的数据进行加密传输。
4、关闭TLS连接,释放资源然后四次挥手断开连接。
https部署实现的过程
daemonSet+hostnetwork+nodeSelector
1、先在集群内生成证书和密钥
证书:用于加密和认证网络通信的数字证书,证明服务器的身份。确保客户端连接到服务器是合法的。协商加密的密钥,保证通信过程中数据的安全。
公钥:有组织信息,数字签名等等,证书颁发机构签发的。
私钥:对服务器的证书进行数字签名,同时用于解密客户端发送的加密数据,私钥只有服务端才能够访问。


openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=nginxsvc/O=nginxsvc"
- openssl:签发ssl证书
- req:执行证书的请求以及生产相关的文件
- -x509:生成自签名x.509格式的证书
- -sha256:使用sha-256的散列算法
- -nodes:表示生成的私钥不加密
- -days 365:证书有效期的时间365天
- -newkey rsa:2048:表示生成密钥对是rsa加密的,长度是2048位。
- -keyout tls.key:生成的密钥对保存到tls.key文件中
- -out tls.crt:证书保存到tls.crt文件中
- -subj "/CN=nginxsvc/O=nginxsvc:为证书添加一个主题,CN是证书的名称,O是组织关系。
2、将证书和密钥保存到secret中

3、根据上面http的配置文件修改ingress控制字段添加个加密即可。

4、最后在主节点上给node2节点做域名映射,运行脚本后显示成功。


deployment+nodeport模式实现https在上面http实操基础上添加加密字段即可。
容器内抓包
1、获取docker的container id


2、根据container id获取docker的进程号
docker inspect --format '{{.State.Pid}}' container id

3、进入这个容器的网络命令空间
nsenter -n -t pid号

4、抓包
tcpdump -i 容器的网卡名

ingress
1、基于用户名和密码实现登录的认证
apt -y install apache2
设置http的账号密码

- auth是加密的文件的名称,必须是auth的名称。




2、页面跳转,重定向

traefik
ingress-controller的另一种插件,和ninx-ingress大同小异。
也是部署微服务更快捷的视线的http反向代理和负载均衡,以及7层代理。
nginx-ingress 需要不断的请求 k8s的api,获取终端的变化,traefik自动的实时更新,可以完全同步获取k8s的api的更新结果,和k8s的适配度更高。
nginx-ingree处理大并发环境更优秀
traefik:一般用于小的集群,并发量不是那么大的请求环境,。
traefik的部署方式
deployment+nodeport:适合面向内部服务
daemonset+hostnetwork+nodeselector:适合面向外部服务
loadbalancer+deployment:要有公有云支持

权限、pod、可视化界面

总结:
ingress是外部进入k8s集群的入口,可以理解为service的service,ingress使用的时候,域名,匹配到可用的service。
ingress是做7层转发,可以对http/https的请求进行处理。
相关文章:
10、k8s对外服务之ingress
service和ingress的作用 service的作用 NodePort:会在每个节点开放一个端口,端口号30000-32767。 也是只能用于内网访问,四层转发。实现负载均衡。不能基于域名进行访问。 clusterip:service的默认类型,只能在集群…...
【结束】JS如何不通过input的onInputFileChange使用本地mp4文件并播放,nextjs下放入public文件的视频用video标签无法打开
本地不用input标签获取video视频并播放 浏览器没有像JAVA这些语言之类的IO 代码: <div><video id"video_id" width"750" height"500" controls>Your browser does not support the video tag.</video> </div…...
【STM32】舵机SG90
1.舵机原理 舵机内部有一个电位器,当转轴随电机旋转,电位器的电压会发生改变,电压会带动转一定的角度,舵机中的控制板就会电位器输出的电压所代表的角度,与输入的PWM所代表的角度进行比较,从而得出一个旋转…...
科普:“git“与“github“
Git与GitHub的关系可以理解为:Git是一种软件工具,而GitHub则是一个在线平台,它们是“一家子”。二者的关联最直接体现在你通过Git在GitHub仓库中clone软件包到你的机器中来。 具体来说: 一、Git 定义:Git是一个开源的…...
个人简历html网页模板,科技感炫酷html简历模板
炫酷动效登录页 引言 在网页设计中,按钮是用户交互的重要元素之一。这样一款黑色个人简历html网页模板,科技感炫酷html简历模板,设计效果类似科技看板图,可帮您展示技能、任职经历、作品等,喜欢这种风格的小伙伴不要犹豫哦。该素材呈现了数据符号排版显示出人形的动画效…...
蓝桥杯备赛 Day8 二分
二分 1.要点 选取左闭右闭,[left,right] (1)二分查找:有序数组,且无重复元素寻找目标值key int left0,rightn-1,res-1;//未找到返回-1 while(left<right){int midleft((right-left)>>1); //注意右边括号,号优先于>>if(a[mi…...
CMMI5:请说明如何根据评价准则选择最佳解决方案?
一、明确评价准则及权重分配 确定评价准则:首先要清晰地列出所有相关的评价准则,这些准则通常涵盖多个方面,比如与项目目标的契合度(包括功能需求满足程度、性能需求达标情况、对项目进度的影响等)、技术可行性&#…...
<2.20>Leetcode哈希、双指针
还可以用双指针的做法 我们要找等于9 排序后从两边开始左右指针 2 3 7 9 如果29>9那么9肯定不能要 去掉 左边也一样 2 3 5 6 26小于9 那么2肯定不能要 去掉 package Leetcode; import java.util.*;public class 两数之和 {public int[] twoSum(int[] nums,int target…...
本2硕9电子科学专业,想走linux或是嵌入式,要具体学哪些技术
今天给大家分享的是一位粉丝的提问,本2硕9电子科学专业,想走linux或是嵌入式,要具体学哪些技术 接下来把粉丝的具体提问和我的回复分享给大家,希望也能给一些类似情况的小伙伴一些启发和帮助。 同学提问: 你好&…...
《鸿蒙开发-答案之书》获取视频第一帧和视频时间
《鸿蒙开发-答案之书》获取视频第一帧和视频时间 /*** 获取视频信息**let result await MySightUtil.getSightInfo(this.sightUri);*let base64 : string result[0];*let duration : number result[1]** param uri 视频地址* returns 第一个数据是缩略图 base64 字符串&…...
计算机科学与技术
计算机科学是一个庞大且关联性强的学科体系,初学者常面临以下痛点: - **知识点零散**:容易陷入"只见树木不见森林"的学习困境 - **方向不明确**:面对海量技术栈不知从何入手 - **体系缺失**:难以建立完整…...
vxe-table 如何实现跟 Excel 一样的数值或金额的负数自动显示红色字体
vxe-table 如何实现跟 Excel 一样的数值或金额的负数自动显示红色字体,当输入的值为负数时,会自动显示红色字体,对于数值或者金额输入时该功能就非常有用了。 查看官网:https://vxetable.cn gitbub:https://github.co…...
【Word转PDF】在线Doc/Docx转换为PDF格式 免费在线转换 功能强大好用
在日常办公和学习中,将Word文档转换为PDF格式的需求非常普遍。无论是制作简历、撰写报告还是分享文件,都需要确保文档格式在不同设备上保持一致。而小白工具的“Word转PDF”功能正是为此需求量身打造的一款高效解决方案。 【Word转PDF】在线Doc/Docx转换…...
AF3 _find_template_in_pdb 函数解读
AlphaFold3 中templates模块的_find_template_in_pdb函数用于在 mmCIF 文件中查找与给定模板序列匹配的链,通过三步匹配策略确保找到最佳的模板链。 源代码: def _find_template_in_pdb(template_chain_id: str,template_sequence: str,mmcif_object: mmcif_parsing.MmcifO…...
陶瓷膜分离技术保障食品工业原料用水安全
陶瓷膜分离技术在食品工业中应用广泛,尤其是在保障原料用水的安全性方面发挥着重要作用。下面将从几个方面介绍陶瓷膜分离技术如何保障食品工业原料用水的安全: 高效过滤杂质:陶瓷膜具有非常细小的孔径(通常在纳米级别),能够有效去…...
蓝桥杯 2.基础算法
蓝桥杯 2.基础算法 文章目录 蓝桥杯 2.基础算法基础算法时空复杂度枚举模拟编程11-16递归编程17进制转换编程18-19前缀和编程20-22差分编程23-27离散化贪心编程28-37二分双指针编程38-45构造编程46-49位运算编程50-55 排序冒泡排序选择排序插入排序快速排序归并排序编程56-65 基…...
ESP32-S3模组上兼容SCCB总线与I2C总线的解决方案(2)
接前一篇文章:ESP32-S3模组上兼容SCCB总线与I2C总线的解决方案(1) 二、问题求解 上一回说明了本系列文章的背景、所遇问题,以及乐鑫官方给出的解决方案,见以下测试用例: TEST_CASE("Camera driver uses an i2c port initialized by other devices test", &qu…...
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_os_specific_init函数
ngx_os_specific_init 声明在 src/os/unix/ngx_os.h ngx_int_t ngx_os_specific_init(ngx_log_t *log); 定义在 src\os\unix\ngx_linux_init.c ngx_int_t ngx_os_specific_init(ngx_log_t *log) {struct utsname u;if (uname(&u) -1) {ngx_log_error(NGX_LOG_ALERT, log,…...
Go 自动升级依赖版本
🚀 Go 自动升级依赖版本 在 Go 语言项目中,依赖管理使用 Go Modules(go.mod 和 go.sum)。如果想要自动升级依赖,可以使用以下方法。 1. 方式 1:升级所有依赖 go get -u ./...🔹 作用ÿ…...
fps僵尸:12.丧尸伤害检测
文章目录 设计丧尸攻击时启用伤害检测,攻击结束后取消伤害检测 思路需要在攻击动画中 调用&关闭伤害检测 实现注解动画通知:绑定动画与蓝图 设计 丧尸攻击时启用伤害检测,攻击结束后取消伤害检测 思路 需要在攻击动画中 调用&关闭…...
支持向量机(SVM)在 NLP 中的使用场景
支持向量机(Support Vector Machine, SVM)是一种强大的监督学习算法,广泛应用于分类任务中。由于其出色的分类性能和高效的计算特点,SVM 已经成为自然语言处理(NLP)领域中的一种经典模型。SVM 在 NLP 中的应用非常广泛,尤其在文本分类任务中,表现出色。 本文将探讨 SV…...
Linux中的Ctrl+C与Ctrl+Z
CtrlC与CtrlZ的区别 在Linux中,当我们在执行一个命令运行代码时,由于运行时间过长或中途出现报错,此时,我们可能需要终止该操作,这时候,该使用CtrlC还是CtrlZ呢? 1、CtrlC CtrlC:终…...
【深度学习】手写数字识别任务
数字识别是计算机从纸质文档、照片或其他来源接收、理解并识别可读的数字的能力,目前比较受关注的是手写数字识别。手写数字识别是一个典型的图像分类问题,已经被广泛应用于汇款单号识别、手写邮政编码识别等领域,大大缩短了业务处理时间&…...
go语言 创建kratos框架工程
go语言 创建kratos框架工程 1、准备 1.1、系统 只支持macos和linux系统, 这里主要是macos(linux类似) 1.2、需要的环境 1.2.1、go语言环境 $ brew install go # 会安装最新的go版本 $ go env -w GO111MODULEon # 设置go的环境1.2.2、 …...
Linux-GlusterFS操作子卷
文章目录 分布式卷添加卷分布式卷删除子卷删除总卷 🏡作者主页:点击! 🤖Linux专栏:点击! ⏰️创作时间:2025年02月20日19点30分 分布式卷添加卷 Node1上进行操作 扩容 #服务器端 gluster volu…...
修改阿里云服务器内网ip
运维同事问能不能改我自己的服务内网ip, 买了一台服99元服务器,以为不能结果,结果还真改成功了, 分享一下经验。 首先最后关闭服务器-关机,必须要关闭服务 访问vpc控制台,就是要新建立一个网络 https://…...
鸿蒙与跨端迁移的重要性
鸿蒙操作系统(HarmonyOS)是由华为公司开发的一款面向未来的全场景分布式操作系统。它旨在提供一个统一的平台,支持各种设备之间的无缝协作和数据共享,从而为用户提供更加连贯和高效的体验。在鸿蒙的生态系统中,跨端迁移…...
XML XML约束 二、DTD
1 什么是DTD DTD(Document Type Definition),文档类型定义,用来约束XML文档。例如要求xml文档的根元素必须是<students>,在<students>元素下可以包含0~n个<student>元素,每个<studen…...
用DeepSeek零基础预测《哪吒之魔童闹海》票房——从数据爬取到模型实战
系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 **一、为什么要预测票房?****二、准备工作****三、实战步骤详解****Step 1:数据爬取与清洗&am…...
医院管理系统方案-基于蓝牙室内定位技术的院内智能导航系统:技术详解、功能设计及核心优势
文面向IT技术员、医院信息化负责人及物联网应用开发者,本文介绍了一款基于蓝牙室内定位技术的智能导航系统。该系统通过高精度定位与智能路径规划,极大提升了患者就医体验与医院运营效率。 如需获取院内智能导航系统技术文档可前往文章最下方获取&#x…...
