我是 Kubernetes 的新手,打算研究和了解 Kubernetes 中各种形式的负载均衡。我看到很多提到 Ingress 控制器的文章,并且一直在尝试自己使用一个。
我认为我可以做的是安装入口控制器(nginx/haproxy)并测试内部负载平衡。根据我的研究,人们似乎只使用入口控制器连接到外部负载均衡器(由云提供商,即 aws 或 gke)。我还读到,当使用此外部负载均衡器进行负载均衡时,它具有“两层”负载均衡,即由外部负载均衡器完成的集群节点的负载均衡,以及服务的 Pod 之间的负载均衡。将由入口完成,这让我认为我可以仅使用入口控制器来测试内部负载平衡。
我想知道是否可以这样做,或者我是否没有正确理解这些概念以及它们如何在现实中应用。
作为参考,我有一个在 vagrant 节点上运行的集群,并尝试安装和配置入口控制器,但没有成功,因为没有为入口分配外部 IP。 我可以提供有关我已实施的内容的详细信息,但我真的认为我现在已经遇到了概念上的障碍。
我假设您正在使用 Kubernetes the Hard Way 设置,并且已经使用 kubeadm 等工具设置了控制平面主节点和工作节点。需要注意的是,Kubernetes the Hard Way 会自动部署一个负载均衡节点,用于集群内的内部负载均衡。
鉴于此设置,您确实可以利用 Ingress 控制器进行内部负载平衡。虽然入口控制器通常与外部负载平衡相关,但它们也能够处理集群内的内部流量路由。
您提到的“两层”概念涉及将流量引导到节点的外部负载均衡器和管理内部服务 Pod 之间流量的入口控制器。
LB 节点与入口控制器:
负载均衡节点:处理集群内的内部流量,充当第4层负载均衡器。
入口控制器:管理对服务的外部访问,还可以处理内部流量路由,充当第7层负载均衡器。
要使用基于 Vagrant 的 Kubernetes 中的 Ingress 控制器来测试内部负载平衡,硬方法设置:
您可以随时参考 k8s 文档,其中包含与 ingress 控制器 和 kubernetes 一般相关的所有信息。