Kubernetes中ingress,egress,slb等概念的含义
在 Kubernetes 中,ingress、egress、SLB 是与网络流量管理相关的重要概念,分别对应不同的流量方向和负载均衡场景,具体含义如下:
- Ingress(入站流量)
• 定义:Ingress 是 Kubernetes 中用于管理从集群外部到集群内部服务(Pod)的 HTTP/HTTPS 流量的规则集合。
• 作用:解决集群外部如何访问集群内服务的问题,相当于“集群的入口网关”。它可以统一管理域名、路径路由、SSL 终止(HTTPS 证书配置)、负载均衡等。
• 举例:外部用户通过 https://api.example.com 访问集群内的 api-service,Ingress 规则会将该域名的流量转发到对应的服务。
• 注意:Ingress 本身不提供流量转发能力,需要依赖 Ingress Controller(如 Nginx Ingress Controller)来实现。
- Egress(出站流量)
• 定义:Egress 指从 Kubernetes 集群内部(Pod)流向集群外部的流量(如访问外部 API、数据库、互联网等)。
• 作用:主要用于管控集群内 Pod 对外的网络访问,例如限制某个 Pod 只能访问特定的外部地址,或记录出站流量日志。
• 实现方式:通常通过网络策略(NetworkPolicy)、Service Mesh(如 Istio)或 CNI 插件(如 Calico)配置 Egress 规则,实现访问控制。
• 举例:限制 web-pod 只能访问外部的 mysql.example.com,禁止访问其他地址。
- SLB(Server Load Balancer,服务器负载均衡器)
• 定义:SLB 是一种网络设备或服务,用于将来自客户端的流量分发到多个后端服务器(或 Kubernetes 中的 Service/Pod),以实现负载均衡、高可用和流量控制。
• 在 Kubernetes 中的作用:
◦ 对于 NodePort 或 LoadBalancer 类型的 Service,Kubernetes 可结合云厂商的 SLB 服务(如 AWS ELB、阿里云 SLB),将外部流量通过 SLB 分发到集群内的多个节点,再转发到对应的 Pod。
◦ SLB 通常工作在传输层(TCP/UDP,四层负载均衡)或应用层(HTTP/HTTPS,七层负载均衡),Ingress Controller 本质上是七层 SLB 的 Kubernetes 实现。
• 举例:云厂商的 SLB 接收外部流量,按权重分发到集群的 node1 和 node2,再由节点转发到 nginx-service 关联的 Pod。
总结
• Ingress:管理外部到集群内的 HTTP/HTTPS 流量(七层路由)。
• Egress:管理集群内到外部的流量(访问控制)。
• SLB:负责流量分发(四层或七层),是Ingress和LoadBalancer Service实现高可用的底层依赖之一。