如何在本地VM上部署kubernertes服务(类型LoadBalancer)?当我使用type = LoadBalcer时,它将外部IP显示为“ pending”,但是如果我部署在GKS上,则使用相同的Yaml可以正常工作。我的问题是-:
如果我在Onprem VM上使用type = LoadBalcer,是否需要负载均衡器? 我可以在Yaml中手动分配LoadBalncer IP吗?
答案 0 :(得分:1)
您需要设置metalLB。
MetalLB连接到您的Kubernetes集群,并提供了网络负载平衡器实现。简而言之,它使您可以在未在云提供商上运行的集群中创建类型为LoadBalancer
的Kubernetes服务,因此不能简单地使用付费产品来提供负载均衡器。
要安装运行
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.3/manifests/namespace.yaml
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.3/manifests/metallb.yaml
有关更多详细信息,请单击here安装
答案 1 :(得分:1)
检查Banzai Cloud Pipeline Kubernetes Engine (PKE)是“一个简单,安全且功能强大的CNCF认证的Kubernetes分发”平台可能会有所帮助。它旨在在任何云,VM或裸机节点上工作,以为私有云提供可扩展的安全基础。 PKE具有云意识,并且包括数量不断增加的云和平台集成。
当我使用type = LoadBalcer时,它显示外部IP为“待定”,但是如果我部署在GKS上,则使用相同的Yaml一切都可以正常工作。
如果您创建LoadBalancer服务(例如,尝试公开自己的基于TCP的服务或安装入口控制器),则云提供商集成将负责创建所需的云资源,并写回服务将在其中运行的端点能得到的。如果您没有用于此目的的云提供商集成或控制器,则您的服务资源将保持“待处理”状态。
对于Kubernetes,LoadBalancer服务是向群集或网格外部的世界公开其他服务,内部用户或Internet的最简单,最常见的方法。
作为一个概念,负载平衡可以在OSI网络模型的不同级别上发生,主要是在L4(传输层,例如TCP)和L7(应用层,例如HTTP)上。在Kubernetes中,服务是L4的抽象,而Ingress是L7路由的通用解决方案。
您需要设置metalLB。
MetalLB是LoadBalancer云集成的最受欢迎的本地替代产品之一。整个解决方案在Kubernetes集群中运行。
主要组件是一个集群内Kubernetes控制器,该控制器监视LB服务资源,并基于ConfigMap中提供的配置,从专用池中分配和写回IP地址以用于新服务。它为每个服务维护一个领导节点,并根据工作模式通过BGP或ARP进行发布(在发生故障转移时发出未经请求的ARP数据包)。
MetalLB可以通过两种方式进行操作:将所有请求转发到领导者节点上的Pod,或使用kubeproxy分发给所有节点。
第7层(通常为HTTP / HTTPS)负载平衡器设备(例如F5 BIG-IP)或基于HAProxy和Nginx的解决方案可以与适用的入口控制器集成。如果这样的话,大多数情况下就不需要LoadBalancer实现。
希望可以解决“裸机主机上的负载平衡器”问题。