详情页标题前

阿里云容器服务ACK使用单元化部署应用模型-云淘科技

详情页1

在边缘计算场景下,您可以以单元化部署模型将工作负载部署在不同的节点池中,业务的实例数、版本都可以按照节点池的维度进行统一管理。本文介绍如何使用单元化部署应用模型

背景信息

在边缘计算场景下,计算节点具有很明显的地域分布属性,相同的应用可能需要部署在不同地域下的计算节点上。以Deployment为例,传统的做法是先将相同地域的计算节点设置成相同的标签,然后创建多个Deployment,不同Deployment通过NodeSelectors选定不同的标签,从而实现将相同的应用部署到不同地域的需求。

阿里云容器服务ACK使用单元化部署应用模型-云淘科技

随着地域分布越来越多,以及不同地域对应用的差异化需求,使得运维变得越来越复杂,具体表现在以下几个方面:

  • 当镜像版本升级,需要修改每个Deployment的镜像版本配置。

  • 需要自定义Deployment的命名规范来表明相同的应用。

  • 相同应用的多个Deployment,除了Name、NodeSelectors和Replicas这些特性外,其他的差异化配置比较小。

单元化部署(UnitedDeployment)是容器服务 Edge 版提供的功能,通过更上层次的抽象,对多个Deployment进行统一管理,比如创建、更新和删除等操作。

阿里云容器服务ACK使用单元化部署应用模型-云淘科技

单元化部署提供一个模板来定义应用,将多个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模板,目前节点池支持deploymentTemplate/statefulSetTemplate两种模板。

spec.topology.pools

指定多个节点池。

spec.topology.pools[*].name

节点池的名称。

spec.topology.pools[*].nodeSelectorTerm

节点池的主机亲和性配置若需与节点池NodePool相对应,Key使用apps.openyurt.io/nodepool,Values使用节点池ID。

说明

您可以在节点池页面,在对应云端和边缘侧的节点池名称的下方查看节点池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

(0)
上一篇 2023年12月10日 下午12:09
下一篇 2023年12月10日 下午12:12
详情页2

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。