ResourceBinding v1alpha2

apiVersion: work.karmada.io/v1alpha2

import "github.com/karmada-io/karmada/pkg/apis/work/v1alpha2"

ResourceBinding

ResourceBinding 表示某种 kubernetes 资源与分发策略之间的绑定关系。


ResourceBindingSpec

ResourceBindingSpec 表示预期的 ResourceBinding。


  • resource (ObjectReference),必选

    Resource 表示要分发的 Kubernetes 资源。

    ObjectReference 包含足够的信息以便定位当前集群所引用的资源。

    • resource.apiVersion(string),必选

      apiVersion表示所引用资源的 API 版本。

    • resource.kind(string),必选

      Kind 表示所引用资源的类别。

    • resource.name(string),必选

      Name 表示所引用资源的名称。

    • resource.namespace(string)

      Namespace 表示所引用资源所在的命名空间。对于非命名空间范围的资源(例如 ClusterRole),不需要指定命名空间。对于命名空间范围的资源,需要指定命名空间。如果未指定命名空间,则资源不在命名空间范围内。

    • resource.resourceVersion(string)

      ResourceVersion 表示所引用资源的内部版本,客户端可用其确定资源的变更时间。

    • resource.uid(string)

      UID 表示所引用资源的唯一标识。

  • clusters ([]TargetCluster)

    Clusters 表示待部署资源的目标成员集群。

    TargetCluster 表示成员集群的标识符。

    • clusters.name(string),必选

      Name 表示目标集群的名称。

    • clusters.replicas(int32)

      Replicas 表示目标集群中的副本。

  • conflictResolution(string)

    ConflictResolution 表示当目标集群中已存在正在分发的资源时,处理潜在冲突的方式。

    默认为 Abort,表示停止分发资源以避免意外覆盖。将原集群资源迁移到 Karmada 时,可设置为 Overwrite。此时,冲突是可预测的,且 Karmada 可通过覆盖来接管资源。

  • failover (FailoverBehavior)

    Failover 表示 Karmada 在故障场景中迁移应用的方式。可直接从所关联的 PropagationPolicy(或 ClusterPropagationPolicy)继承。

    FailoverBehavior 表示应用或集群的故障转移。

    • failover.application (ApplicationFailoverBehavior)

      Application 表示应用的故障转移。如果值为 nil,则禁用故障转移。如果值不为 nil,则 PropagateDeps 应设置为 true,以便依赖项随应用一起迁移。

      ApplicationFailoverBehavior 表示应用的故障转移。

      • failover.application.decisionConditions (DecisionConditions),必选

        DecisionConditions 表示执行故障转移的先决条件。只有满足所有条件,才能执行故障转移。当前条件为 TolerationSeconds(可选)。

        DecisionConditions 表示执行故障转移的先决条件。

        • failover.application.decisionConditions.tolerationSeconds(int32)

          TolerationSeconds 表示应用达到预期状态后,Karmada 在执行故障转移之前应等待的时间。如果未指定等待时间,Karmada 将立即执行故障转移。默认为 300 秒。

      • failover.application.gracePeriodSeconds(int32)

        GracePeriodSeconds 表示从新集群中删除应用之前的最长等待时间(以秒为单位)。仅当 PurgeMode 设置为 Graciously 且默认时长为 600 秒时,才需要设置该字段。如果新群集中的应用无法达到健康状态,Karmada 将在达到最长等待时间后删除应用。取值必须为正整数。

      • failover.application.purgeMode(string)

        PurgeMode 表示原集群中应用的处理方式。取值包括 Immediately、Graciously 和 Never。默认为 Graciously。

  • gracefulEvictionTasks ([]GracefulEvictionTask)

    GracefulEvictionTasks 表示驱逐任务,预期以优雅方式执行驱逐。工作流程如下:1. 一旦控制器(例如 taint-manager)决定从目标集群中驱逐当前 ResourceBinding 或 ClusterResourceBinding 所引用的资源,就会从 Clusters(.spec.Clusters)中删除副本,并构建一个优雅的驱逐任务。

  1. 调度器可以执行重新调度,并可能选择一个替代集群来接管正在驱逐的工作负载(资源)。

  2. 优雅驱逐控制器负责优雅驱逐任务,并在替代集群上的工作负载(资源)可用或超过宽限终止期(默认为 10 分钟)后执行最终删除。

