k8s nginx ingress原理解读

K8S-INGRESS原理,部署及应用 Ingress解决的是新的服务加入后,域名和服务的对应问题,基本上是一个ingress的对象,通过yaml进行创建和更新进行加载。来保护 Ingress。的服务)配置成外网能够访问的URL,流量负载均衡,及SSL,并提供域名访问的虚拟主机等,客户通过访问URL(API资源服务的形式,例如:caas.one/kibana)进入和请求Service,一个Ingress控制器负责处理所有Ingress的请求流量,它通常是一个负载均衡器,它也可以设置在边界路由器上,或者由额外的前端来帮助处理HA方式的流量。 阅读详情

阅读本文需要以下知识为前提

  1. 了解k8s基本架构,k8s基本资源清单
  2. 用自己的k8s实验环境

首先了解ingress解决了什么问题

  1. k8s内部项目暴露外部访问,只用一个固定端口,暴露多个服务。相对于:LoadBlancer Service、NodePort Service更灵活更方便。
  2. pod漂移后的ip变化,自动识别pod ip
  3. 修改nginx配置不用reload加载
  4. 实现灰度发布(根据流量或者http请求头进行灰度)

架构介绍在这里插入图片描述

  1. ingress controller
    入口流量控制器。Kubernetes 作为一个项目,目前支持和维护 AWS, GCE 和 nginx Ingress 控制器。还有其他开源控制器例如:istio Ingress等。作用都是做负载均衡和代理。
    底层就是一个运行在k8s平台上的nginx。
    官方部署文档:k8s环境部署nginx-ingress-controller

  2. ingress
    配置反向代理规则,针对不同服务配置不同的规则,相当于nginx.conf的location配置。
    例子:

在这里插入图片描述

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-wildcard-host
spec:
  rules:
  # 这个规则就是 监听来自foo.bar.com的请求,已/bar开头的请求,转到service1
  - host: "foo.bar.com"
    http:
      paths:
      - pathType: Prefix
        path: "/bar"
        backend:
          service:
            name: service1
            port:
              number: 80
  # 这个规则就是 监听来自*.bar.com的请求,已/foo开头的请求,转到service2
  - host: "*.foo.com"
    http:
      paths:
      - pathType: Prefix
        path: "/foo"
        backend:
          service:
            name: service2
            port:
              number: 80

作用原理

nginx-ingress-controller做了两件事。

  1. ingress会检测到当前有效的nginx-ingress-controller,将
    上面ingress配置中的rules,会被自动配置到nginx-ingress-controller容器中的nginx.config。相当于k8s做了一个自动配置加载
  2. nginx-ingress-controller 会通过k8s的api server读取ingress指定服务的实时状态,将请求代理到当前存活的服务上。

灰度发布案例

灰度发布网上案例非常多,这里就不做详细介绍。主要是需要理解原理,为什么ingress支持这些功能。
nginx ingress 灰度发布案例

k8s中ingress-nginx介绍 Ingress是一种Kubernetes资源,用于将外部流量路由到Kubernetes集群内的服务。与NodePort相比,它提供了更高级别的路由功能和负载平衡,可以根据HTTP请求的路径、主机名、HTTP方法等来路由流量。可以说Ingress是为了弥补NodePort在流量路由方面的不足而生的。使用NodePort,只能将流量路由到一个具体的Service,并且必须使用Service的端口号来访问该服务。 阅读详情

相关推荐

Kubernetes Nginx Ingress Controller源码分析

本博文对Nginx Ingress Controller源码分析。

WaltonWang's Blog 1万+

Kubernetes(十一)Kubernetes ingress的实现原理

一、Ingress概念 Kubernetes关于服务的暴露主要是通过NodePort方式,通过绑定宿主机的某个端口,然后进行pod的请求转发和负载均衡,但这种方式下缺陷是: Service可能有很多个,如果每个都绑定一个node主机端口的话,主机需要开放外围一堆的端口进行服务调用,管理混乱无法应用很多公司要求的防火墙规则。 理想的方式是通过一个外部的负载均衡器,绑定固定的端口,比如80,然后根据域名或者服务名向后面的Service ip转发,Nginx很好的解决了这个需求,但问题是如果有新的服务加入,

liu_weiliang10405的博客 4164

云原生领域的Nginx Ingress配置

在云原生环境中,Kubernetes已经成为容器编排的事实标准。随着应用的不断增多和复杂度的提升,如何高效地管理外部流量进入集群内部的各个服务成为了一个关键问题。Nginx Ingress作为一种强大的流量管理解决方案,能够根据不同的规则将外部请求路由到Kubernetes集群内的不同服务。本文的目的就是详细介绍Nginx Ingress的配置方法和相关原理,范围涵盖从基础概念到实际项目应用的各个方面,帮助读者全面掌握云原生领域中Nginx Ingress的配置技巧。

