提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

`
1 ingress 是什么
2、ingress 组成
3、 ingress工作原理
4、ingress暴露方式 三种


一、Kubernetes Ingress基础认知

1.1Service简介:

在Kubernetes生态中,Service的核心作用体现在两方面:对内,通过跟踪Pod变化动态更新Endpoint,实现Pod的服务发现;对外,扮演负载均衡器角色,支持集群内外对Pod的访问。但在外部访问场景中,Pod IP和Service的ClusterIP仅能在集群内部可见,为满足外部应用访问需求,Kubernetes提供了多种方案:

  • NodePort:通过kube-proxy将Service暴露在节点网络,端口范围固定为30000-32767。适合测试场景,但服务数量增多时会面临端口管理困难问题。
  • LoadBalancer:依赖云厂商支持,Kubernetes通过CloudProvider在公有云创建负载均衡器,后端指向Pod IP。通常需额外费用,更适合公有云环境。
  • externalIPs:为Service分配外部IP,当该IP路由到集群节点时,流量会被转发至Service的Endpoints。
  • Ingress(七层反向代理):通过少量公网IP或负载均衡器,即可暴露多个HTTP/HTTPS服务,基于域名或URL路径将请求转发至对应Service,可理解为“Service的Service”。

关键小结:Ingress负责规则定义,而Ingress Controller负责按规则转发,并提供负载均衡、SSL/TLS等增强能力。

1.2 Ingress的组成

两个核心组件:Ingress 和 Ingress Controller,二者协同工作完成外部流量的路由与管理:

1.2.1 Ingress(规则定义)

Ingress是一个通过YAML配置的API对象,用于定义请求转发到Service的规则。其核心能力包括:

ingress Controller持续与APIServer交互,实时感知Ingress规则的变化;
当规则更新时,Controller根据自定义模板生成对应的Nginx配置;
将生成的配置写入ingress-nginx-controller Pod内Nginx服务的/etc/nginx.conf文件;
执行配置重载(reload)使新配置生效,从而实现基于域名的流量分流与动态更新。

1.外部请求进入集群
外部客户端(浏览器 / 客户端程序)通过 域名(如 www.example.com)发起请求,请求首先会被 DNS 解析到 Ingress Controller 的暴露地址:

2.Ingress Controller 接收请求
Ingress Controller 会持续监听 Kubernetes API Server,实时同步集群内的 Ingress、Service、Pod 资源变化

3.匹配 Ingress 路由规则
Ingress Controller 会根据本地生成的反向代理配置(如 Nginx 的 nginx.conf),对请求进行两层匹配:

4.转发请求到后端 Service

5.Service 负载均衡到 Pod
在这里插入图片描述

二、使用步骤

三、Ingress暴露服务的三种方式

3.1 方式一:Deployment + Service(type=LoadBalancer)

3.2 方式二:DaemonSet + HostNetwork + nodeSelector(生产推荐)

3.3 方式三:Deployment + Service(type=NodePort)

在这里插入图片描述


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