GracefulEvictionTask 表示优雅驱逐任务。

  • gracefulEvictionTasks.fromCluster(string),必选

    FromCluster 表示需要执行驱逐的集群。

  • gracefulEvictionTasks.producer(string),必选

    Producer 表示触发驱逐的控制器。

  • gracefulEvictionTasks.reason(string),必选

    Reason 是一个程序标识符,说明驱逐的原因。生产者可以定义该字段的预期值和含义,以及这些值是否可被视为有保障的 API。取值应该是一个 CamelCase 字符串。此字段不能为空。

  • gracefulEvictionTasks.creationTimestamp (Time)

    CreationTimestamp 是一个时间戳,表示创建对象时服务器上的时间。为避免时间不一致,客户端不得设置此值。它以 RFC3339 形式表示(如 2021-04-25T10:02:10Z),并采用 UTC 时间。

    由系统填充。只读。

    Time 是 time.Time 的包装器,它支持对 YAML 和 JSON 的正确编组。time 包的许多工厂方法提供了包装器。

  • gracefulEvictionTasks.gracePeriodSeconds(int32)

    GracePeriodSeconds 表示对象被删除前的最长等待时间(以秒为单位)。如果新群集中的应用无法达到健康状态,Karmada 将在达到最长等待时间后删除该对象。取值只能为正整数。它不能与 SuppressDeletion 共存。

  • gracefulEvictionTasks.message(string)

    Message 是有关驱逐的详细信息(人类可读消息)。可以是空字符串。

  • gracefulEvictionTasks.replicas(int32)

    Replicas 表示应驱逐的副本数量。对于没有副本的资源类型,忽略该字段。

  • gracefulEvictionTasks.suppressDeletion(boolean)

    SuppressDeletion 表示宽限期将持续存在,直至工具或人工干预为止。它不能与 GracePeriodSeconds 共存。

  • placement (Placement)

    Placement 表示选定群集以及分发资源的规则。

    Placement 表示选定集群的规则。

    • placement.clusterAffinities ([]ClusterAffinityTerm)

      ClusterAffinities表示多个集群组的调度限制(ClusterAffinityTerm 指定每种限制)。

      调度器将按照这些组在规范中出现的顺序逐个评估,不满足调度限制的组将被忽略。除非该组中的所有集群也属于下一个组(同一集群可以属于多个组),否则将不会选择此组中的所有集群。

      如果任何组都不满足调度限制,则调度失败,这意味着不会选择任何集群。

      注意:

      1. ClusterAffinities 不能与 ClusterAffinity 共存。
      2. 如果未同时设置 ClusterAffinities 和 ClusterAffinity,则任何集群都可以作为调度候选集群。

      潜在用例1:本地数据中心的私有集群为主集群组,集群提供商的托管集群是辅助集群组。Karmada 调度器更愿意将工作负载调度到主集群组,只有在主集群组不满足限制(如缺乏资源)的情况下,才会考虑辅助集群组。

      潜在用例2:对于容灾场景,系统管理员可定义主集群组和备份集群组,工作负载将首先调度到主集群组,当主集群组中的集群发生故障(如数据中心断电)时,Karmada 调度器可以将工作负载迁移到备份集群组。

      ClusterAffinityTerm 选择集群。

      • placement.clusterAffinities.affinityName(string),必选

        AffinityName 是集群组的名称。

      • placement.clusterAffinities.clusterNames ([]string)

        ClusterNames 罗列待选择的集群。

      • placement.clusterAffinities.exclude ([]string)

        ExcludedClusters 罗列待忽略的集群。

      • placement.clusterAffinities.fieldSelector (FieldSelector)

        FieldSelector 是一个按字段选择成员集群的过滤器。匹配表达式的键(字段)为 provider、region 或 zone,匹配表达式的运算符为 In 或 NotIn。如果值不为 nil,也未留空,仅选择与此过滤器匹配的集群。

        FieldSelector 是一个字段过滤器。

        • placement.clusterAffinities.fieldSelector.matchExpressions ([][NodeSelectorRequirement](../common-definitions/node-selector-requirement#nodeselectorrequirement))

          字段选择器要求列表。

      • placement.clusterAffinities.labelSelector (LabelSelector)

        LabelSelector 是一个按标签选择成员集群的过滤器。如果值不为 nil,也未留空,仅选择与此过滤器匹配的集群。

  • placement.clusterAffinity (ClusterAffinity)

    ClusterAffinity 表示对某组集群的调度限制。注意:

    1. ClusterAffinity 不能与 ClusterAffinities 共存。
    2. 如果未同时设置 ClusterAffinities 和 ClusterAffinity,则任何集群都可以作为调度候选集群。

    ClusterAffinity 表示用于选择集群的过滤器。

    • placement.clusterAffinity.clusterNames ([]string)

      ClusterNames 罗列待选择的集群。

    • placement.clusterAffinity.exclude ([]string)

      ExcludedClusters 罗列待忽略的集群。

      • placement.clusterAffinity.fieldSelector (FieldSelector)

        FieldSelector 是一个按字段选择成员集群的过滤器。匹配表达式的键(字段)为 provider、region 或 zone,匹配表达式的运算符为 In 或 NotIn。如果值不为 nil,也未留空,仅选择与此过滤器匹配的集群。

        FieldSelector 是一个字段过滤器。

        • placement.clusterAffinity.fieldSelector.matchExpressions ([][NodeSelectorRequirement](../common-definitions/node-selector-requirement#nodeselectorrequirement))

          字段选择器要求列表。

      • placement.clusterAffinity.labelSelector (LabelSelector)

        LabelSelector 是一个按标签选择成员集群的过滤器。如果值不为 nil,也未留空,仅选择与此过滤器匹配的集群。

    • placement.clusterTolerations ([]Toleration)

      ClusterTolerations 表示容忍度。

      附加此容忍度的 Pod 能够容忍任何使用匹配运算符 <operator> 匹配三元组 <key,value,effect> 所得到的污点。

      • placement.clusterTolerations.effect(string)

        Effect 表示要匹配的污点效果。留空表示匹配所有污点效果。如果要设置此字段,允许的值为 NoSchedule、PreferNoSchedule 或 NoExecute。

        枚举值包括:

        • "NoExecute":任何不能容忍该污点的 Pod 都会被驱逐。当前由 NodeController 强制执行。
        • "NoSchedule":如果新 pod 无法容忍该污点,不允许新 pod 调度到节点上,但允许由 Kubelet 调度但不需要调度器启动的所有 pod,并允许节点上已存在的 Pod 继续运行。由调度器强制执行。
        • "PreferNoSchedule":和 TaintEffectNoSchedule 相似,不同的是调度器尽量避免将新 Pod 调度到具有该污点的节点上,除非没有其他节点可调度。由调度器强制执行。
      • placement.clusterTolerations.key(string)

        Key 是容忍度的污点键。留空表示匹配所有污点键。如果键为空,则运算符必须为 Exist,所有值和所有键都会被匹配。

      • placement.clusterTolerations.operator(string)

        Operator 表示一个键与值的关系。有效的运算符包括 Exists 和 Equal。默认为 Equal。Exists 相当于将值设置为通配符,因此一个 Pod 可以容忍特定类别的所有污点。

        枚举值包括:

        • "Equal"
        • "Exists"
      • placement.clusterTolerations.tolerationSeconds(int64)

        TolerationSeconds 表示容忍度容忍污点的时间段(Effect 的取值为 NoExecute,否则忽略此字段)。默认情况下,不设置此字段,表示永远容忍污点(不驱逐)。零和负值将被系统视为 0(立即驱逐)。

      • placement.clusterTolerations.value(string)

        Value 是容忍度匹配到的污点值。如果运算符为 Exists,则值应为空,否则就是一个普通字符串。

    • placement.replicaScheduling (ReplicaSchedulingStrategy)

      ReplicaScheduling 表示将 spec 中规约的副本资源(例如 Deployments、Statefulsets)分发到成员集群时处理副本数量的调度策略。

      ReplicaSchedulingStrategy 表示副本的分配策略。

      • placement.replicaScheduling.replicaDivisionPreference(string)

        当 ReplicaSchedulingType 设置为 Divided 时,由 ReplicaDivisionPreference 确定副本的分配策略。取值包括 Aggregated 和 Weighted。Aggregated:将副本分配给尽可能少的集群,同时考虑集群的资源可用性。Weighted:根据 WeightPreference 按权重分配副本。

      • placement.replicaScheduling.replicaSchedulingType(string)

        ReplicaSchedulingType 确定 karmada 分发资源副本的调度方式。取值包括 Duplicated 和 Divided。Duplicated:将相同的副本从资源复制到每个候选成员群集。Divided:根据有效候选成员集群的数量分配副本,每个集群的副本由 ReplicaDivisionPreference 确定。

      • placement.replicaScheduling.weightPreference (ClusterPreferences)

        WeightPreference 描述每个集群或每组集群的权重。如果 ReplicaDivisionPreference 设置为 Weighted,但 WeightPreference 未设置,调度器将为所有集群设置相同的权重。

        ClusterPreferences 描述每个集群或每组集群的权重。

        • placement.replicaScheduling.weightPreference.dynamicWeight(string)

          DynamicWeight 指生成动态权重列表的因子。如果指定,StaticWeightList 将被忽略。

        • placement.replicaScheduling.weightPreference.staticWeightList ([]StaticClusterWeight)

          StaticWeightList 罗列静态集群权重。

          StaticClusterWeight 定义静态集群权重。

          • placement.replicaScheduling.weightPreference.staticWeightList.targetCluster (ClusterAffinity),必选

            TargetCluster 是用于选择集群的过滤条件。

            ClusterAffinity 是用于选择集群的过滤条件。

            • placement.replicaScheduling.weightPreference.staticWeightList.targetCluster.clusterNames ([]string)

              ClusterNames 罗列待选择的集群。

            • placement.replicaScheduling.weightPreference.staticWeightList.targetCluster.exclude ([]string)

              ExcludedClusters 罗列待忽略的集群。

            • placement.replicaScheduling.weightPreference.staticWeightList.targetCluster.fieldSelector (FieldSelector)

              FieldSelector 是一个按字段选择成员集群的过滤器。匹配表达式的键(字段)为 provider、region 或 zone,匹配表达式的运算符为 In 或 NotIn。如果值不为 nil,也未留空,仅选择与此过滤器匹配的集群。

              FieldSelector 是一个字段过滤器。

              • placement.replicaScheduling.weightPreference.staticWeightList.targetCluster.fieldSelector.matchExpressions ([][NodeSelectorRequirement](../common-definitions/node-selector-requirement#nodeselectorrequirement))

                字段选择器要求列表。

            • placement.replicaScheduling.weightPreference.staticWeightList.targetCluster.labelSelector (LabelSelector)

              LabelSelector 是一个按标签选择成员集群的过滤器。如果值不为 nil,也未留空,仅选择与此过滤器匹配的集群。

          • placement.replicaScheduling.weightPreference.staticWeightList.weight(int64),必选

            Weight表示优先选择 TargetCluster 指定的集群。

    • placement.spreadConstraints ([]SpreadConstraint)

      SpreadConstraints 表示调度约束的列表。

      SpreadConstraint 表示资源分布的约束。

      • placement.spreadConstraints.maxGroups(int32)

        MaxGroups 表示要选择的集群组的最大数量。

      • placement.spreadConstraints.minGroups(int32)

        MinGroups 表示要选择的集群组的最小数量。默认值为 1。

      • placement.spreadConstraints.spreadByField(string)

        SpreadByField 是 Karmada 集群 API 中的字段,该 API 用于将成员集群分到不同集群组。资源将被分发到不同的集群组中。可用的字段包括 cluster、region、zone 和 provider。SpreadByField 不能与 SpreadByLabel 共存。如果两个字段都为空,SpreadByField 默认为 cluster。

      • placement.spreadConstraints.spreadByLabel(string)

        SpreadByLabel 表示用于将成员集群分到不同集群组的标签键。资源将被分发到不同的集群组中。SpreadByLabel 不能与 SpreadByField 共存。

    • propagateDeps(boolean)

      PropagateDeps 表示相关资源是否被自动分发,继承自 PropagationPolicy 或 ClusterPropagationPolicy。默认值为 false。

    • replicaRequirements (ReplicaRequirements)

      ReplicaRequirements 表示每个副本的需求。

      ReplicaRequirements 表示每个副本的需求。

    • replicaRequirements.nodeClaim (NodeClaim)

      NodeClaim 表示每个副本所需的节点声明 HardNodeAffinity、NodeSelector 和 Tolerations。

      NodeClaim 表示每个副本所需的节点声明 HardNodeAffinity、NodeSelector 和 Tolerations。

      • replicaRequirements.nodeClaim.hardNodeAffinity (NodeSelector)

        一个节点选择器可以匹配要调度到一组节点上的一个或多个标签。以节点选择条件形式表示的节点选择器之间是“或”的关系。注意:因为该字段对 Pod 调度有硬性限制,所以此处仅包含 PodSpec.Affinity.NodeAffinity 中 RequiredDuringSchedulingIgnoredDuringExecution。

        一个节点选择器可以匹配要调度到一组节点上的一个或多个标签。以节点选择条件为形式的节点选择器之间是“或”的关系。

        • replicaRequirements.nodeClaim.hardNodeAffinity.nodeSelectorTerms ([]NodeSelectorTerm),必选

          节点选择条件列表。这些条件之间是“或”的关系。

          如果取值为 null 或留空,不会匹配任何对象。这些条件的要求是“与”的关系。TopologySelectorTerm 类型是 NodeSelectorTerm 的子集。

          • replicaRequirements.nodeClaim.hardNodeAffinity.nodeSelectorTerms.matchExpressions ([][NodeSelectorRequirement](../common-definitions/node-selector-requirement#nodeselectorrequirement))

            按节点标签列出的节点选择器需求列表。

          • replicaRequirements.nodeClaim.hardNodeAffinity.nodeSelectorTerms.matchFields ([][NodeSelectorRequirement](../common-definitions/node-selector-requirement#nodeselectorrequirement))

            按节点字段列出的节点选择器需求列表。

      • replicaRequirements.nodeClaim.nodeSelector (map[string]string)

        NodeSelector 取值为 true 时才会认为 Pod 适合在节点上运行。选择器必须与节点的标签匹配,以便在该节点上调度 Pod。

      • replicaRequirements.nodeClaim.tolerations ([]Toleration)

        如果设置了此字段,则作为 Pod 的容忍度。

        附加此容忍度的 Pod 能够容忍任何使用匹配运算符 <operator> 匹配三元组 <key,value,effect> 所得到的污点。

        • replicaRequirements.nodeClaim.tolerations.effect(string)

          Effect 表示要匹配的污点效果。留空表示匹配所有污点效果。如果要设置此字段,允许的值为 NoSchedule、PreferNoSchedule 或 NoExecute。

          枚举值包括:

          • "NoExecute":任何不能容忍该污点的 Pod 都会被驱逐。当前由 NodeController 强制执行。
          • "NoSchedule":如果新 pod 无法容忍该污点,不允许新 pod 调度到节点上,但允许由 Kubelet 调度但不需要调度器启动的所有 pod,并允许节点上已存在的 Pod 继续运行。由调度器强制执行。
          • "PreferNoSchedule":和 TaintEffectNoSchedule 相似,不同的是调度器尽量避免将新 Pod 调度到具有该污点的节点上,除非没有其他节点可调度。由调度器强制执行。
        • replicaRequirements.nodeClaim.tolerations.key(string)

          Key 是容忍度的污点键。留空表示匹配所有污点键。如果键为空,则运算符必须为 Exist,所有值和所有键都会被匹配。

        • replicaRequirements.nodeClaim.tolerations.operator(string)

          Operator 表示一个键与值的关系。有效的运算符为 Exists 和 Equal。默认为 Equal。Exists 相当于将值设置为通配符,因此一个 Pod 可以容忍特定类别的所有污点。

          枚举值包括:

          • "Equal"
          • "Exists"
        • replicaRequirements.nodeClaim.tolerations.tolerationSeconds(int64)

          TolerationSeconds 表示容忍度容忍污点的时间段(Effect 的取值为 NoExecute,否则忽略此字段)。默认情况下,不设置此字段,表示永远容忍污点(不驱逐)。零和负值将被系统视为 0(立即驱逐)。

        • replicaRequirements.nodeClaim.tolerations.value(string)

          Value 是容忍度匹配到的污点值。如果运算符为 Exists,则值应为空,否则就是一个普通字符串。

    • replicaRequirements.resourceRequest (map[string][Quantity](../common-definitions/quantity#quantity))

      ResourceRequest 表示每个副本所需的资源。

    • replicas(int32)

      Replicas 表示引用资源的副本编号。

    • requiredBy ([]BindingSnapshot)

      RequiredBy 表示依赖于引用资源的 Bindings 列表。

      BindingSnapshot 是 ResourceBinding 或 ClusterResourceBinding 的快照。

      • requiredBy.name(string),必选

        Name 表示 Binding 的名称。

      • requiredBy.clusters ([]TargetCluster)

        Clusters 表示计划结果。

        TargetCluster 是成员集群的标识符。

        • requiredBy.clusters.name(string),必选

          Name 是目标集群的名称。

        • requiredBy.clusters.replicas(int32)

          Replicas 表示目标集群中的副本。

      • requiredBy.namespace(string)

        Namespace 表示 Binding 的命名空间,是 ResourceBinding 所必需的。如果未指定命名空间,引用为 ClusterResourceBinding。

    • rescheduleTriggeredAt(Time)

      RescheduleTriggeredAt 是一个时间戳,表示引用资源被触发重新调度的时间。此字段更新时,表示用户手动触发了重新调度,此操作的预期行为是在不参考上次调度结果的情况下进行完全的重新计算。它与 status.lastScheduledTime 字段协同工作,只有当该时间戳晚于 status.lastScheduledTime 中的时间戳时,才会实际执行重新调度,否则将忽略。

      时间戳以 RFC3339 形式表示(如 “2006-01-02T15:04:05Z”),单位为 UTC。

      Time 是 time.Time 的包装器,它支持对 YAML 和 JSON 的正确编组。time 包的许多工厂方法提供了包装器。

    • schedulerName(string)

      SchedulerName 表示要继续调度的调度器,可直接从所关联的 PropagationPolicy(或 ClusterPropagationPolicy)继承。

ResourceBindingStatus

ResourceBindingStatus 表示策略及所引用资源的整体状态。


  • aggregatedStatus ([]AggregatedStatusItem)

    AggregatedStatus 罗列每个成员集群中资源的状态。

    AggregatedStatusItem 表示某个成员集群中资源的状态。

    • aggregatedStatus.clusterName(string),必选

      ClusterName 表示资源所在的成员集群。

    • aggregatedStatus.applied(boolean)

      applied表示 ResourceBinding 或 ClusterResourceBinding 引用的资源是否成功应用到集群中。

    • aggregatedStatus.appliedMessage(string)

      AppliedMessage 是有关应用状态的详细信息(人类可读消息)。通常是应用失败的错误信息。

    • aggregatedStatus.health(string)

      Health 表示当前资源的健康状态。可以设置不同规则来保障不同资源的健康。

    • aggregatedStatus.status (RawExtension)

      Status 反映当前清单的运行状态。

      *RawExtension 用于在外部版本中保存扩展数据。

      要使用此字段,请生成一个字段,在外部、版本化结构中以 RawExtension 作为其类型,在内部结构中以 Object 作为其类型。此外,还需要注册各个插件类型。

      //内部包:

      1. type MyAPIObject struct [
      2. runtime.TypeMeta `json:",inline"`
      3. MyPlugin runtime.Object `json:"myPlugin"`
      4. ]
      5. type PluginA struct [
      6. AOption string `json:"aOption"`
      7. ]

      //外部包:

      1. type MyAPIObject struct [
      2. runtime.TypeMeta `json:",inline"`
      3. MyPlugin runtime.RawExtension `json:"myPlugin"`
      4. ]
      5. type PluginA struct [
      6. AOption string `json:"aOption"`
      7. ]

      //在网络上,JSON 看起来像这样:

      1. [
      2. "kind":"MyAPIObject",
      3. "apiVersion":"v1",
      4. "myPlugin": [
      5. "kind":"PluginA",
      6. "aOption":"foo",
      7. ],
      8. ]

      那么会发生什么?解码首先需要使用 JSON 或 YAML 将序列化数据解组到外部 MyAPIObject 中。这会导致原始 JSON 被存储下来,但不会被解包。下一步是复制(使用 pkg/conversion)到内部结构中。runtime 包的 DefaultScheme 安装了转换函数,它将解析存储在 RawExtension 中的 JSON,将其转换为正确的对象类型,并将其存储在对象中。(TODO:如果对象是未知类型,将创建并存储一个 runtime.Unknown 对象。)*

  • conditions ([]Condition)

    Conditions 包含不同的状况。

    Condition 包含此 API 资源当前状态某个方面的详细信息。

    • conditions.lastTransitionTime (Time),必选

      lastTransitionTime 是最近一次从一种状态转换到另一种状态的时间。这种变化通常出现在下层状况发生变化的时候。如果无法了解下层状况变化,使用 API 字段更改的时间也是可以接受的。

      Time 是 time.Time 的包装器,它支持对 YAML 和 JSON 的正确编组。time 包的许多工厂方法提供了包装器。

    • conditions.message(string),必选

      Message 是有关转换的详细信息(人类可读消息)。可以是空字符串。

    • conditions.reason(string),必选

      reason 是一个程序标识符,表明状况最后一次转换的原因。特定状况类型的生产者可以定义该字段的预期值和含义,以及这些值是否可被视为有保证的 API。取值应该是一个 CamelCase 字符串。此字段不能为空。

    • conditions.status(string),必选

      Status 表示状况的状态。取值为 True、False 或 Unknown。

    • conditions.type(string),必选

      type 表示 CamelCase 或 foo.example.com/CamelCase 形式的状况类型。

    • conditions.observedGeneration(int64)

      observedGeneration表示设置状况时所基于的 .metadata.generation。例如,如果 .metadata.generation 为 12,但 .status.conditions[x].observedGeneration 为 9,则状况相对于实例的当前状态已过期。

  • lastScheduledTime (Time)

    LastScheduledTime 表示调度器上一次调度完成的时间戳。它以 RFC3339 形式表示(如 “2006-01-02T15:04:05Z”),单位为 UTC。

    Time 是 time.Time 的包装器,它支持对 YAML 和 JSON 的正确编组。time 包的许多工厂方法提供了包装器。

  • schedulerObservedGeneration(int64)

    SchedulerObservedGeneration 表示调度器观测到的元数据(.metadata.generation)。如果该字段的值比 .metadata.genation 生成的元数据少,则表示调度器尚未确认调度结果或尚未完成调度。

  • schedulerObservingAffinityName(string)

    SchedulerObservedAffinityName 表示亲和性规则的名称,是当前调度的基础。

ResourceBindingList

ResourceBindingList 中包含 ResourceBinding 列表。


  • apiVersion: work.karmada.io/v1alpha2

  • kind: ResourceBindingList

  • metadata (ListMeta)

  • items ([][ResourceBinding](../work-resources/resource-binding-v1alpha2#resourcebinding)),必选

    Items 表示 ResourceBinding 列表。

操作


get:查询指定的 ResourceBinding

HTTP 请求

GET /apis/work.karmada.io/v1alpha2/namespaces/{namespace}/resourcebindings/{name}

参数

  • name路径参数):string,必选

    ResourceBinding名称

  • namespace路径参数):string,必选

    namespace

  • pretty查询参数):string

    pretty

响应

200 (ResourceBinding): OK

get:查询指定 ResourceBinding 的状态

HTTP 请求

GET /apis/work.karmada.io/v1alpha2/namespaces/{namespace}/resourcebindings/{name}/status

参数

  • name路径参数):string,必选

    ResourceBinding 名称

  • namespace路径参数):string,必选

    namespace

  • pretty查询参数):string

    pretty

响应

200 (ResourceBinding): OK

list:查询全部 ResourceBinding

HTTP 请求

GET /apis/work.karmada.io/v1alpha2/namespaces/{namespace}/resourcebindings

参数

响应

200 (ResourceBindingList): OK

list:查询全部 ResourceBinding

HTTP 请求

GET /apis/work.karmada.io/v1alpha2/resourcebindings

参数

响应

200 (ResourceBindingList): OK

create:创建一个 ResourceBinding

HTTP 请求

POST /apis/work.karmada.io/v1alpha2/namespaces/{namespace}/resourcebindings

参数

响应

200 (ResourceBinding): OK

201 (ResourceBinding): Created

202 (ResourceBinding): Accepted

update:更新指定的 ResourceBinding

HTTP 请求

PUT /apis/work.karmada.io/v1alpha2/namespaces/{namespace}/resourcebindings/{name}

参数

  • name路径参数):string,必选

    ResourceBinding名称

  • namespace路径参数):string,必选

    namespace

  • body: ResourceBinding,必选

  • dryRun查询参数):string

    dryRun

  • fieldManager查询参数):string

    fieldManager

  • fieldValidation查询参数):string

    fieldValidation

  • pretty查询参数):string

    pretty

响应

200 (ResourceBinding): OK

201 (ResourceBinding): Created

update:更新指定 ResourceBinding 的状态

HTTP 请求

PUT /apis/work.karmada.io/v1alpha2/namespaces/{namespace}/resourcebindings/{name}/status

参数

  • name路径参数):string,必选

    ResourceBinding名称

  • namespace路径参数):string,必选

    namespace

  • body: ResourceBinding,必选

  • dryRun查询参数):string

    dryRun

  • fieldManager查询参数):string

    fieldManager

  • fieldValidation查询参数):string

    fieldValidation

  • pretty查询参数):string

    pretty