AI云原生与云计算技术学院 1137

ingress-nginx源码解读:Controller核心逻辑分析

在Kubernetes生态中,Ingress作为集群入口流量的统一管理组件,承担着至关重要的角色。而ingress-nginx作为最流行的Ingress控制器之一,其Controller核心逻辑的设计与实现值得我们深入探究。本文将带你深入源码层面,解析ingress-nginx Controller的工作机制、核心组件及其实现原理。 ## 整体架构概览 ingress-nginx Contro...

gitblog_01077的博客 501

Kubernetes DNS服务原理与CoreDNS实战指南

Kubernetes DNS是集群服务发现的核心基础设施,其本质是为Service提供基于域名的自动解析能力。它依托CoreDNS这一模块化、可插拔的权威DNS服务器,通过监听API Server中的Service和Endpoints变更,动态生成并维护`<service>.<namespace>.svc.cluster.local`等内部域名记录。技术价值在于解耦服务调用与IP地址,支撑Service Mesh、Ingress、Metrics等上层组件稳定运行;典型应用场景包括跨Pod服务调用、微服务间通

leonard61306500的专栏 393

运维视角下的CORS跨域配置实战:从原理到Nginx/Apache/云服务最佳实践

跨域资源共享(CORS)是Web开发中处理不同源间资源访问的核心安全机制,其本质是浏览器基于同源策略实施的一套访问控制标准。理解其工作原理,关键在于区分简单请求与预检请求,并掌握服务器通过特定HTTP响应头(如Access-Control-Allow-Origin)来声明访问规则的方式。这项技术的工程价值在于,它使得现代分布式、前后端分离的Web应用架构得以安全、高效地运行。在实际的运维与部署场景中,无论是配置Nginx、Apache等传统Web服务器,还是在云原生环境下的API网关、Kubernetes

weixin_30751947的博客 424

讲解 Ingress-NGINX 的源码

讲解 Ingress-NGINX 的源码也非常有意义。它是在我们刚才讨论的 NGINX 源码之上的一个更高层次的封装,完美地展示了如何将一个强大的数据平面(NGINX)与一个现代的控制平面(Kubernetes API)相结合。如果你已经理解了 NGINX 的基本原理,那么理解 Ingress-NGINX 会容易很多。首先,要明确 Ingress-NGINX 不是 NGINX 的一个分支或重写。它是一个独立的程序,其核心使命是:充当 Kubernetes 的 Ingress 控制器(Controller)。

u011091936的博客 1249

【K8S系列】第十三讲:Ingress详解

NotePortIngressNodePort方式:最大的缺点是会占用很多集群机器的端口,而且需要在外部搭建额外的负载均衡;LB方式:最大的缺点则是每个service一个LB,有点浪费,并且需要k8s之外的支持,【eg:cloud provider】;ingress: Ingress就是为了解决1,2两种方式的限制,只需要一个NodePort或者一个LB就可以满足所有service对外服务的需求。

颜淡慕潇 2万+

基于阿里云的 ingress-nginx 外部认证实战【部分未完成】

基于阿里云平台,实现了 ingress 网络流量入口相关基础知识和部署说明

wangbeilin123的专栏 1614

SystemRDL:从寄存器描述到自动化生成的完整指南

本文详细介绍了SystemRDL如何通过“一份描述,多处生成”的理念,彻底解决芯片与FPGA设计中手动维护寄存器带来的不一致与低效问题。文章提供了从语言快速上手、核心组件讲解到使用PeakRDL工具链实现自动化代码与文档生成的完整实战指南,帮助硬件工程师构建高效、可靠的寄存器开发流程。

weixin_29243279的博客 659

企业数字化转型的 4A 架构指南:从概念解读到 TOGAF 阶段对应

4A企业架构是中国数字化转型实践中总结的简化框架,包含业务、应用、数据和技术四个架构层。它自上而下形成业务驱动应用的指导关系,自下而上构建技术支撑数据的实现路径,与国际标准TOGAF核心内容高度对应。该模型通过统一语言、战略对齐和系统梳理,有效连接业务需求与IT实施,已成为企业架构规划的实用工具。其分层结构清晰展示了从业务目标到技术落地的完整推导链,特别适合中国企业的数字化转型场景。

友莘居士的博客 2175

8.基于 Ingress-nginx-controller 实现 k8s 七层代理

【代码】8.基于 Ingress-nginx-controller 实现 k8s 七层代理。

2201_76119904的博客 350

本届挑战赛亚军方案:基于大模型和多AGENT协同的运维

