使用AKS应用网关Ingress Controller时Kubernetes Service的作用
AKS应用网关Ingress Controller中Kubernetes Service的作用
虽然AGIC(Application Gateway Ingress Controller)会直接把应用网关后端池指向Pod私有IP,但Kubernetes Service依然扮演着几个不可替代的角色:
- 健康状态的过滤关卡:Service会关联Pod的就绪探针(Readiness Probe),只有通过探针校验的Pod才会被纳入Service的Endpoint列表,AGIC正是基于这个列表来更新应用网关的后端池。没有Service的话,AGIC无法直接感知Pod的就绪状态,可能会把流量发往还未启动完成的Pod。
- 端口与协议的抽象层:Service定义了Pod对外暴露的端口、协议(HTTP/HTTPS/TCP)等配置,AGIC会读取这些信息同步到应用网关的后端设置里。比如你在Service里指定
targetPort: 8080,AGIC就会自动让应用网关用这个端口访问Pod,不用在Ingress中重复配置。 - 网络策略的控制载体:Kubernetes的NetworkPolicy是基于Service或Pod标签来配置访问规则的。如果没有Service,你得给每个Pod的私有IP单独配置策略,这几乎不可行。通过Service,你可以统一管控哪些流量能访问Pod,AGIC的流量也会受这些策略约束。
- 负载均衡的补充兜底:AGIC同步Pod列表到应用网关存在短暂延迟时,Service自身的负载均衡逻辑(比如会话亲和性、权重分配)可以临时承接流量,避免Pod变动时出现流量中断。
- 兼容生态工具的标准接口:很多Kubernetes监控、日志类工具依赖Service来识别和追踪应用实例。保留Service能让你的集群资源模型符合K8s标准,减少后续迁移或工具集成的成本。
举个实际例子:滚动更新Deployment时,旧Pod终止、新Pod启动,Service会先移除未就绪的旧Pod,再加入通过探针的新Pod,AGIC同步这个变更到应用网关。要是没有Service,AGIC即便能获取Pod列表,也没法精准判断Pod是否能接收流量。
内容的提问来源于stack exchange,提问作者Brijesh Shah
相关产品推荐
相关产品推荐

