在边缘计算场景下,您可以以单元化部署模型将工作负载部署在不同的节点池中,业务的实例数、版本都可以按照节点池的维度进行统一管理。本文介绍如何使用单元化部署应用模型。
背景信息
在边缘计算场景下,计算节点具有很明显的地域分布属性,相同的应用可能需要部署在不同地域下的计算节点上。以Deployment为例,传统的做法是先将相同地域的计算节点设置成相同的标签,然后创建多个Deployment,不同Deployment通过NodeSelectors选定不同的标签,从而实现将相同的应用部署到不同地域的需求。
随着地域分布越来越多,以及不同地域对应用的差异化需求,使得运维变得越来越复杂,具体表现在以下几个方面:
-
当镜像版本升级,需要修改每个Deployment的镜像版本配置。
-
需要自定义Deployment的命名规范来表明相同的应用。
-
相同应用的多个Deployment,除了Name、NodeSelectors和Replicas这些特性外,其他的差异化配置比较小。
单元化部署(UnitedDeployment)是容器服务 Edge 版提供的功能,通过更上层次的抽象,对多个Deployment进行统一管理,比如创建、更新和删除等操作。
单元化部署提供一个模板来定义应用,将多个Workload部署到不同的区域, 每个区域定义为一个节点池。 目前单元化部署支持两种类型的Workload:StatefulSet和Deployment。控制器会根据单元化部署中节点池的配置创建子的Workload资源对象,每个资源对象都有一个期望的Replicas Pod数量。通过一个单元化部署实例就可以自动维护多个Deployment或者Statefulset资源,同时还能实现Name、NodeSelectors和Replicas等的差异化配置。
创建单元化部署实例
创建一个Workload模板为Deployment的UnitedDeployment单元化部署实例。
完整的YAML示例模板如下:
apiVersion: apps.openyurt.io/v1alpha1
kind: UnitedDeployment
metadata:
name: example
namespace: default
spec:
revisionHistoryLimit: 5
selector:
matchLabels:
app: example
workloadTemplate:
deploymentTemplate:
metadata:
creationTimestamp: null
labels:
app: example
spec:
selector:
matchLabels:
app: example
template:
metadata:
creationTimestamp: null
labels:
app: example
spec:
containers:
- image: nginx:1.19.3
imagePullPolicy: Always
name: nginx
dnsPolicy: ClusterFirst
restartPolicy: Always
topology:
pools:
- name: cloud
nodeSelectorTerm:
matchExpressions:
- key: apps.openyurt.io/nodepool
operator: In
values:
- np4b9781c40f0e46c581b2cf2b6160****
replicas: 2
- name: edge
nodeSelectorTerm:
matchExpressions:
- key: apps.openyurt.io/nodepool
operator: In
values:
- np47832359db2e4843aa13e8b76f83****
replicas: 2
tolerations:
- effect: NoSchedule
key: apps.openyurt.io/taints
operator: Exists
相关字段的解释如下表所示:
字段 |
含义 |
spec.workloadTemplate |
代表支持的Workload模板,目前节点池支持 |
spec.topology.pools |
指定多个节点池。 |
spec.topology.pools[*].name |
节点池的名称。 |
spec.topology.pools[*].nodeSelectorTerm |
节点池的主机亲和性配置若需与节点池NodePool相对应,Key使用 说明 您可以在节点池页面,在对应云端和边缘侧的节点池名称的下方查看节点池ID。 |
spec.topology.pools[*].tolerations |
节点池的主机容忍性配置。 |
spec.topology.pools[*].replicas |
每个节点池下Pod的实例数。 |
使用单元化部署应用模型实例管理Pod
-
升级Pod:通过修改
spec.template.workloadTemplate.deploymentTemplate
下面的字段触发升级流程,控制器把新的模板更新到各个节点池下的Workload里触发节点池控制器升级Pod。 -
扩容多个节点池下Pod的Replicas数目:通过修改
spec.topology.pools
下不同节点池的Repicas配置,触发相应节点池下应用Pod的扩缩容操作。
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/169607.html