我想知道如何解决在 AWS 上的 Kubernetes 集群上运行的 Web 服务的高可用性代理/入口。
现在,我在一个节点上部署了一个 nginx-ingress-controller,该节点已分配 EIP,它充当边缘反向代理来访问部署在集群上的 Web 服务。
这几乎是 SPOF,当 nginx 控制器关闭或 EC2 节点损坏等时,就无法访问服务。
通常情况下,我会部署 keepalived 并将其设置为在主 nginx 代理出现故障时将 EIP 重新分配给备用代理节点。
使用 Kubernetes 实现这一目标的模式是什么?我会选择 AWS ELB,但它不支持 HTTP2 :(
答案1
ELB 本身不支持 http2,但它支持 TCP。最好的办法是使用 ELB 来前置 k8s 集群节点。如果您想要更高级的负载平衡功能,您可以在 HAProxy 或 nginx 集群前面使用 ELB,并依靠 HAProxy 或 nginx 在到达 k8s 集群之前执行任何额外的重写/检查/路由/等操作。