GCP为Kubernetes引擎提供支持原生容器的负载均衡器
GCP现在为运作于Google Kubernetes Engine(GKE)的应用程序,以及安装在Compute Engine上的Kubernetes,提供原生容器负载均衡。
用户现在能使用网络端点组(Network Endpoint Groups,NEGs),以任意网络端点编写负载均衡器作为IP端口对,并且对容器直接进行负载均衡。通过这个GCP上新的数据模型抽象层,企业可以获得精确Pods的原生运作状况,甚至是负载均衡到Pods之间 。
最初负载均衡器是为支持虚拟机的资源分配而设计,但是这样的设计对于容器来说,并不能达到最佳效能,像是GKE这样的容器协调器( Container Orchestrator),没有一组为Pods定义的后端方法,所以负载均衡器会以实例分组作为后端。
像是GKE中的Ingress支持就以实例分组,使用HTTP/HTTPS负载均衡器对集群中的节点进行负载均衡,这些节点遵循IPTable的规则,将请求路由到Pods中,但由于虚拟机等级的负载均衡器,无法将Pods或是容器视为后端,导致负载不平衡,而且在节点之间还会发生次优路径大量数据流量跳跃的情况发生。
GCP为了解决这些问题,现在具备原生容器负载均衡能力的新网络端点组抽象层与Kubernetes Ingress控制器整合,当企业使用多层部署要在因特网公开一个或多个服务,现在可以创建一个Ingress对象,来负责提供HTTP/HTTPS负载均衡器,让企业可以配置基于路径或是主机的规则,以路由流量到后端服务。
与IPTables相比,原生容器负载均衡能为容器提供真正的最佳负载,由于之前的负载均衡系统并不了解后端容器,因此即使将流量平均分配到实例中,对容器来说也不见得是平均的,而原生容器负载均衡则能根据用户定义的负载均衡算法,将流量均匀分配到后端中。
另外,负载均衡系统具备掌握后端能力后,便能直接对容器进行执行状态检查,而不是将状态检查请求发送到节点上,再由节点转发到随机容器上,因此现在更能准确掌握后端系统运作的健康程度。而当后端的一个Pod被移除后,负载均衡器会原生的处理端点流量,并根据结束连结流量来设置后端服务。
由于负载均衡器可以直接对容器进行操作,负载均衡器到节点间将不会再有流量跳跃,因为负载均衡现在是一步而非两个步骤。原生容器负载均衡还能帮助用户排除Pod层级的故障,该服务保留来源IP,因此能轻易追踪到流量来源,而且由于容器收到的封包来自负载均衡器而非来自其他节点的NAT,因此用户可以使用节点等级的网络政策创建防火墙规则。
本文转自中文社区-GCP为Kubernetes引擎提供支持原生容器的负载均衡器
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
kubernetes-水平Pod自动伸缩
在当前的版本中,Pod水平自动伸缩支持基于CPU使用情况对Pod进行自动伸缩。Pod水平自动伸缩通过Kubernetes API资源和控制器进行实现。控制器会根据CPU的使用情况周期性的调整Pod的副本数量。 1、水平Pod自动伸缩是如何工作的? 水平Pod自动伸缩被实现为控制周期循环,其周期由控制器管理器的–horizontal-pod-autoscaler-sync-period标志进行控制(默认值为30秒)。在每个周期间,控制器管理器会根据每个HorizontalPodAutoscaler定义中指定的度量标准查询资源利用率。控制器管理器从资源指标的API(针对每个窗格的资源指标)或自定义指标的API(针对所有其他指标)获取度量。 对于每个Pod资源指标(如CPU),控制器为HorizontalPodAutoscaler的目标Pod从资源指标API中获取指标。如果设置了目标利用率的值,则控制器将在会计算使用率,作为每个Pod中容器的等效资源请求的百分比。如果设置了目标原始值,则直接使用原始指标标准值。然后,控制器在所有目标Pod中获取利用率的平均值或原始值(取决于指定的目标类型...
- 下一篇
使用CoreDNS实现Kubernetes基于DNS的服务发现
1.Kubernetes基于DNS的服务发现 在Kubernetes集群推荐使用Service Name作为服务的访问地址,因此需要一个Kubernetes集群范围的DNS服务实现从Service Name到Cluster Ip的解析,这就是Kubernetes基于DNS的服务发现功能。 在从Kubernetes 1.10开始Dynamic Kubelet Configuration特性进入beta阶段,kubelet的大多数命令行参数都改为推荐在–config指定位置的配置文件中进行配置,包括—cluster-dns和–cluster-domain两个参数,在kubelet的配置文件中配置如下: apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration ...... clusterDNS: - 10.96.0.10 clusterDomain: cluster.local ...... 其中clusterDNS指定了集群中所有容器将使用的DNS Server,即kubelet会在每个Pod内部设置DNS服...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果