机动战士GitOps
与通常一样,使用GitOps和FluxCD在群集中部署了资源,无论资源位于云上还是本地。 请参考有关Flux的文章。
首先,您可以使用GitOps模板根据需要进行自定义。 如果kubectl合适,还可以直接展开列表。
现在,让我们详细了解一下组件。
负载均衡
在云上运行kubernetns时,通常可以立即使用加载平衡器。 在裸机或VM上运行时,负载平衡器仍然不能使用pending。
因此,我们首先希望我们的服务类型LoadBalancer能够根据需要提供动态负载平衡器,而不是在pending中不可用。 不需要手动配置haproxy等服务。
metallb提供了两种模式的虚拟负载平衡器实现
BGP协议
美联储
后者更简单,因为几乎可以在任何双层网络上运行,而无需进一步配置。
在ARP模式下,metallb的配置非常简单。 只需提供可用的IP即可。
此处或正式文档中提供了配置列表。 要配置所需的IP地址,请使用配置映射。
英特尔进口控制器
在云上运行时,除了传统的4层负载平衡器之外,GCP和AWS还可以使用7层负载平衡器(应用程序负载平衡器等)。 但是,由于这些功能有限且不经济实惠,因此通常需要入口控制器来管理来自Kubernetes群集的通信。
入口控制器的服务类型通常在加载平衡器之外公开。 因此,以前的metallb部署很有帮助。
第一个最常见的入口控制器是nginx-ingress,可以与Helm轻松部署。
现在,已经创建了四层负载平衡器(metallb ),它可以将通信传输到群集中的七层负载平衡器(nginx-ingress )。 如何动态管理DNS? 一个常见的工具是外部DNS (https://github.com/kubernetes-sigs /外部DNS ),它将kubernetes服务、入口和DNS如果您使用的是广泛使用的DNS平台(AWS Route53或谷歌云DNS ),这将非常有用。 外部DNS也支持其他DNS供应商,但如果没有直接支持的DNS供应商,可能会很麻烦。
例如,本地DNS由活动目录管理。 外部DNS无法直接写入活动目录DNS,因此最终将无法使用DNS分析。
那么,怎样才能获得动态DNS功能呢? 当然,也可以使用通配符DNS记录指向nginx-ingress负载平衡器IP。 这是方法。 如果只使用一个负载平衡器作为群集的入口,并且使用HTTP或其他类型的非负载平衡器服务协议,则必须手动更新部分DNS记录。