k8s中的Gateway API 和istio

Gateway API

Gateway API 是 Kubernetes 社区为了更好地管理集群外部流量引入的标准 API,它旨在提供更强大、灵活且可扩展的方式来描述和配置网络流量的入口和出口规则。

主要资源对象
  • Gateway:定义了一个网络入口点,描述了负载均衡器的配置,如使用的协议(HTTP、HTTPS、TCP 等)、监听的端口、TLS 配置等。例如,一个 Gateway 可以指定在 80 端口监听 HTTP 流量,在 443 端口监听 HTTPS 流量,并配置相应的 TLS 证书。
  • HTTPRoute :用于定义 HTTP 流量的路由规则,可基于路径、主机名、HTTP 方法等进行流量匹配,并指定将匹配到的流量转发到哪个后端服务。比如,将所有以**/api** 开头的路径请求转发到名为**backend-api-service**的服务。
  • TCPRoute:与 HTTPRoute 类似,但用于处理 TCP 流量,能根据源 IP、目的 IP、端口等条件,将 TCP 流量转发到特定的后端服务。
  • UDPRoute:针对 UDP 流量,定义如何将 UDP 流量导向后端服务。
优势
  • 标准化与扩展性:提供了一套标准化的方式来描述网络配置,不同的网络提供商和工具可以基于此 API 实现一致的功能,同时用户也可以根据自身需求扩展其功能。
  • 灵活的流量管理:相比传统的 Ingress 资源,能更精细地控制流量,支持更多复杂的路由场景,如加权流量分配、流量镜像等。
  • 简化网络配置:通过清晰的资源模型,将网络入口和流量路由规则分离,使配置更加直观和易于管理。

Istio

Istio 是一个开源的服务网格框架,专注于为微服务应用提供统一的流量管理、安全和可观测性能力。

主要功能
  • 流量管理:Istio 可以控制服务之间的流量和 API 调用,实现诸如负载均衡、故障注入、流量转移(蓝绿部署、金丝雀发布)等功能。例如,在进行新版本服务发布时,可以通过 Istio 将少量流量先导向新版本服务,观察运行情况后再逐步扩大流量比例。
  • 安全:提供强大的安全功能,包括服务间的双向 TLS 认证、访问控制和身份验证等。通过 Istio,不同微服务之间的通信可以自动加密,防止数据在传输过程中被窃取或篡改。
  • 可观测性:Istio 集成了分布式追踪、监控和日志功能,能够帮助用户深入了解服务间的调用关系和性能表现。通过查看追踪数据,用户可以快速定位服务调用过程中出现的延迟或错误问题。
核心组件
  • Pilot:负责管理和配置 Istio 服务网格中的所有流量规则,将用户定义的高级路由规则转换为 Envoy 代理可以理解的配置。
  • Envoy:作为 Sidecar 代理,部署在每个服务实例旁边,拦截进出服务的所有流量,执行 Pilot 下发的流量管理和安全策略。
  • Mixer:负责在服务网格中执行访问控制和使用策略,并从 Envoy 代理和其他服务收集遥测数据。不过在较新的版本中,Mixer 的部分功能已被逐渐弃用或替代。
  • Galley:负责验证、提取和处理 Istio 配置,提供配置管理和验证的功能。

两者关系

  • 互补关系:Gateway API 主要聚焦于集群外部流量的入口管理,而 Istio 则侧重于服务网格内部微服务之间的流量管理、安全和可观测性。在实际应用中,两者可以结合使用,利用 Gateway API 处理外部到集群的流量入口,再通过 Istio 对进入集群后的流量在微服务间进行更精细的管理。
  • 共同发展:随着技术的发展,Gateway API 的功能可能会逐渐涵盖到 Istio 的部分流量管理领域,而 Istio 也可能会更好地兼容和利用 Gateway API 的标准,使得整个 Kubernetes 生态系统的网络管理更加完善和统一。
相关推荐
没有bug.的程序员5 小时前
服务网格 Service Mesh:微服务通信的终极进化
java·分布式·微服务·云原生·service_mesh
啊啊啊啊84310 小时前
Kubernetes 1.20集群部署
云原生·容器·kubernetes
morning_sir_jking12 小时前
深入解析 kube-proxy:Kubernetes 服务发现的网络基石
网络·kubernetes·服务发现
忧郁的橙子.14 小时前
十二、kubernetes 1.29 之 存储 Volume、pv/pvc
云原生·容器·kubernetes
霍小毛14 小时前
Kubernetes云平台管理实战:滚动升级与秒级回滚
java·容器·kubernetes
小诸葛的博客15 小时前
k8s lease使用案例
云原生·容器·kubernetes
红尘客栈216 小时前
Kubernetes 集群调度
java·linux·网络·容器·kubernetes
m0_4646082617 小时前
Kubernetes 集群调度与PV和PVC
云原生·容器·kubernetes
熙客1 天前
阿里云负载均衡SLB的使用
网络·阿里云·云原生·云计算·负载均衡
无名客01 天前
SpringCloud中的网关(Gateway)的作用是什么?
spring·spring cloud·gateway