学习笔记三十四:Ingress和 Ingress Controller概述

Ingress和 Ingress Controller概述

  • 回顾service四层负载
    • 在k8s中为什么要做负载均衡
    • Service不足之处
    • 四层负载和七层负载的区别
      • OSI七层模型:
  • Ingress介绍
  • Ingress Controller介绍
    • Ingress-controller 作用
    • Ingress和Ingress Controller总结
    • 使用Ingress Controller代理k8s内部pod的流程
    • 客户端通过七层调度器访问后端pod的方式

回顾service四层负载

在这里插入图片描述

在k8s中为什么要做负载均衡

  • Pod 漂移问题,可以理解成Pod IP是变化的
  • Kubernetes具有强大的副本控制能力,能保证在任意副本(Pod)挂掉时自动从其他机器启动一个新的,还可以动态扩容等。通俗地说,这个Pod可能在任何时刻出现在任何节点上,也可能在任何时刻死在任何节点上;那么自然随着Pod的创建和销毁,Pod IP 肯定会动态变化;
  • 这里借助于Kubernetes的 Service 机制,Service可以以标签的形式选定一组带有指定标签的Pod,并监控和自动负载他们的Pod IP,那么我们向外暴露只暴露Service IP就行了;这就是NodePort模式:即在每个节点上开起一个端口,然后转发到内部Pod IP 上。
  • Service可以通过标签选择器找到它所关联的Pod。但是属于四层代理,只能基于IP和端口代理。

Service不足之处

Service的type类型有很多,如NodePort、clusterIp、loadbalancer、externalname,如果Service想要被k8s集群外部访问,需要用NodePort类型,但是NodePort类型的svc有如下几个问题:

  • nodeport会在物理机映射一个端口,绑定到物理机上,这样就导致,每个服务都要映射一个端口,端口过多,维护困难
  • Service底层使用的是iptables或者ipvs,仅支持四层代理,无法基于https协议做代理

四层负载和七层负载的区别

  • 四层负载:四层的负载均衡就是基于IP+端口的负载均衡:在三层负载均衡的基础上,通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。
  • 七层的负载均衡就是基于虚拟的URL或主机IP的负载均衡:在四层负载均衡的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征,比如同一个Web服务器的负载均衡,除了根据VIP加80端口辨别是否需要处理的流量,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。举个例子,如果你的Web服务器分成两组,一组是中文语言的,一组是英文语言的,那么七层负载均衡就可以当用户来访问你的域名时,自动辨别用户语言,然后选择对应的语言服务器组进行负载均衡处理。
  • 四层负载均衡工作在传输层,七层负载均衡工作在应用层

OSI七层模型:

在这里插入图片描述

Ingress介绍

  • Ingress官网定义:Ingress可以把进入到集群内部的请求转发到集群中的一些服务上,从而可以把服务映射到集群外部。Ingress 能把集群内Service 配置成外网能够访问的 URL,流量负载均衡,提供基于域名访问的虚拟主机等。
  • Ingress简单的理解就是你原来需要改Nginx配置,然后配置各种域名对应哪个 Service,现在把这个动作抽象出来,变成一个 Ingress 对象,你可以用 yaml 创建,每次不要去改Nginx 了,直接改yaml然后创建/更新就行了;那么问题来了:”Nginx 该怎么处理?”
  • Ingress总结:ingress是k8s中的资源,主要是管理ingress-controller这个代理的配置文件
  • Ingress Controller 这东西就是解决 “Nginx 的处理方式” 的;Ingress Controller 通过与 Kubernetes API 交互,动态的去感知集群中Ingress规则变化,然后读取他,按照他自己模板生成一段 Nginx 配置,再写到 Nginx Pod 里,最后 reload 一下

Ingress Controller介绍

Ingress Controller是一个七层负载均衡调度器,客户端的请求先到达这个七层负载均衡调度器,由七层负载均衡器在反向代理到后端pod,常见的七层负载均衡器有nginx、traefik,以我们熟悉的nginx为例,假如请求到达nginx,会通过upstream反向代理到后端pod应用,但是后端pod的ip地址是一直在变化的,因此在后端pod前需要加一个service,这个service只是起到分组的作用,那么我们upstream只需要填写service地址即可。

Ingress-controller 作用

