当前位置: 首页 > news >正文

Ingrees 控制器与 Ingress 资源的区别

在 Kubernetes 中,单纯的 Ingress 资源定义文件(YAML)本身不会直接创建 Pod。Ingress 的作用是定义路由规则(如将外部流量路由到集群内的服务),而实际处理流量的 Pod 是由 Ingress 控制器(如 Nginx Ingress Controller、Traefik 等) 创建的。以下是详细解释:

1. Ingress 资源与 Ingress 控制器的区别

组件作用是否创建 Pod
Ingress 资源定义路由规则(例如将 example.com 的流量转发到 my-service:80)。❌ 否
Ingress 控制器监听 Ingress 资源,根据规则配置负载均衡器(如 Nginx),并运行对应的 Pod。✅ 是

2. Ingress 的工作流程

  1. 部署 Ingress 控制器

    • 需要手动部署一个 Ingress 控制器(如 Nginx Ingress Controller)的 Deployment/DaemonSet。
    • 此步骤会创建控制器 Pod(例如 ingress-nginx-controller-xxxxx)。
    # 示例:Nginx Ingress Controller 的 Deployment(简化版)
    apiVersion: apps/v1
    kind: Deployment
    metadata:name: ingress-nginx-controllernamespace: ingress-nginx
    spec:replicas: 1selector:matchLabels:app: ingress-nginxtemplate:metadata:labels:app: ingress-nginxspec:containers:- name: ingress-nginximage: registry.k8s.io/ingress-nginx/controller:v1.8.1
    
  2. 创建 Ingress 资源

    • 定义路由规则(不创建 Pod)。
    # 示例:Ingress 资源(定义路由规则)
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:name: my-ingress
    spec:ingressClassName: nginx  # 指定使用 Nginx 控制器rules:- host: example.comhttp:paths:- path: /pathType: Prefixbackend:service:name: my-serviceport:number: 80
    
  3. Ingress 控制器监听并生效

    • Ingress 控制器 Pod 会监听集群中的 Ingress 资源,动态更新负载均衡器配置(如 Nginx 的 nginx.conf),但不会创建新 Pod。

3. 常见误解与验证

误解:应用 Ingress 资源会自动创建 Pod
  • 纠正
    Ingress 资源仅定义规则,必须提前部署 Ingress 控制器,否则规则不会生效,且不会创建任何 Pod。
验证步骤
  1. 查看 Ingress 控制器的 Pod:

    kubectl get pods -n ingress-nginx  # 假设控制器部署在 ingress-nginx 命名空间
    

    输出示例:

    NAME                                        READY   STATUS
    ingress-nginx-controller-7c489dc6b5-vwj4s   1/1     Running
    
  2. 查看 Ingress 资源是否生效:

    kubectl get ingress
    

    输出示例(需确保 ADDRESS 已分配):

    NAME         CLASS   HOSTS         ADDRESS          PORTS
    my-ingress   nginx   example.com   192.168.1.100    80
    

4. 总结

行为是否创建 Pod说明
应用 Ingress 资源❌ 否仅添加路由规则,需配合 Ingress 控制器生效。
部署 Ingress 控制器✅ 是创建控制器 Pod,负责实际流量处理(如 Nginx、Traefik)。
更新 Ingress 资源❌ 否控制器 Pod 会动态加载新配置,但不会新建 Pod。

可以将 Ingress Controller 理解为 nginx,将 Ingress 资源理解为对 nginx.conf 的定义。

相关文章:

  • 移动应用开发的六大设计原则
  • Pygame游戏之躲避游戏
  • Vivado中可新建的工程类型解析
  • Linux基础(查找/打包/压缩文件)
  • 显存优化:梯度检查点Gradient Checkpoint和梯度累积Gradient Accumulation
  • 【嵌入式DIY实例-Arduino篇】-DIY遥控手柄
  • Java SpringMVC与MyBatis整合
  • Grafana v12.0 引入了多项新功能和改进
  • Docker 部署Nexus仓库 搭建Maven私服仓库 公司内部仓库
  • 软考第五章知识点总结
  • [Java实战]Spring Boot 整合 Freemarker (十一)
  • RAGMCP基本原理说明和相关问题解惑
  • 1.5 提示词工程(一)
  • USB学习【6】USB传输错误的处理
  • 基于去中心化与AI智能服务的web3钱包的应用开发的背景描述
  • 湖北理元理律师事务所债务优化体系拆解:科学规划如何实现“还款不降质”
  • [ERTS2012] 航天器星载软件形式化模型驱动研发 —— 对 Scade 语言本身的影响
  • 使用 Java 反射动态加载和操作类
  • 【前端】【HTML】【总复习】一万六千字详解HTML 知识体系
  • 事务(理解)与数据库连接池
  • 落实中美经贸高层会谈重要共识,中方调整对美加征关税措施
  • 美国“贸易战”前线的本土受害者:安静的洛杉矶港和准备关门的小公司
  • 当创业热土遇上年轻气息,上海南汇新城发展如何再发力?
  • 临港新片区:发布再保险、国际航运、生物医药3个领域数据出境操作指引
  • 心相印回应官方旗舰店客服辱骂消费者:正排查
  • 小米回应SU7Ultra排位模式限制车辆动力:暂停推送更新