k8s面试题-ingress

news2025/5/23 3:15:39

场景:我通过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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2383574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Node.js Express 项目现代化打包部署全指南

Node.js Express 项目现代化打包部署全指南 一、项目准备阶段 1.1 依赖管理优化 # 生产依赖安装(示例) npm install express mongoose dotenv compression helmet# 开发依赖安装 npm install nodemon eslint types/node --save-dev1.2 环境变量配置 /…

upload-labs通关笔记-第15关 文件上传之getimagesize绕过(图片马)

目录 一、图片马 二、文件包含 三、文件包含与图片马 四、图片马制作方法 五、源码分析 六、制作图片马 1、创建脚本并命名为test.php 2、准备制作图片马的三类图片 3、 使用copy命令制作图片马 七、渗透实战 1、GIF图片马渗透 (1)上传gif图…

idea无法识别Maven项目

把.mvn相关都删除了 导致Idea无法识别maven项目 或者 添加导入各个模块 最后把父模块也要导入

linux中cpu内存浮动占用,C++文件占用cpu内存、定时任务不运行报错(root) PAM ERROR (Permission denied)

文章目录 说明部署文件准备脚本准备部署g++和编译脚本使用说明和测试脚本批量部署脚本说明执行测试定时任务不运行报错(root) PAM ERROR (Permission denied)报错说明处理方案说明 我前面已经弄了几个版本的cpu和内存占用脚本了,但因为都是固定值,所以现在重新弄个用C++编写的…

STM32 | FreeRTOS 消息队列

01 一、概述 队列又称消息队列,是一种常用于任务间通信的数据结构,队列可以在任务与任务间、中断和任务间传递信息,实现了任务接收来自其他任务或中断的不固定长度的消息,任务能够从队列里面读取消息,当队列中的消…

便捷的Office批量转PDF工具

软件介绍 本文介绍的软件是一款能实现Office批量转换的工具,名为五五Excel word批量转PDF。 软件小巧 这款五五Excel word批量转PDF软件大小不到2M。 操作步骤一 使用该软件时,只需把软件和需要转换的Word或Excel文件放在同一个文件夹里。 操作步骤…

opcUA 编译和建模入门教程(zhanzhi学习笔记)

一、使用SIOME免费工具建模 从西门子官网下载软件SIOS,需要注册登录,下载安装版就行。下载后直接安装就可以用了,如图: 安装完成后打开,开始建模,如图左上角有新建模型的按钮。 新建了新工程后&#xff0c…

【关联git本地仓库,上传项目到github】

目录 1.下载git2.绑定用户3.git本地与远程仓库交互4.github项目创建5.上传本地项目到github6.完结撒花❀❀❀!!! 1.下载git git下载地址:https://git-scm.com/downloads 下载安装后创建快捷地址:(此处比较…

WebRTC技术EasyRTC音视频实时通话驱动智能摄像头迈向多场景应用

一、方案背景​ 在物联网蓬勃发展的当下,智能摄像头广泛应用于安防、家居、工业等领域。但传统智能摄像头存在视频传输延迟高、设备兼容性差、网络波动时传输不稳定等问题,难以满足用户对实时流畅交互视频的需求。EasyRTC凭借低延迟、高可靠、跨平台特性…

java 代码查重(三)常见的距离算法和相似度(相关系数)计算方法

目录 一、几种距离度量方法 【 海明距离 /汉明距离】 【 欧几里得距离(Euclidean Distance) 】 【 曼哈顿距离 】 【 切比雪夫距离 】 【 马氏距离 】 二、相似度算法 【 余弦相似度 】 【 皮尔森相关系数 】 【 Jaccard相似系数 /杰卡德距离】…

LangChain4j入门AI(六)整合提示词(Prompt)

前言 提示词(Prompt)是用户输入给AI模型的一段文字或指令,用于引导模型生成特定类型的内容。通过提示词,用户可以告诉AI“做什么”、 “如何做”以及“输出格式”,从而在满足需求的同时最大程度减少无关信息的生成。有…

redis--redisJava客户端:Jedis详解

在Redis官网中提供了各种语言的客户端,地址: https://redis.io/docs/latest/develop/clients/ Jedis 以Redis命令做方法名称,学习成本低,简单实用,但是对于Jedis实例是线程不安全的(即创建一个Jedis实例&a…

[CSS3]百分比布局

移动端特点 PC和手机 PC端网页和移动端网页的有什么不同? PC屏幕大,网页固定版心手机屏幕小,网页宽度多数为100% 谷歌模拟器 使用谷歌模拟器可以在电脑里面调试移动端的网页 屏幕尺寸 了解屏幕尺寸概念 屏幕尺寸: 指的是屏幕对角线的长度&#xff…

【Java微服务组件】异步通信P2—Kafka与消息

欢迎来到啾啾的博客🐱。 记录学习点滴。分享工作思考和实用技巧,偶尔也分享一些杂谈💬。 欢迎评论交流,感谢您的阅读😄。 目录 引言Kafka与消息生产者发送消息到Kafka批处理发送设计消息的幂等信息确保消息送达acks配置…

R语言空间数据处理入门教程

我的课程《R语言空间数据处理入门教程》已重新恢复课程售卖,有需要的读者可以学习。 👇点击下方链接(文末“阅读原文”可直达),立即开启你的空间数据之旅: https://www.bilibili.com/cheese/play/ss13775…

使用zap,对web应用/API接口 做安全检测

https://www.zaproxy.org/getting-started/ 检测方法 docker pull ghcr.io/zaproxy/zaproxy:stable# 执行baseline测试 docker run -t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py \ -t https://baseline.yeshen.org# 执行api测试 docker run -t ghcr.io/zaproxy/zaproxy…

UE5.6新版本—— 动画光照系统重点更新

UE5.6预览版已经可以下载,发布会在下个月的6.5号发布。 5.6界面UI设计 5.6 对引擎进行了大规模的重新设计,先看整体内容,主题UI设计 被调整了位置,左边大多数的选择,框选工具,吸附工具,挪到了左…

腾讯位置服务重构出行行业的技术底层逻辑

位置智能:重构出行行业的技术底层逻辑 在智慧城市建设与交通出行需求爆发的双重驱动下,位置服务正从工具层跃升为出行行业的核心基础设施。腾讯位置服务以“连接物理世界与数字空间”为核心理念,通过构建高精度定位、实时数据融合、智能决策…

如何用JAVA手写一个Tomcat

一、初步理解Tomcat Tomcat是什么? Tomcat 是一个开源的 轻量级 Java Web 应用服务器,核心功能是 运行 Servlet/JSP。 Tomcat的核心功能? Servlet 容器:负责加载、实例化、调用和销毁 Servlet。 HTTP 服务器:监听端口…

使用 Qt QGraphicsView/QGraphicsScene 绘制色轮

使用 Qt QGraphicsView/QGraphicsScene 绘制色轮 本文介绍如何在 Qt 中利用 QGraphicsView 和 QGraphicsScene 实现基础圆形绘制,以及进阶的色轮(Color Wheel)效果。 色轮是色彩选择器的常见控件,广泛应用于图形设计、绘画和 UI …