我们分别构建了异常检测基础模型,一旦系统接受到异常即会通知LLM主管Agent,主管Agent对异常问题进行决策与子领域Agent进行桥接,多个子领域Agent协同工作,实现运维故障自动诊断和多个任务模型的编排,提升运维效率。

weixin_52705010的博客 2294

课程实录 | Ingress Controller 的工作原理(下)

本文为系列课程《 K8S Ingress Controller 技术细节探讨》的第一节《 Ingress Controller 的工作原理》的课程实录。由于文章较长,将分为上下两篇发布,点击这里观看课程回放。

NGINX开源社区的博客 406

光伏发电预测(LSTM、CNN_LSTM和XGBoost回归模型,Python代码)

一旦结果与预测差距较大,可能存在光伏系统的问题,需要找出原因,然后采取适当措施来修复光伏系统并做出更好的决策。例如,根据准确的预测,光伏系统运营商可以平衡电力消耗,并将多余的电力储备用于紧急情况。然而,光伏系统的发电量估算是一个挑战,因为光伏系统的发电量受到天气条件的极大影响。整个项目文件夹(第一个文件夹为xgboost模型相关的包文件,xg.py是xgboost模型英文注释版本,xg_chinese.py是xgboost模型中文注释版本)表示空气的温度,通常以摄氏度(°C)或华氏度(°F)为单位。

2301_79699110的博客 3032

【操作系统】 Operation System 第二章:操作系统基础操作

2.1 操作系统的启动 (1)CPU, I/O, 内存通过总线连接。 (2)DISK:存放OS; BIOS:基本I/O处理系统( basic I/O system); Bootloader: 加载OS到内存中。 (3)当电脑通电时,段寄存器CS和指令寄存器IP能够确定一个内存地址,例如CS:IP = 0xf000:fff0. (4)POST(加电自检),寻找显卡和执行BIOS。(显示器,键盘…是否...

iwanderu的博客 1万+

告别黑盒!ingress-nginx可观测性全攻略:从Metrics到分布式追踪

你是否还在为Kubernetes集群中请求异常却无从排查而烦恼?当用户抱怨服务响应慢时,你是否只能猜测问题出在哪个环节?本文将带你从零构建ingress-nginx的可观测性体系,通过Metrics监控和分布式追踪(Tracing)两大核心能力,让流量路径透明化,问题定位效率提升10倍! 读完本文你将掌握: - 3分钟快速部署Prometheus+Grafana监控栈 - 关键指标解读与告警配置...

gitblog_00545的博客 541

Qt Android MySql 数据库驱动编译(详细图解步骤)

第一步.先介绍下环境搭建: Qt 版本 5.12.11 下载链接 https://download.qt.io/archive/qt/5.12/5.12.11/qt-opensource-linux-x64-5.12.11.run Ubuntu 18.04.6 LTS 下载链接 JDK版本 1.8.0_191 下载链接https://www.oracle.com/java/technologies/downloads/ Android Studio版本 ...

h a 6 6 6 c k 为 你解决复杂难题! 3381

Kubernetes网络与服务发现核心原理与面试要点

容器网络与服务发现是现代云原生架构的基础组件,Kubernetes通过IP-per-Pod模型和CNI插件体系实现高效的容器通信。理解Pod网络、Service代理(包括ClusterIP/NodePort/LoadBalancer)和DNS解析机制,是掌握Kubernetes网络的核心。在生产环境中,网络策略(NetworkPolicy)和Ingress控制器的高阶配置直接影响应用安全性和可用性。随着eBPF等新技术的引入,Cilium等CNI插件能显著提升网络性能。本文基于大规模集群运维经验,详解Kub

weixin_30781433的博客 488

Java中使用工厂模式和策略模式优雅消除if-else语句(UML类图+案例分析)

在最近的后端开发中,多多少少会发现有很多if-else语句,如果条件过多则会造成整体代码看起来非常臃肿。本篇博客汇总了我对工厂模式和策略模式的理解,以及我是如何把它们巧妙运用在实际项目当中的一些技巧进行了分享,如有问题,欢迎评论区讨论!

黄团团的个人博客 2612

常用元器件使用方法13:物理层接口芯片DP83848的使用方法

介绍: DP83848是以太网物理层接口芯片,具有多种型号,从便于焊接角度考虑LQFP-48封装较为合适,采用LQFP-48封装的芯片,有2种型号,分别为DP83848I和DP83848C,如下图所示。 其主要区别是使用温度不同,如下图所示。 这2种芯片芯片网上均有销售,按理说DP83848C价格应该更加便宜,实际不然,DP83848I的价格低于DP83848C,考虑或与芯片的出货量...

snmplink的博客 1万+
上一篇: 阿里巴巴P3C java编程规范(最新版github下载)
下一篇: java突发内存和CPU同时100%排查解决
鲫鱼哥
博客等级 码龄10年 18粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值