当前位置: 首页 > news >正文

k8s面试题-ingress

场景:我通过deployment更新pod,ingress是怎么把新的请求流量发送到我新的pod的?是怎么监控到我更新的pod的?

在 Kubernetes 中,Ingress 是一种 API 对象,用于管理外部访问到集群内服务的 HTTP 和 HTTPS 路由。当你通过 Deployment 更新一个 Pod 时,Ingress 并不会直接监控 Pod 的更新,而是通过一系列的机制来感知服务的变化并更新路由规则。以下是整个过程的详细解释:

1.Deployment 更新 Pod 的过程
当你更新 Deployment 的配置(例如修改镜像版本)时,Kubernetes 的控制器会根据新的配置逐步替换旧的 Pod,创建新的 Pod 并删除旧的 Pod。这个过程称为滚动更新(Rolling Update)。
2.Service 的作用
在 Kubernetes 中,Pod 是动态的,可能会因为更新、故障等原因被销毁和重建。为了确保外部流量能够稳定地访问到服务,通常会使用 Service 来抽象 Pod 的访问方式。Service 通过一个稳定的虚拟 IP(ClusterIP)和端口,将流量转发到后端的 Pod。
当 Deployment 更新 Pod 时,Service 会自动感知后端 Pod 的变化。这是因为 Kubernetes 的 Endpoint Controller 会监控 Pod 的状态变化,并更新 Service 的 Endpoint 列表。Endpoint 列表记录了所有健康且可用的 Pod 的 IP 地址和端口。

3.Ingress 的工作原理
Ingress 本身并不直接管理 Pod,而是通过 Ingress Controller 来实现 HTTP/HTTPS 流量的路由。Ingress Controller 是一个独立的组件,它会监控 Kubernetes 集群中的 Ingress 资源,并根据 Ingress 的配置动态生成和更新路由规则。

4.Ingress 如何感知 Pod 的更新
当 Deployment 更新 Pod 时,Ingress 通过以下机制感知并更新路由规则:
4.1 监控 Service 的 Endpoint
Ingress Controller 会监控 Service 的 Endpoint 列表。当 Deployment 更新 Pod 时,Endpoint Controller 会更新 Service 的 Endpoint 列表,移除旧 Pod 的 IP 地址并添加新 Pod 的 IP 地址。
Ingress Controller 会定期轮询或通过 Kubernetes 的事件机制(Watch API)感知 Endpoint 列表的变化。

4.2 更新路由规则
当 Ingress Controller 检测到 Endpoint 列表的变化时,它会重新生成路由规则。这些路由规则通常会根据 Ingress 资源的配置和 Service 的 Endpoint 列表动态生成。
例如,如果 Ingress 配置了一个 HTTP 路由规则,将流量转发到某个 Service,Ingress Controller 会根据 Service 的 Endpoint 列表更新负载均衡器的后端目标。如果 Endpoint 列表中有新的 Pod IP 地址,Ingress Controller 会将流量转发到新的 Pod。

4.3 负载均衡
Ingress Controller 通常会使用负载均衡算法(如轮询、最少连接等)将流量分配到后端的 Pod。当 Pod 更新后,Ingress Controller 会根据新的 Endpoint 列表重新分配流量,确保流量能够到达新的 Pod。

示例:
假设你有一个 Deployment 和一个 Service,以及一个 Ingress 资源,以下是整个流程的简化示例:
1.更新 Deployment
你更新了 Deployment 的镜像版本。
Kubernetes 控制器开始滚动更新 Pod,创建新的 Pod 并删除旧的 Pod。
2.Endpoint 更新
Endpoint Controller 检测到 Pod 的变化,更新 Service 的 Endpoint 列表。
Endpoint 列表中移除了旧 Pod 的 IP 地址,添加了新 Pod 的 IP 地址。
3.Ingress Controller 感知变化
Ingress Controller 通过 Watch API 检测到 Endpoint 列表的变化。
Ingress Controller 重新生成路由规则,更新负载均衡器的后端目标。
4.流量转发
Ingress Controller 根据新的路由规则将流量转发到新的 Pod。
用户访问 Ingress 的域名时,流量会通过 Ingress Controller 转发到新的 Pod。

相关文章:

  • ​兰亭妙微 | 系统界面设计优化:让复杂信息更轻松被看懂​
  • Linux操作系统之进程(二):进程状态
  • polarctf-web-[某函数的复仇]
  • webpack5所用依赖以及对应的版本
  • 【25软考网工】第七章(3) UOS Linux防火墙配置和Web应用服务配置
  • springboot+vue实现鲜花商城系统源码(带用户协同过滤个性化推荐算法)
  • 七彩喜防摔马甲:科技守护银发安全的“隐形铠甲”
  • [特殊字符] 遇见Flask
  • 人脸识别,使用 deepface + api + flask, 改写 + 调试
  • AI办公提效,Deepseek + kimi生成ppt
  • SRS流媒体服务器,配置国标协议对接和HTTPS视频流输出功能
  • 以加减法计算器为例,了解C++命名作用域与函数调用
  • 词向量(Word Embedding)深度解析
  • iPaaS集成平台技术选型关注哪些指标?
  • TCP网络编程学习
  • 【JAVA】中文我该怎么排序?
  • 豪越智能仓储:为消防应急物资管理“上锁”
  • PyTorch进阶实战指南:02分布式训练深度优化
  • 使用Tkinter写一个发送kafka消息的工具
  • 如何从 iPhone 获取照片:5 个有效解决方案
  • 南京网站设计公司哪儿济南兴田德润怎么联系/免费搜索引擎入口
  • 网站后台栏目发布/个人接外包的网站
  • 亚马逊网站开发/seo网站
  • 昌平装修公司哪家好/seo排名优化软件有
  • 如何在网站源码做授权/网络营销做得比较成功的案例
  • 长沙市做网站的网站/app推广引流