叶工好容7-Ingress的由来

server/2024/9/24 16:17:11/

目录

前言

第一章:Service

第二章:Service+LB

第三章:Service+LB+Nginx

Ingress-toc" style="margin-left:0px;">第四章:Service+Ingress

总结


前言

吃透一个技术,不仅要掌握详细的用法能够熟练的操作,更需要掌握技术出现的前因后果。不会平白无故创造一种技术,技术的产生是为了解决现有痛点的。本篇就一起来看下ingress出现的前因后果。

第一章:Service

service这个逻辑概念的出现是为了解决pod漂移和容器云服务内部调用的问题。其实容器云很多概念跟公有云相似,因为它就是从公有云实例管理的理念演化过来的。service是个逻辑概念,是不占用真实资源的,跟弹性伸缩组的概念类似;pod与云实例概念类似,代表一个最小的管理资源;pod中的container与实例中进程概念类似;init-container干的事一般是cloud-init或者开机启动项里干的事。

k8s内部通过service互相寻址,但service解决不了k8s外部访问服务的问题。

第二章:Service+LB

为了让k8s外部有一个固定的入口访问k8s内的服务,常规的做法是通过负载均衡器,这样就有了固定的IP+端口,LB负责将流量转发到对应的service上。

这套解法虽然解决service外部访问的问题,但又会带来另一个致命的弊端:成本太高了。按照这种设计,每一个service都要配置一个LB,那就相当不划算了,特别是微服务场景。而关于LB的维护又不属于k8s体系,需要在云平台中去进行操作,为了完成一件事情还得跨越两个基础底座去完成。

第三章:Service+LB+Nginx

为了降低成本,可以只使用一个公共的规格足够强劲的LB,这个LB先把流量转发到Nginx上然后让Nginx转发到service上,不就解决了资源成本的问题么?

思路完全对头,也确实能达到省钱的目的,但这看似完美的设计存在一个致命的缺陷:Nginx的配置维护。每次service发生变化,Nginx就得相应的去改配置,面对一整个集群service的维护,配错了服务流向出现问题就会造成故障。要是能有个东西帮我们把这陀脏活累活干掉那该多好啊。

Ingress">第四章:Service+Ingress

service的变动与Nginx配置的变动是存在绑定关系的,我们为啥不让k8s自己来管理nginx的配置,使用manifest这种声明式的方式,织入到自动化流水线中呢?这样只要把Nginx运行在k8s里,既能解决Nginx的配置维护问题,又能解决Nginx的部署和算力问题,一箭双雕。这就是Ingress

只不过这种设计会让Nginx变成性能瓶颈,因为它承载着整个k8s的流量,可以通过pod的横向扩展能力解决算力问题,但一定要注意做好反亲和防止nginx的pod落到同一台node上,避免因竞争宿主机的网络资源带来性能瓶颈。

总结

为了解决外部访问需要引入LB,为了解决LB太多的问题引入了Nginx,为了解决Nginx配置和部署问题引入了IngressIngress的使用需要注意反亲和。

新技术的产生是为了解决现有的痛点,一定要分析前因后果;新技术往往会带来新的问题,不是技术越新潮越好,而是越合适越好。


http://www.ppmy.cn/server/26854.html

相关文章

如何找到台式电脑的ip地址

在数字时代,每台接入网络的设备都拥有一个独特的标识,这就是IP地址。无论是手机、笔记本电脑还是台式电脑,IP地址都扮演着至关重要的角色,它帮助设备在网络世界中定位并与其他设备进行通信。对于许多电脑用户来说,了解…

Django后台项目开发实战四

用户可以浏览工作列表以及工作详情 第四阶段 在 jobs 文件夹下创建 templates 文件夹&#xff0c;在里面创建 base.html 网页&#xff0c;内容如下 <!-- base.html --> <div style"text-align:center;"><h1 style "margin:auto; width:50%;&…

【MySQL精炼宝库】数据库的约束 | 表的设计 | 聚合查询 | 联合查询

目录 一、数据库约束 1.1 约束类型&#xff1a; 1.2 案例演示&#xff1a; 二、表的设计 2.1 一对一: 2.2 一对多: 2.3 多对多: 2.4 内容小结&#xff1a; 三、新增 四、查询 4.1 聚合查询&#xff1a; 4.1.1 聚合函数&#xff1a; 4.1.2 GROUP BY子句&#xff1a…

Java 写一个死锁的例子

public class DeadLock {public static void main(String[] args) {Object lock1 new Object();Object lock2 new Object();new Thread(new A(lock1,lock2),"线程A").start();new Thread(new B(lock1,lock2),"线程B").start();} }class A implements Run…

[华为OD]C卷 机场航班调度 ,XX市机场停放了多架飞机,每架飞机都有自己的航班号100

题目&#xff1a; XX市机场停放了多架飞机&#xff0c;每架飞机都有自己的航班号CA3385, CZ6678, SC6508 等&#xff0c;航班号的前2个大写字母&#xff08;或数字&#xff09;代表航空公司的缩写&#xff0c;后面4个数字代表航班信息。 但是XX市机场只有一条起飞用跑道&am…

pycharm中文件误删或者误操作,怎么恢复

恢复pycharm中文件误删或者误操作 恢复方法&#xff1a;1.xxxx.py文件误删2.xxxx.py文件内操作 在日常学习或练手时总会有一些迷之操作&#xff0c;一些文件被误删或者一些文件越改越糟&#xff0c;想要恢复操作之前的文件。 恢复方法&#xff1a; 1.选则误删文件的上级目录&…

debian下使用的常用软件

debian下使用的软件与windows下有所不同&#xff0c;刚使用debian系统&#xff0c;需要对不同的软件进行试用&#xff0c;以期找到更符合自己要求的软件&#xff0c;现在试用情况记录在此&#xff0c;以便后期回顾。 文件管理器&#xff08;Thunar&#xff09; 网络浏览器&am…

【个人博客搭建】(16)速率限制

速率限制是一种防止操作频率超过既定限制的技术手段&#xff0c;它的主要作用是保护系统资源和服务的稳定性。具体如下&#xff1a; 保护系统资源&#xff1a;通过限制客户端在特定时间内可以发起的请求数量&#xff0c;速率限制确保了系统资源不会被过度消耗。这对于维护系统的…