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

应用分发状态说明及FAQ

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

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

工作原理

image
  1. 资源匹配:根据分发策略和应用资源进行匹配。如果您创建的分发策略选中了集群中已存在的应用资源,则会产生一个ResourceBinding对象,该对象与应用资源一一对应。ResourceBinding的名称采用格式${resource name}-${resource Kind},您可以通过名称直接查询ResourceBinding。对于集群范围级别的应用资源,与之对应的是ClusterResourceBinding。

  2. 多集群调度:根据创建的分发策略,对ResourceBinding进行调度。如果调度完成,ResourceBinding的状态中SCHEDULED条件将会变为True。

  3. 差异化渲染:如果您创建应用资源的差异化策略,该策略将在此阶段生效。

  4. 子集群应用资源创建:应用资源将在相应的子集群被创建,成功创建后,ResourceBinding的状态中FULLYAPPLIED条件将会变为True。

  5. 应用资源在子集群运行:工作负载类型的应用资源在子集群运行时,应用资源状态变为Ready。当应用资源就绪之后,ResourceBinding的状态中ALLAVAILABLE条件会为True。

应用多集群分发流程

步骤一:在舰队集群创建资源、分发策略和差异化策略

  1. 使用如下示例内容,创建资源和分发策略。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: web-demo
    spec:
      replicas: 5
      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
    ---
    apiVersion: policy.one.alibabacloud.com/v1alpha1
    kind: PropagationPolicy
    metadata:
      name: web-demo
    spec:
      # 设置为true时,删除舰队上资源时,子集群上资源会被保留;如需同时清理子集群资源,请设置为false。
      preserveResourcesOnDeletion: true
      resourceSelectors:
      - apiVersion: apps/v1
        kind: Deployment
        name: web-demo
      placement:
        clusterAffinity:
          clusterNames:
          - ${cluster1-id} # 您的集群ID。
          - ${cluster2-id} 
        replicaScheduling:
          replicaSchedulingType: Duplicated
  2. (可选)使用如下示例内容,创建差异化策略。

    apiVersion: one.alibabacloud.com/v1alpha1
    kind: OverridePolicy
    metadata:
      name: demo
    spec:
      resourceSelectors:
        - apiVersion: apps/v1
          kind: Deployment
          name: web-demo
      overrideRules:
        - targetCluster:
            clusterNames:
              - ${cluster1-id} #您的集群ID。
          overriders:
            plaintext:
              - operator: replace
                path: /spec/replicas
                value: 3

步骤二:查看分发状态

  1. 执行如下命令,查看分发状态。

    kubectl get rb web-demo-deployment

    预期输出:

    NAME                  SCHEDULED   FULLYAPPLIED  OVERRIDDEN  ALLAVAILABLE   AGE
    web-demo-deployment   True        True          True        True           17h

    参数

    说明

    SCHEDULED

    表示资源是否被调度成功。

    FULLYAPPLIED

    表示资源是否成功在子集群中创建。

    OVERRIDDEN

    表示差异化策略是否生效(如果没有差异化策略,默认为True)。

    ALLAVAILABLE

    表示资源在子集群中是否符合预期状态。

  2. (可选)查看差异化策略。

    • 通过执行kubectl get rb web-demo-deployment命令,并查看输出中OVERRIDDEN参数,若为True则表示差异化策略已生效。

    • 通过执行kubectl describe deploy web-demo命令,查看相关事件判断差异化策略是否生效。预期输出如下:

        Normal   ApplyOverridePolicySucceed  2m37s (x3 over 49m)     override-manager                    Apply override policy(default/demo) for cluster(cxxxxxxx) succeed.

步骤三:查看具体的应用资源状态

执行如下命令,查看具体的应用资源状态。

kubectl get rb web-demo-deployment -oyaml

预期输出:

...
status:
  aggregatedStatus:
  - applied: true
    appliedMessage: 'Applied Condition Message: Apply manifest complete; AvailableCondition
      Message:Resource is available'
    clusterName: ${cluster1-id}
    health: Healthy
    status:
      availableReplicas: 3
      generation: 7
      observedGeneration: 7
      readyReplicas: 3
      replicas: 3
      resourceTemplateGeneration: 2
      updatedReplicas: 3
  - applied: true
    appliedMessage: 'Applied Condition Message: Apply manifest complete; AvailableCondition
      Message:Resource is available'
    clusterName: ${cluster2-id}
    health: Healthy
    status:
      availableReplicas: 5
      generation: 1
      observedGeneration: 1
      readyReplicas: 5
      replicas: 5
      resourceTemplateGeneration: 2
      updatedReplicas: 5

在aggregatedStatus部分中可以看到两个集群中deployment的状态,包括集群名称和对应deployment的状态信息,也可以看到Cluster1集群的副本数已经被差异化策略渲染为3。

FAQ

为什么创建应用资源和分发策略后没有对应的ResourceBinding/ClusterResourceBinding?

此问题通常是由于分发策略的resourceSelector参数没有选中应用资源导致。请检查ResourceSelectors中声明的条件是否与应用资源匹配。

应用分发后,显示调度失败如何处理?

image.png

您可以通过以下命令查看ResourceBinding的详细情况:

kubectl get rb xxx -oyaml -n xxx

通常调度失败的原因是因为您在分发策略中clusterAffinity参数的配置与实际子集群不一致,请确保填写正确的集群ID。

差异化配置没有生效如何处理?

首先检查差异化策略的resourceSelector参数是否选中了您想要差异化的应用资源。可通过以下两种方式排查。

  • 您可以通过以下命令查看ResourceBinding中message字段来排查失败原因。

    kubectl get rb ${resource name}-${resource kind} -oyaml -n ${namespace}

    预期输出:

    image.png

  • 您可以通过以下命令查看差异化策略相关资源的事件,关注两个关键事件:ApplyOverridePolicyFailed和SyncWorkFailed,具体原因可在message栏中查看。

    kubectl describe ${resource-kind} ${resource-name} -n ${resource-namespace}

通常,差异化策略未生效的主要原因是路径配置错误,例如指定了一个不存在的路径。

为什么显示调度成功,但应用创建失败?

应用资源显示调度成功,但FULLYAPPLIED为false,您可以查看具体的应用资源状态,检查每个集群的appliedMessage字段,以获取APPLY失败的原因。

通常失败的原因是在分发一些尚未支持的应用资源,您可以提交工单寻求帮助。

为什么应用资源在子集群创建成功,但一直未就绪?

应用资源在子集群创建成功,但ALLAVAILABLE为false,您可以查看具体的应用资源状态,检查每个集群的appliedMessage字段,获取应用资源未就绪的原因。

通常像ConfigMap和Secret等资源创建成功即表示就绪。而对于Deployment、StatefulSet等工作负载类的应用资源,其就绪状态可能受到多种因素的影响,例如底层资源不足、子集群调度失败等。您可以连接您的子集群或者使用AMC插件进一步定位排查问题。

相关文章

应用分发概述 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号