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。

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

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

相关文章

RHCE 练习三:架设一台 NFS 服务器

一、题目要求 1、开放 /nfs/shared 目录,供所有用户查询资料 2、开放 /nfs/upload 目录,为 192.168.xxx.0/24 网段主机可以上传目录,并将所有用户及所属的组映射为 nfs-upload,其 UID 和 GID 均为 210 3.将 /home/tom 目录仅共享给 192.16…

【动态导通电阻】GaN HEMT动态导通电阻的精确测量

2023 年 7 月,瑞士洛桑联邦理工学院的 Hongkeng Zhu 和 Elison Matioli 在《IEEE Transactions on Power Electronics》期刊发表了题为《Accurate Measurement of Dynamic ON-Resistance in GaN Transistors at Steady-State》的文章,基于提出的稳态测量方法,研究了氮化镓(…

AI 制作游戏美术素材流程分享(程序员方向粗糙版)

AI 制作游戏美术素材分享(程序员方向粗糙版) 视频讲解: 抖音:https://www.douyin.com/user/self?from_tab_namemain&modal_id7505691614690561295&showTabpost Bilibili: https://www.bilibili.com/video/BV1ojJGzZEve/ 写在最前面: 本方法比较粗糙,只对对美术风…

Java求职面试:互联网大厂技术栈深度解析

文章简述 在这篇文章中,我们将通过一个模拟的面试场景,带你深入了解Java求职面试中可能会遇到的技术栈问题。通过这个故事,你可以学习到相关技术点的具体应用场景和面试技巧。 正文 场景:某互联网大厂的面试现场 面试官&#…

学习日记-day11-5.20

完成目标: comment.java package com.zcr.pojo; import org.hibernate.annotations.GenericGenerator;import javax.persistence.*; //JPA操作表中数据,可以将对应的实体类映射到一张表上Entity(name "t_comment")//表示当前的实体类与哪张表…

机器学习第十九讲:交叉验证 → 用五次模拟考试验证真实水平

机器学习第十九讲:交叉验证 → 用五次模拟考试验证真实水平 资料取自《零基础学机器学习》。 查看总目录:学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手把手指南 交叉验证…

Linux面试题集合(6)

创建多级目录或者同级目录 mkdir -p 文件名/文件名/文件名 mkdir -p 文件名 文件名 文件名 Linux创建一个文件 touch 文件名 DOS命令创建文件 echo 内容>文件名(创建一个有内容的文件) echo >文件名(创建一个没有内容的文件&#xff09…

Vue百日学习计划Day46-48天详细计划-Gemini版

Day 46: <KeepAlive> - 组件缓存与优化 (~3 小时) 本日目标: 理解 <KeepAlive> 的作用&#xff0c;学会如何使用它来缓存组件实例&#xff0c;从而优化应用性能和用户体验。所需资源: Vue 3 官方文档 (<KeepAlive>): https://cn.vuejs.org/guide/built-ins/…

SpringBean模块(三)具有生命周期管理能力的类(1)AutowireCapableBeanFactory

一、介绍 1、简介 AutowireCapableBeanFactory 是 Spring 框架中的一个接口&#xff0c;位于 org.springframework.beans.factory 包下&#xff0c;它提供了更底层的 Bean 实例化、依赖注入和生命周期管理能力&#xff0c;即使这些 Bean 没有通过常规的 Component 或 XML 注册…

Service Mesh

目录 一、Service Mesh 的核心特点 二、Service Mesh 的典型架构 1. Sidecar 模式 2. 控制平面与数据平面分离 三、Service Mesh 解决的核心问题 四、典型应用场景 五、主流 Service Mesh 框架对比 六、挑战与局限性 七、未来趋势 总结 Istio 一、Istio 核心组件与…

黑马Java基础笔记-13常用查找算法

查找算法 基本查找(也叫顺序查找&#xff0c;线性查找) 二分查找&#xff08;需要有序数据&#xff09; public static int binarySearch(int[] arr, int number){//1.定义两个变量记录要查找的范围int min 0;int max arr.length - 1;//2.利用循环不断的去找要查找的数据wh…

Go 语言 vs C+Lua(Skynet)游戏服务器方案对比分析

为啥挑这两个呢&#xff1f;因为两种技术分别对应CSP模型和Actor模型&#xff0c;都是经过时间检验的成熟且可靠的并发模型&#xff0c;问了很多地方&#xff0c;经过gpt整理得出如下报告。 从开发效率、运行性能、热更新扩展、云部署与水平扩展能力、多类型游戏支持等五个维度…

LeetCode 925. 长按键入 java题解

双指针。不会写。 https://leetcode.cn/problems/long-pressed-name/description/ class Solution {public boolean isLongPressedName(String name, String typed) {int len1name.length();int len2typed.length();int i0,j0;while(i<len1&&j<len2){if(name.ch…

如何使用通义灵码提高前端开发效率

工欲善其事&#xff0c;必先利其器。对于前端开发而言&#xff0c;使用VSCode已经能够极大地提高前端的开发效率了。但有了AI加持后&#xff0c;前端开发的效率又更上一层楼了&#xff01; 本文采用的AI是通义灵码插件提供的通义千问大模型&#xff0c;是目前AI性能榜第一梯队…

【小明剑魔视频Viggle AI模仿的核心算法组成】

Viggle AI 作为一款先进的生成式视频AI工具&#xff0c;其核心技术栈融合了多项前沿算法。以下是深度解析其核心算法架构及实现原理&#xff1a; 一、核心算法组成 1. 运动控制生成&#xff08;Motion Control Generation&#xff09; 算法框架&#xff1a;基于扩散模型&…

解决Power BI Desktop导入Excel数据第一行不是列标题问题

选中第一行不是列标题的表→鼠标右键→选择编辑查询→进入Power Query界面→点击“将第一行用作标题”→点击左边的“关闭并应用” 第一行就提升为标题了

对 Lambda 架构问题的深入理解

感谢 GPT&#xff0c;对很多问题的理解有机会更深。 大家攻击 Lambda 架构&#xff0c;常说的一个点就是 “实时离线指标存在差异”。“实时离线指标存在差异”&#xff0c;是一个真实困扰运营方的问题吗&#xff1f; 答案&#xff1a;是的&#xff0c;这是一个真实生活中的痛…

React中使用ahooks处理业务场景

// 从 ahooks 引入 useDynamicList 钩子函数&#xff0c;用于管理动态列表数据&#xff08;增删改&#xff09; import { useDynamicList } from ahooks;// 从 ant-design/icons 引入两个图标组件&#xff1a;减号圆圈图标和加号圆圈图标 import { MinusCircleOutlined, PlusCi…

蓝桥杯2114 李白打酒加强版

问题描述 话说大诗人李白, 一生好饮。幸好他从不开车。 一天, 他提着酒显, 从家里出来, 酒显中有酒 2 斗。他边走边唱: 无事街上走&#xff0c;提显去打酒。 逢店加一倍, 遇花喝一斗。 这一路上, 他一共遇到店 N 次, 遇到花 M 次。已知最后一次遇到的是花, 他正好把酒喝光了。…

小土堆pytorch--神经网路-卷积层池化层

神经网路-卷积层&池化层 一级目录二级目录三级目录 1. 神经网路-卷积层2. 神经网路最大池化的应用 一级目录 二级目录 三级目录 1. 神经网路-卷积层 在PyTorch中&#xff0c;torch.nn.Conv2d函数定义了一个二维卷积层&#xff0c;其常用参数包括&#xff1a; in_channel…