赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 分布式云容器平台ACK One
  4. 操作指南
  5. 多集群舰队
  6. 应用分发
  7. 动态分发和重调度

动态分发和重调度

  • 应用分发
  • 发布于 2025-04-18
  • 0 次阅读
文档编辑
文档编辑

ACK One舰队可以通过PropagationPolicy根据子集群的可用资源对工作负载(如 Deployment、StatefulSet和Job)进行副本的切分。同时ACK One舰队默认开启重调度能力,由于子集群的可用资源会随着时间变化,原本在子集群中的工作负载可能会存在无法调度的副本。ACK One舰队每两分钟进行一次自动检测,当Pod处于不可调度状态超过30秒时,将触发该副本的重调度。

前提条件

  • 已开启舰队管理功能。

  • 舰队实例已添加多个关联集群。

  • 已为RAM用户授予AliyunAdcpFullAccess权限。

  • 已安装AMC命令行工具。

操作步骤

步骤一:在舰队中创建应用

  1. 使用以下内容,创建web-demo.yaml文件。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: web-demo
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: web-demo
      template:
        metadata:
          labels:
            app: web-demo
        spec:
          containers:
          - name: nginx
            image: registry-cn-hangzhou.ack.aliyuncs.com/acs/web-demo:0.5.0
            ports:
            - containerPort: 80
  2. 执行以下命令部署应用。

    kubectl apply -f web-demo.yaml

步骤二:创建分发策略

  1. 创建基于动态权重的分发策略,该策略会根据子集群所有节点的可用资源自动分配副本比例。

    apiVersion: policy.one.alibabacloud.com/v1alpha1
    kind: PropagationPolicy
    metadata:
      name: web-demo
    spec:
      resourceSelectors:
      - apiVersion: apps/v1
        kind: Deployment
        name: web-demo
      placement:
        clusterAffinity:
          clusterNames:
          - ${cluster1-id} # 您的集群ID。
          - ${cluster2-id} 
        replicaScheduling:
          replicaSchedulingType: Divided
          replicaDivisionPreference: Weighted
          weightPreference:
            dynamicWeight: AvailableReplicas
  2. 执行以下命令,查看应用分发状态。

    kubectl amc get deploy web-demo -M

    预期输出如下,根据您的子集群可用资源比例,结果会有所不同。

    NAME       CLUSTER      READY   UP-TO-DATE   AVAILABLE   AGE   ADOPTION
    web-demo   cxxxxxxxx1   2/2     2            2           11s   Y
    web-demo   cxxxxxxxx2   3/3     3            3           11s   Y

步骤三:验证重调度能力

通过给节点打污点并重启原有的Deployment,您可以模拟资源不足导致工作负载处于Pending状态的场景。

  1. 执行以下命令,为所有节点打上NoSchedule的污点。

    kubectl --kubeconfig=<cluster1.config> taint nodes foo=bar:NoSchedule --all=true
  2. 执行以下命令,重启原本的工作负载,预期工作负载将无法正常运行。

    kubectl --kubeconfig=<cluster1.config> rollout restart deploy web-demo
  3. 等待约三分钟后,执行如下命令,查看调度结果。

    kubectl amc get deploy web-demo -M

    预期输出:

    NAME       CLUSTER      READY   UP-TO-DATE   AVAILABLE   AGE   ADOPTION
    web-demo   cxxxxxxxx2   5/5     5            5           11s   Y

    通过预期输出可以看到Cluster1的工作负载的副本被重调度到Cluster2。

相关文章

应用分发概述 2025-04-18 18:10

您可以通过ACK One舰队的应用分发功能将舰队实例中的应用分发至多个关联集群中。通过在舰队实例中定义分发策略,精准选择出符合条件的Kubernetes资源,并将其分发至策略指定的多个目标集群中。您还可以定义差异化策略来选择需要差异化部署的集群以及应用。相比于GitOps方式,它无需依赖Git仓库。

应用分发快速入门 2025-04-18 18:10

您可以通过ACK One舰队的应用分发功能将舰队实例中的应用分发至多个关联集群中,无需依赖Git仓库,简化应用部署流程。本文介绍如何在舰队实例中创建应用并根据分发策略分发至多集群中。 前提条件 已开启舰队管理功能。 </

分发策略与差异化策略 2025-04-18 18:10

ACK One舰队的应用分发通过分发策略和差异化策略完成。分发策略(PropagationPolicy)用于定义哪些资源需要分发到哪些集群中,差异化策略(OverridePolicy)用于定义资源在分发至不同集群时需要哪些差异化配置。本文详细介绍分发策略(PropagationPolicy)和差异化

动态分发和重调度 2025-04-18 18:10

ACK One舰队可以通过PropagationPolicy根据子集群的可用资源对工作负载(如 Deployment、StatefulSet和Job)进行副本的切分。同时ACK One舰队默认开启重调度能力,由于子集群的可用资源会随着时间变化,原本在子集群中的工作负载可能会存在无法调度的副本。ACK

应用分发状态说明及FAQ 2025-04-18 18:10

本文介绍应用分发能力的实现流程,并提供分发状态说明与常见问题排查思路。 工作原理

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号