Ingress-controller里面封装就是nginx
我直接在物理机上装个nginx就行了啊,为啥还弄个Ingress-controller?

  • Nginx:nginx配置文件一改动,你还需要手动reload一下才可以生效
  • 用ingress-controller封装的nginx,你ingress维护配置,ingress创建好之后,会自动的把配置文件传到ingress-controller这个pod里,会自动进行reload,然后配置就生效了

Ingress和Ingress Controller总结

  • Ingress 则是定义规则,通过它定义某个域名的请求过来之后转发到集群中指定的 Service。它可以通过 Yaml 文件定义,可以给一个或多个 Service 定义一个或多个 Ingress 规则。
  • Ingress Controller结合Ingress 定义的规则生成配置,然后动态更新ingress-controller里的Nginx 或者trafik负载均衡器,并刷新使配置生效,来达到服务自动发现的作用。

使用Ingress Controller代理k8s内部pod的流程

  • 部署Ingress controller,我们ingress controller使用的是nginx
  • 创建Pod应用,可以通过控制器创建pod
  • 创建Service,用来分组pod
  • 创建Ingress http,测试通过http访问应用
  • 创建Ingress https,测试通过https访问应用

客户端通过七层调度器访问后端pod的方式

在这里插入图片描述

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

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

相关文章

设备接入服务组件->微服务and容器化改造说明文档

SVN路径 https://192.0.0.241/USTA-dac/branches/dev/V1.10.500/dac 目录结构 das为设备接入服务,负责驱动管理,资源同步,订阅下发。下面有两个文件夹分别对应了openssl1.0的版本和后面更换接口后openssl1.1的版本。das_proxy为设备信令下发…

家用NAS上的Linux虚拟机上安装Domino

大家好,才是真的好。 此篇不是广告,毕竟没有任何人给广告费。 就是我个人入手了一台NAS设备,一开始用途比较淳朴,仅仅存储和家庭有关的各种照片和视频,但用着用着,就发现了NAS设备的拓展性之强&#xff0…

kubernetes集群编排——k8s存储

configmap 字面值创建 kubectl create configmap my-config --from-literalkey1config1 --from-literalkey2config2kubectl get cmkubectl describe cm my-config 通过文件创建 kubectl create configmap my-config-2 --from-file/etc/resolv.confkubectl describe cm my-confi…

路由器ip地址怎么设置才能上网

在互联网时代,路由器已经成为了我们生活中不可或缺的一部分。而路由器的IP地址则是路由器配置的关键。那么,如何设置路由器的IP地址才能上网呢?虎观代理小二二将为您提供详细的步骤和指导。 一、确认路由器IP地址 在开始设置路由器的IP地址…

提示3D标题编辑器仍在运行怎么解决,以及3D标题编辑器怎么使用

在进行视频剪辑时,尤其是剪辑一些带有文字的开场视频,一般都会使用具有立体效果的3D标题,这样制作出来的视频效果不仅好看,还非常的炫酷,但是对于一些刚刚开始接触视频剪辑的小伙伴来说,可能对3D标题还不是…

【TS篇三】类、函数、for-of循环、类型推断

文章目录 一、类1.1 基本示例1.2 继承1.3 实例成员访问修饰符1.3.1 public 开放的1.3.2 private 私有的1.3.3 protected 受保护的1.3.4 readonly 只读的1.3.5 在参数中使用修饰符 1.4 属性的存(get)取(set)器1.5 静态成员 二、函数…

【Qt之动画】详解

概述 QPropertyAnimation类用于动画化Qt属性。 QPropertyAnimation类在Qt属性上进行插值。由于属性值存储在QVariants中,所以该类继承自QVariantAnimation,并支持与其父类相同的元类型的动画。 声明属性的类必须是QObject。为了可以动画化一个属性&am…

【李群李代数】【manif 】基于固定信标的2D机器人定位 (Error State Kalman Filter)...

demo演示 运行结果 我们考虑一个机器人在平面上被少量的准时地标或_信标 包围。 机器人以轴向速度和角速度的形式接收控制动作,并且能够测量信标相对于其自身参考系的位置。 机器人位姿 X 在 SE(2) 中,信标位置 b_k 在 R^2 中, | cos th -si…

AM@二阶常系数非齐次线性微分方程@待定系数法可解决的经典类型1