响应

200 (ResourceBinding): OK

201 (ResourceBinding): Created

patch:更新指定 ResourceBinding 的部分信息

HTTP 请求

PATCH /apis/work.karmada.io/v1alpha2/namespaces/{namespace}/resourcebindings/{name}

参数

  • name路径参数):string,必选

    ResourceBinding 名称

  • namespace路径参数):string,必选

    namespace

  • body: Patch,必选

  • dryRun查询参数):string

    dryRun

  • fieldManager查询参数):string

    fieldManager

  • fieldValidation查询参数):string

    fieldValidation

  • force查询参数):boolean

    force

  • pretty查询参数):string

    pretty

响应

200 (ResourceBinding): OK

201 (ResourceBinding): Created

patch:更新指定 ResourceBinding 状态的部分信息

HTTP 请求

PATCH /apis/work.karmada.io/v1alpha2/namespaces/{namespace}/resourcebindings/{name}/status

参数

  • name路径参数):string,必选

    ResourceBinding 名称

  • namespace路径参数):string,必选

    namespace

  • body: Patch,必选

  • dryRun查询参数):string

    dryRun

  • fieldManager查询参数):string

    fieldManager

  • fieldValidation查询参数):string

    fieldValidation

  • force查询参数):boolean

    force

  • pretty查询参数):string

    pretty

响应

200 (ResourceBinding): OK

201 (ResourceBinding): Created

delete:删除一个 ResourceBinding

HTTP 请求

DELETE /apis/work.karmada.io/v1alpha2/namespaces/{namespace}/resourcebindings/{name}

参数

  • name路径参数):string,必选

    ResourceBinding名称

  • namespace路径参数):string,必选

    namespace

  • body: DeleteOptions

  • dryRun查询参数):string

    dryRun

  • gracePeriodSeconds查询参数):integer

    gracePeriodSeconds

  • pretty查询参数):string

    pretty

  • propagationPolicy查询参数):string

    propagationPolicy

响应

200 (Status): OK

202 (Status): Accepted

deletecollection:删除 ResourceBinding 的集合

HTTP 请求

DELETE /apis/work.karmada.io/v1alpha2/namespaces/{namespace}/resourcebindings

参数

响应

200 (Status): OK