日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

通過YurtAppSet應用集管理ACK Edge應用

ACK Edge集群中,您可以使用應用集(YurtAppSet)將應用便捷地部署到多個節點池中。YurtAppSet提供了靈活的響應機制以感知節點池標簽的變化,從而能夠統一管理多個節點池的工作負載配置,如實例數量和軟件版本等。本文將介紹如何使用YurtAppSet來高效地管理和部署ACK Edge集群的應用。

背景信息

傳統方案

在邊緣計算場景下,計算節點具有很明顯的地域分布屬性,相同的應用可能需要部署在不同地域下的計算節點上。以Deployment為例,傳統的做法是先將相同地域的計算節點設置成相同的標簽,然后創建多個Deployment,不同Deployment通過NodeSelectors選定不同的標簽,從而實現將相同的應用部署到不同地域的需求。

image

隨著地域分布越來越多,以及不同地域對應用的差異化需求,運維變得越來越復雜,具體表現在以下幾個方面:

  • 更新繁瑣:當應用版本更新時,需要手動修改所有Deployment以保持應用在各地域的一致性,降低了更新效率。

  • 管理復雜:隨著管理地域的增多,需要人工地對不同地域的Deployment進行區分和維護,增加了運維工作量。

  • 配置冗余:多個地域的Deployment配置高度相似,導致配置管理繁瑣且易出錯。

應用集管理方案

應用集(YurtAppSet)是容器服務 Edge 版提供的功能,旨在簡化邊緣計算場景下分散部署的復雜性。通過更上層的抽象,對多個工作負載(Workload資源,如Deployment)進行統一管理,比如創建、更新和刪除等操作。

YurtAppSet提供以下能力,可以幫助您有效解決傳統方案的更新效率低、管理復雜和配置冗余等問題,提高運維效率和應用部署的靈活性。

  • workloadTemplate:統一模板定義

    YurtAppSet允許您通過單一的workloadTemplate定義來統一管理位于多個地域的工作負載。這種方式不僅減少了重復的部署配置,還可以讓批量操作如創建、更新和刪除變得更加高效和一致。

  • nodepoolSelector:自動化部署

    YurtAppSet通過nodepoolSelector機制靈活選擇目標節點池,實現了與節點池動態變化的同步。隨著新節點池的創建或現有節點池的移除,nodepoolSelector將自動識別并匹配最新的合適節點池進行Workload分發部署,幫助您減輕運維負擔。

  • workloadTweaks:地域差異化定制配置

    當地域間的應用需求存在差異時,YurtAppSet提供了workloadTweaks功能,允許對特定區域的Workload進行定制化調整,從而滿足各地域的特定要求,您無需獨立管理或更新每個Workload。

image

創建應用集實例

  • ACK Edge集群為1.26及之后版本時,使用YurtAppSet部署。

  • ACK Edge集群為1.26之前版本時,使用UnitedDeployment部署。

1.26及之后版本

創建一個Workload模板為Deployment的YurtAppSet應用集實例。

完整的YAML示例模板如下:

apiVersion: apps.openyurt.io/v1beta1
kind: YurtAppSet
metadata:
  name: example
  namespace: default
spec:
  revisionHistoryLimit: 5
  pools:
  - np1xxxxxx
  - np2xxxxxx
  nodepoolSelector:
    matchLabels:
      yurtappset.openyurt.io/type: "nginx"
  workload:
    workloadTemplate:
      deploymentTemplate:
        metadata:
          labels:
            app: example
        spec:
          replicas: 2
          selector:
            matchLabels:
              app: example
          template:
            metadata:
              labels:
                app: example
            spec:
              containers:
              - image: nginx:1.19.1
                imagePullPolicy: Always
                name: nginx
    workloadTweaks:
    - pools:
      - np2xxxxxx
      tweaks:
        replicas: 3
        containerImages:
        - name: nginx
          targetImage: nginx:1.20.1
        patches:
        - path: /metadata/labels/test
          operation: add
          value: test

相關字段的解釋如下表所示:

字段

含義

是否必選

spec.pools

指定需要部署應用的節點池名稱列表(slice類型,推薦優先使用nodepoolSelector指定nodepool)。

spec.nodepoolSelector

通過labelSelector選擇需要部署應用的節點池(當與pools同時指定時,取并集)。

spec.workload.workloadTemplate

指定管理的Workload模板,目前支持deploymentTemplatestatefulSetTemplate模板。

spec.workload.workloadTweaks

指定對Workload的定制修改。

spec.workload.workloadTweaks[*].pools

指定該項修改應用在哪些節點池上(slice類型)。

spec.workload.workloadTweaks[*].nodepoolSelector

通過labelSelector選擇哪些節點池將會被修改。

spec.workload.workloadTweaks[*].tweaks.replicas

指定被修改的workload的replicas數。

spec.workload.workloadTweaks[*].tweaks.containerImages

指定被修改的workload的容器鏡像。

spec.workload.workloadTweaks[*].tweaks.patches

通過patch字段可以修改workloadTemplate的任意字段。

spec.workload.workloadTweaks[*].tweaks.patches[*].path

指定需要修改的字段在workloadTemplate中的路徑。

spec.workload.workloadTweaks[*].tweaks.patches[*].operation

指定需要在path上執行的操作(目前支持:add/remove/replace)。

spec.workload.workloadTweaks[*].tweaks.patches[*].value

指定修改后的最新取值(只對add/replace操作生效)。

status.conditions

表示YurtAppSet當前狀態,包括節點池選中狀態、workload狀態等。

status.readyWorkloads

表示YurtAppSet當前管理的workload中,所有副本都ready的workload數量。

status.updatedWorkloads

表示YurtAppSet當前管理的workload中,所有副本都已經更新到最新版本的workload數量。

status.totalWorkloads

表示YurtAppSet當前管理的workload數量。

1.26之前版本

創建一個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:  
        replicas: 2
        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的實例數。

如何使用應用集管理邊緣應用

  • 應用版本升級:通過修改spec.workload.workloadTemplate中的字段觸發升級流程,控制器把新的模板更新到各個節點池下的Workload中以觸發節點池控制器升級Pod。

  • 應用在某地域灰度更新:通過修改spec.workload.workloadTweak[*].containerImages配置,觸發相應節點池下應用Pod的鏡像更新。

  • 應用在某地域擴縮容:通過修改spec.workload.workloadTweak[*].replicas配置,觸發相應節點池下應用Pod的擴縮容操作。

  • 應用需要部署到一個新的地域:新創建一個匹配spec.nodepoolSelector標簽的節點池,YurtAppSet會感知到節點池資源的變化,自動為該節點池創建一個Workload。之后將該地域的節點加入該節點池即可。

  • 應用需要在某個地域下線:刪除對應地域的節點池,YurtAppSet會自動刪除該地域對應的Workload。