前言
SuperEdge(https://github.com/superedge/superedge) 是Kubernetes原生的边缘容器方案,它将Kubernetes强大的容器管理能力扩展到边缘计算场景中,针对边缘计算场景中常见的技术挑战提供了解决方案,如:单集群节点跨地域、云边网络不可靠、边缘节点位于NAT网络等。这些能力可以让应用很容易地部署到边缘计算节点上,并且可靠地运行,可以帮助您很方便地把分布在各处的计算资源放到一个Kubernetes集群中管理,包括但不限于:边缘云计算资源、私有云资源、现场设备,打造属于您的边缘PaaS平台。Superedge支持所有Kubernetes资源类型、API接口、使用方式、运维工具,无额外的学习成本,也兼容其他云原生项目,如:Promethues,使用者可以结合其他所需的云原生项目一起使用。项目由以下公司共同发起:腾讯、Intel、VMware、虎牙直播、寒武纪、首都在线和美团。
Superedge中的ServiceGroup功能可以便捷地在共属同一个集群的不同机房或区域中各自部署一组服务,只需要使用ServiceGroup提供的DeploymentGrid和ServiceGrid两种资源,即可方便地将服务分别部署到这些节点组中,保证各区域服务数量及容灾,并进行服务流量管控,使得各个服务间的请求在本机房或本地域内部即可完成,避免服务跨地域访问。
在最新发布的SuperEdge release 0.2.0版本中:SuperEdge扩展了有状态应用类型,引入了对应StatefulSets的StatefulSetGrid,方便有状态应用在多地域的独立部署和扩展;流量区域自治能力相应也支持了StatefulSets常配对的Headless Service;同时新增了按照地域进行灰度的功能,也即各NodeUnit内独立部署的workload版本可以不同。
有状态应用的支持
支持StatefulSets
最新版本的Superedge中,ServiceGroup支持了有状态应用StatefulSets。除了保持和原生StatefulSets字段的完全一致、方便已有应用改造、无需担心同步社区最新特性的同时,也继续保持了ServiceGroup的核心特性,能便捷地在一个集群中的多个地域进行边缘应用的独立部署和统一运维。
如下图所示,一个CDN集群需要在zone-1和zone-2两个地域的机房内各完整部署一套StatefulSets应用,但是两个地域网络不互通
此时可以在云端部署下发如下格式的StatefulSetGrid
apiVersion: superedge.io/v1
kind: StatefulSetGrid
metadata:
spec:
gridUniqKey: <NodeLabel Key>
<statefulset-template>
即可方便地在两个机房内自动部署对应的StatefulSets:StatefulSet