关于腾讯云:如何利用云原生快速实现多地部署

14次阅读

共计 2033 个字符,预计需要花费 6 分钟才能阅读完成。

作者张珊,腾讯云容器前端开发工程师,日常负责腾讯云边缘容器 TKE@edge 相干控制台前端开发,同时也开发前端工程化相干工具腾讯云服务网格 TCM 产品个性的钻研和开发。

问题背景

在边缘计算场景中,往往会呈现一个集群治理多个边缘站点(包含一个或者多个计算节点)的状况。每个站点都能够为用户提供一套残缺业务性能。因为受到网络限度,有业务联系的服务之间不心愿或者不能跨站点拜访。为了每个边缘节点都能提供一套实现性能,一个边缘站点都会去部署一组有业务逻辑联系的服务,如果应用原生 K8s 进行治理,无奈间接管制 Deployment 的 Pod 创立的具体节点地位,须要通过统筹规划节点的亲和性来间接实现; 当边缘站点数量以及须要部署的服务数量过多时,治理和部署都将极为简单,乃至仅存在实践上的可能性。

解决方案

腾讯云边缘容器 TKE@edge 开拓性地提出 ServiceGroup 的解决方案。ServiceGroup 能够便捷地在同集群的不同机房或区域各自部署一组服务,并且使得各个服务间的申请在本机房或本地区外部即可实现,防止服务跨地区拜访。

要了解 ServiceGroup,可能须要先理解以下几个概念:

  1. NodeUnit: 位于同一个边缘站点的节点汇合,其中节点有雷同的某个 label,比方 zone:zone1,可能把服务之间的调用限度在同一个 NodeUnit 内;
  2. NodeGroup: 蕴含多个 NodeUnit,每个 NodeUnit 中的节点 label 蕴含某个雷同的 key,能够部署 DeploymentGrid 中申明的服务;
  3. DeploymentGrid: TKE@edge 自行实现的 CRD (CustomResourceDefinition),指定每个 NodeUnit 中部署的服务组;
  4. ServiceGrid: TKE@edge 自行实现的 CRD,能够限度通过 service-name 拜访只会将申请发向同一个 NodeUnit 的节点。具体关联见下图:

能够看到 ServiceGroup 计划的外围点是实现 DeploymentGrid 和 ServiceGrid 两个 CRD:

  • 首先定义了资源字段,根本字段和 Deployment 和 Service 统一,并额定增加了 gridUniqKey 字段;
  • 其次实现相应的 controller:DeploymentGrid controller 和 ServiceGrid controller,一直将创立的 DeploymentGrid 和 ServiceGrid 资源和谐到冀望的 Deployment 和 Service,并且联结 ServiceGrid,DeploymentGrid 上的 gridUniqKey 字段和节点的标签,将 Deployment 部署在每个 NodeUnit 内。

那么如何保障流量限度在节点组的范畴内呢?application-grid-wrapper 组件能够帮忙实现。该组件代理 kube-proxy 的申请,同时监听 apiserver 的 node、service 和 endpoint 资源。依据 pod 信息中所属 Node 是否与以后节点共属雷同的 NodeUnit 做不同的解决:

  1. 如果 pod 所属的 Node 与以后节点属于雷同的 NodeUnit,则将该资源信息转发给上游的 kube-proxy,kube-proxy 会依照原先的流程创立对应的路由表;
  2. 如果 pod 所属的 Node 与以后节点不属于雷同的 NodeUnit,则 application-grid-wrapper 会拦挡该信息,同时不转发给 kube-proxy;

这样一来,尽管用户查看 endpoint 的时候能看到整个集群内该 service 所含的所有 endpoint,然而实际上节点的 service 的路由表项只含有雷同 NodeUnit 内的节点的相干表项;这样就保障了 NodeUnit 内的服务的相互拜访肯定会限度在以后 NodeUnit 范畴内,从而防止跨节点组或者跨机房跨地区拜访的问题。

使用指南

TKE@edge 团队曾经实现 ServiceGroup 性能并且将其产品化,具体操作如下:

假如已在腾讯云控制台创立边缘集群,并且该集群下已有节点;如果不分明如何创立,能够参考 边缘集群文档。

步骤 1:创立 DeploymentGrid

步骤 2:创立 ServiceGrid

步骤 3:创立 NodeUnit

通过上述操作,咱们就划分了两个 NodeUnit,并且每个 NodeUnit 都部署 wordpress 服务;在节点内通过 service-name 拜访也只会将申请发向本组的节点。

小结

本文从问题产生、方案设计和理论演示介绍 ServiceGroup 相干原理, 以及如何应用 ServiceGroup 简略快捷实现多地部署。

参考文献

  • 边缘集群官网文档:https://cloud.tencent.com/doc…
  • 【从 0 到 1 学习边缘容器系列】之边缘利用治理:https://mp.weixin.qq.com/s/MU…

【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!

正文完
 0