应用网关 OpenResty 对接 K8s 实践

当前云原生应用网关有很多选择,例如:Nginx/OpenResty、Traefik、Envoy 等,从部署流行度来看 OpenResty 毋容置疑是最流行的反向代理网关。本篇探讨的就是 Kubernetes 为了统一对外的入口网关而引入的 Ingress 对象是如何利用 OpenResty 来优化入口网关的能力的。

为什么需要 OpenResty

原生 Kubernetes Service 提供对外暴露服务的能力,通过唯一的 ClusterIP 接入 Pod 业务负载容器组对外提供服务名(附注:服务发现使用,采用内部 kube-dns 解析服务名称)并提供流量的软负载均衡。缺点是 Service 的 ClusterIP 地址只能在集群内部被访问,如果需要对集群外部用户提供此 Service 的访问能力,Kubernetes 需要通过另外两种方式来实现此类需求,一种是 NodePort,另一种是 LoadBalancer

当容器应用采用 NodePort 方式来暴露 Service 并让外部用户访问时会有如下困扰:

  • 外部访问服务时需要带 NodePort
  • 每次部署服务后,NodePort 端口会改变

当容器应用采用 LoadBalancer 方式时,主要应用场景还是对接云厂商提供负载均衡上,当然云厂商都提供对应的负载均衡插件方便 Kubernetes 一

你可能感兴趣的:(Kubernetes,实践入门指南)