文章目录 abstract二阶常系数非齐次线性微分方程待定系数法可解类型类型1小结例 abstract 二阶常系数非齐次线性微分方程待定系数法可解决的经典类型1及其解法总结与应用 本文给出类型1为什么可以通过待定求出特解,并且待定函数要设成什么形式推理过程有一定工作量,而在应用中…

Android系统Launcher启动流程学习(二)launcher启动

Zygote(孵化器)进程启动 在init进程中有解析.rc文件,在这个rc文件中配置了一个重要的服务service–zygote,这是app程序的鼻祖 zygote进程主要负责创建Java虚拟机,加载系统资源,启动SystemServer进程&#…

求两个(法)向量之间的rpy夹角

主要使用Eigen库实现: 1. 四元素到欧拉角的转换 #include <array> #include <Eigen/Geometry>template <typename T> inline Eigen::Matrix<typename std::remove_reference<T>::type::Scalar, 3, 1> eulerAnglesZYX(T q_in) {typedef typenam…

Postgresql批量按照顺序更新某一个字段

如批量更新采购订单行sequence字段&#xff0c;按照订单行id的顺序赋值1&#xff0c;2&#xff0c;3&#xff0c;4...&#xff1a; UPDATE purchase_order_line_copy1 SET sequence subquery.new_sequence FROM (SELECT id, ROW_NUMBER() OVER (ORDER BY id) AS new_sequence…

Pytest-Allure及Allure命令使用

一、Allure介绍 Allure是Pytest用于生成测试报告的框架&#xff0c;提供丰富的测试报告功能&#xff1b; 二、Allure安装 Allure安装分为2块&#xff0c;分别是pytest-Allure库安装&#xff0c;本地生成报告并导出的命令行allure安装&#xff1b; 1、pytest-Allure库安装 …

Ubuntu22.04离线安装docker

Ubuntu22.04离线安装docker carrycarryvm:~/deploy/docker_deploy$ tree -L 2 . ├── pkgs │ ├── containerd.io_1.6.8-1_amd64.deb │ ├── docker-ce-cli_24.0.5-1~ubuntu.22.04~jammy_amd64.deb │ ├── docker-ce_24.0.5-1~ubuntu.22.04~jammy_amd64.deb …

时序预测 | Python实现ARIMA-CNN-LSTM差分自回归移动平均模型结合卷积长短期记忆神经网络时间序列预测

时序预测 | Python实现ARIMA-CNN-LSTM差分自回归移动平均模型结合卷积长短期记忆神经网络时间序列预测 目录 时序预测 | Python实现ARIMA-CNN-LSTM差分自回归移动平均模型结合卷积长短期记忆神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 时序预测 …

【vtk学习笔记4】基本数据类型

一、可视化数据的基本特点 可视化数据有以下特点&#xff1a; 离散型 计算机处理的数据是对无限、连续的空间进行采样&#xff0c;生成的有限采样点数据。在某些离散点上有精确的值&#xff0c;但点与点之间值不可知&#xff0c;只有通过插值方式获取数据具有规则或不规则的结…

机器学习 - 加油站数据分析

一、实验数据 数据集&#xff1a;“加油站数据.xls” 数据集介绍&#xff1a;该表记录了用户在11月和12月一天24小时内的加油信息&#xff0c;包括&#xff1a;持卡人标识&#xff08;cardholder&#xff09;、卡号&#xff08;cardno&#xff09;、加油站网点号&#xff08;n…

本人支付人民币100元,求解答。String,intern(),StringBuilder相关

求大佬解答 环境&#xff1a; java8 之前版本不考虑 执行顺序&#xff1a; 第一行 天 第二行 地 第三行 人 三行代码 每次都只执行一句代码 即 天地人 一次只执行一个 观察结果 求解答 为什么结果不同 能把我讲明白 直接发收款码 文章看了几篇 讲的各有各的道理 放在单个可…

LeetCode 面试题 16.13. 平分正方形

文章目录 一、题目二、C# 题解 一、题目 给定两个正方形及一个二维平面。请找出将这两个正方形分割成两半的一条直线。假设正方形顶边和底边与 x 轴平行。 每个正方形的数据 square 包含3个数值&#xff0c;正方形的左下顶点坐标 [X,Y] [square[0],square[1]]&#xff0c;以及…