Simply OrderedClusterAffinities API names
Signed-off-by: RainbowMango <qdurenhongcai@gmail.com>
This commit is contained in:
parent
d21d57d3f5
commit
6aa3ffd6cf
|
@ -15061,6 +15061,44 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"com.github.karmada-io.karmada.pkg.apis.policy.v1alpha1.ClusterAffinityTerm": {
|
||||||
|
"description": "ClusterAffinityTerm selects a set of cluster.",
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"affinityName"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"affinityName": {
|
||||||
|
"description": "AffinityName is the name of the cluster group.",
|
||||||
|
"type": "string",
|
||||||
|
"default": ""
|
||||||
|
},
|
||||||
|
"clusterNames": {
|
||||||
|
"description": "ClusterNames is the list of clusters to be selected.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string",
|
||||||
|
"default": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"exclude": {
|
||||||
|
"description": "ExcludedClusters is the list of clusters to be ignored.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string",
|
||||||
|
"default": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"fieldSelector": {
|
||||||
|
"description": "FieldSelector is a filter to select member clusters by fields. If non-nil and non-empty, only the clusters match this filter will be selected.",
|
||||||
|
"$ref": "#/definitions/com.github.karmada-io.karmada.pkg.apis.policy.v1alpha1.FieldSelector"
|
||||||
|
},
|
||||||
|
"labelSelector": {
|
||||||
|
"description": "LabelSelector is a filter to select member clusters by labels. If non-nil and non-empty, only the clusters match this filter will be selected.",
|
||||||
|
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"com.github.karmada-io.karmada.pkg.apis.policy.v1alpha1.ClusterOverridePolicy": {
|
"com.github.karmada-io.karmada.pkg.apis.policy.v1alpha1.ClusterOverridePolicy": {
|
||||||
"description": "ClusterOverridePolicy represents the cluster-wide policy that overrides a group of resources to one or more clusters.",
|
"description": "ClusterOverridePolicy represents the cluster-wide policy that overrides a group of resources to one or more clusters.",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
|
@ -15480,51 +15518,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"com.github.karmada-io.karmada.pkg.apis.policy.v1alpha1.OrderedClusterAffinityTerm": {
|
|
||||||
"description": "OrderedClusterAffinityTerm selects a set of cluster and indicates the order that Karmada scheduler should inspect with.",
|
|
||||||
"type": "object",
|
|
||||||
"required": [
|
|
||||||
"affinityName",
|
|
||||||
"order"
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"affinityName": {
|
|
||||||
"description": "AffinityName is the name of the cluster group.",
|
|
||||||
"type": "string",
|
|
||||||
"default": ""
|
|
||||||
},
|
|
||||||
"clusterNames": {
|
|
||||||
"description": "ClusterNames is the list of clusters to be selected.",
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "string",
|
|
||||||
"default": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"exclude": {
|
|
||||||
"description": "ExcludedClusters is the list of clusters to be ignored.",
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "string",
|
|
||||||
"default": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"fieldSelector": {
|
|
||||||
"description": "FieldSelector is a filter to select member clusters by fields. If non-nil and non-empty, only the clusters match this filter will be selected.",
|
|
||||||
"$ref": "#/definitions/com.github.karmada-io.karmada.pkg.apis.policy.v1alpha1.FieldSelector"
|
|
||||||
},
|
|
||||||
"labelSelector": {
|
|
||||||
"description": "LabelSelector is a filter to select member clusters by labels. If non-nil and non-empty, only the clusters match this filter will be selected.",
|
|
||||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"
|
|
||||||
},
|
|
||||||
"order": {
|
|
||||||
"description": "Order of the cluster group that Karmada scheduler should inspect with, in the range 1-100.",
|
|
||||||
"type": "integer",
|
|
||||||
"format": "int32",
|
|
||||||
"default": 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"com.github.karmada-io.karmada.pkg.apis.policy.v1alpha1.OverridePolicy": {
|
"com.github.karmada-io.karmada.pkg.apis.policy.v1alpha1.OverridePolicy": {
|
||||||
"description": "OverridePolicy represents the policy that overrides a group of resources to one or more clusters.",
|
"description": "OverridePolicy represents the policy that overrides a group of resources to one or more clusters.",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
|
@ -15684,7 +15677,7 @@
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"clusterAffinity": {
|
"clusterAffinity": {
|
||||||
"description": "ClusterAffinity represents scheduling restrictions to a certain set of clusters. If not set, any cluster can be scheduling candidate.",
|
"description": "ClusterAffinity represents scheduling restrictions to a certain set of clusters. Note:\n 1. ClusterAffinity can not co-exist with ClusterAffinities.\n 2. If both ClusterAffinity and ClusterAffinities are not set, any cluster\n can be scheduling candidates.",
|
||||||
"$ref": "#/definitions/com.github.karmada-io.karmada.pkg.apis.policy.v1alpha1.ClusterAffinity"
|
"$ref": "#/definitions/com.github.karmada-io.karmada.pkg.apis.policy.v1alpha1.ClusterAffinity"
|
||||||
},
|
},
|
||||||
"clusterTolerations": {
|
"clusterTolerations": {
|
||||||
|
@ -15696,11 +15689,11 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"orderedClusterAffinities": {
|
"orderedClusterAffinities": {
|
||||||
"description": "OrderedClusterAffinities represents the scheduling order among multiple set of clusters that indicated by OrderedClusterAffinityTerm. Each term should have a unique order among all terms.\n\nThe scheduler will evaluate these groups one by one in strict order, the group that does not satisfy scheduling restrictions will be ignored that means all clusters in this group will not be selected unless it also belongs to the next group(a cluster could belong to multiple groups).\n\nIf none of the groups satisfy the scheduling restrictions, then scheduling fails, which means no cluster will be selected.\n\nNote: OrderedClusterAffinities can not co-exist with ClusterAffinity.\n\nPotential use case 1: The private clusters in the local data center could be the main group, and the managed clusters provided by cluster providers could be the secondary group. So that the Karmada scheduler would prefer to schedule workloads to the main group and the second group will only be considered in case of the main group does not satisfy restrictions(like, lack of resources).\n\nPotential use case 2: For the disaster recovery scenario, the clusters could be organized to primary and backup groups, the workloads would be scheduled to primary clusters firstly, and when primary cluster fails(like data center power off), Karmada scheduler could migrate workloads to the backup clusters.",
|
"description": "ClusterAffinities represents scheduling restrictions to multiple cluster groups that indicated by ClusterAffinityTerm.\n\nThe scheduler will evaluate these groups one by one in the order they appear in the spec, the group that does not satisfy scheduling restrictions will be ignored which means all clusters in this group will not be selected unless it also belongs to the next group(a cluster could belong to multiple groups).\n\nIf none of the groups satisfy the scheduling restrictions, then scheduling fails, which means no cluster will be selected.\n\nNote:\n 1. ClusterAffinities can not co-exist with ClusterAffinity.\n 2. If both ClusterAffinity and ClusterAffinities are not set, any cluster\n can be scheduling candidates.\n\nPotential use case 1: The private clusters in the local data center could be the main group, and the managed clusters provided by cluster providers could be the secondary group. So that the Karmada scheduler would prefer to schedule workloads to the main group and the second group will only be considered in case of the main group does not satisfy restrictions(like, lack of resources).\n\nPotential use case 2: For the disaster recovery scenario, the clusters could be organized to primary and backup groups, the workloads would be scheduled to primary clusters firstly, and when primary cluster fails(like data center power off), Karmada scheduler could migrate workloads to the backup clusters.",
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
"default": {},
|
"default": {},
|
||||||
"$ref": "#/definitions/com.github.karmada-io.karmada.pkg.apis.policy.v1alpha1.OrderedClusterAffinityTerm"
|
"$ref": "#/definitions/com.github.karmada-io.karmada.pkg.apis.policy.v1alpha1.ClusterAffinityTerm"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"replicaScheduling": {
|
"replicaScheduling": {
|
||||||
|
|
|
@ -66,9 +66,11 @@ spec:
|
||||||
propagate resources.
|
propagate resources.
|
||||||
properties:
|
properties:
|
||||||
clusterAffinity:
|
clusterAffinity:
|
||||||
description: ClusterAffinity represents scheduling restrictions
|
description: 'ClusterAffinity represents scheduling restrictions
|
||||||
to a certain set of clusters. If not set, any cluster can be
|
to a certain set of clusters. Note: 1. ClusterAffinity can not
|
||||||
scheduling candidate.
|
co-exist with ClusterAffinities. 2. If both ClusterAffinity
|
||||||
|
and ClusterAffinities are not set, any cluster can be scheduling
|
||||||
|
candidates.'
|
||||||
properties:
|
properties:
|
||||||
clusterNames:
|
clusterNames:
|
||||||
description: ClusterNames is the list of clusters to be selected.
|
description: ClusterNames is the list of clusters to be selected.
|
||||||
|
@ -210,17 +212,18 @@ spec:
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
orderedClusterAffinities:
|
orderedClusterAffinities:
|
||||||
description: "OrderedClusterAffinities represents the scheduling
|
description: "ClusterAffinities represents scheduling restrictions
|
||||||
order among multiple set of clusters that indicated by OrderedClusterAffinityTerm.
|
to multiple cluster groups that indicated by ClusterAffinityTerm.
|
||||||
Each term should have a unique order among all terms. \n The
|
\n The scheduler will evaluate these groups one by one in the
|
||||||
scheduler will evaluate these groups one by one in strict order,
|
order they appear in the spec, the group that does not satisfy
|
||||||
the group that does not satisfy scheduling restrictions will
|
scheduling restrictions will be ignored which means all clusters
|
||||||
be ignored that means all clusters in this group will not be
|
in this group will not be selected unless it also belongs to
|
||||||
selected unless it also belongs to the next group(a cluster
|
the next group(a cluster could belong to multiple groups). \n
|
||||||
could belong to multiple groups). \n If none of the groups satisfy
|
If none of the groups satisfy the scheduling restrictions, then
|
||||||
the scheduling restrictions, then scheduling fails, which means
|
scheduling fails, which means no cluster will be selected. \n
|
||||||
no cluster will be selected. \n Note: OrderedClusterAffinities
|
Note: 1. ClusterAffinities can not co-exist with ClusterAffinity.
|
||||||
can not co-exist with ClusterAffinity. \n Potential use case
|
2. If both ClusterAffinity and ClusterAffinities are not set,
|
||||||
|
any cluster can be scheduling candidates. \n Potential use case
|
||||||
1: The private clusters in the local data center could be the
|
1: The private clusters in the local data center could be the
|
||||||
main group, and the managed clusters provided by cluster providers
|
main group, and the managed clusters provided by cluster providers
|
||||||
could be the secondary group. So that the Karmada scheduler
|
could be the secondary group. So that the Karmada scheduler
|
||||||
|
@ -233,9 +236,7 @@ spec:
|
||||||
cluster fails(like data center power off), Karmada scheduler
|
cluster fails(like data center power off), Karmada scheduler
|
||||||
could migrate workloads to the backup clusters."
|
could migrate workloads to the backup clusters."
|
||||||
items:
|
items:
|
||||||
description: OrderedClusterAffinityTerm selects a set of cluster
|
description: ClusterAffinityTerm selects a set of cluster.
|
||||||
and indicates the order that Karmada scheduler should inspect
|
|
||||||
with.
|
|
||||||
properties:
|
properties:
|
||||||
affinityName:
|
affinityName:
|
||||||
description: AffinityName is the name of the cluster group.
|
description: AffinityName is the name of the cluster group.
|
||||||
|
@ -338,14 +339,8 @@ spec:
|
||||||
contains only "value". The requirements are ANDed.
|
contains only "value". The requirements are ANDed.
|
||||||
type: object
|
type: object
|
||||||
type: object
|
type: object
|
||||||
order:
|
|
||||||
description: Order of the cluster group that Karmada scheduler
|
|
||||||
should inspect with, in the range 1-100.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
required:
|
required:
|
||||||
- affinityName
|
- affinityName
|
||||||
- order
|
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
replicaScheduling:
|
replicaScheduling:
|
||||||
|
|
|
@ -62,9 +62,11 @@ spec:
|
||||||
propagate resources.
|
propagate resources.
|
||||||
properties:
|
properties:
|
||||||
clusterAffinity:
|
clusterAffinity:
|
||||||
description: ClusterAffinity represents scheduling restrictions
|
description: 'ClusterAffinity represents scheduling restrictions
|
||||||
to a certain set of clusters. If not set, any cluster can be
|
to a certain set of clusters. Note: 1. ClusterAffinity can not
|
||||||
scheduling candidate.
|
co-exist with ClusterAffinities. 2. If both ClusterAffinity
|
||||||
|
and ClusterAffinities are not set, any cluster can be scheduling
|
||||||
|
candidates.'
|
||||||
properties:
|
properties:
|
||||||
clusterNames:
|
clusterNames:
|
||||||
description: ClusterNames is the list of clusters to be selected.
|
description: ClusterNames is the list of clusters to be selected.
|
||||||
|
@ -206,17 +208,18 @@ spec:
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
orderedClusterAffinities:
|
orderedClusterAffinities:
|
||||||
description: "OrderedClusterAffinities represents the scheduling
|
description: "ClusterAffinities represents scheduling restrictions
|
||||||
order among multiple set of clusters that indicated by OrderedClusterAffinityTerm.
|
to multiple cluster groups that indicated by ClusterAffinityTerm.
|
||||||
Each term should have a unique order among all terms. \n The
|
\n The scheduler will evaluate these groups one by one in the
|
||||||
scheduler will evaluate these groups one by one in strict order,
|
order they appear in the spec, the group that does not satisfy
|
||||||
the group that does not satisfy scheduling restrictions will
|
scheduling restrictions will be ignored which means all clusters
|
||||||
be ignored that means all clusters in this group will not be
|
in this group will not be selected unless it also belongs to
|
||||||
selected unless it also belongs to the next group(a cluster
|
the next group(a cluster could belong to multiple groups). \n
|
||||||
could belong to multiple groups). \n If none of the groups satisfy
|
If none of the groups satisfy the scheduling restrictions, then
|
||||||
the scheduling restrictions, then scheduling fails, which means
|
scheduling fails, which means no cluster will be selected. \n
|
||||||
no cluster will be selected. \n Note: OrderedClusterAffinities
|
Note: 1. ClusterAffinities can not co-exist with ClusterAffinity.
|
||||||
can not co-exist with ClusterAffinity. \n Potential use case
|
2. If both ClusterAffinity and ClusterAffinities are not set,
|
||||||
|
any cluster can be scheduling candidates. \n Potential use case
|
||||||
1: The private clusters in the local data center could be the
|
1: The private clusters in the local data center could be the
|
||||||
main group, and the managed clusters provided by cluster providers
|
main group, and the managed clusters provided by cluster providers
|
||||||
could be the secondary group. So that the Karmada scheduler
|
could be the secondary group. So that the Karmada scheduler
|
||||||
|
@ -229,9 +232,7 @@ spec:
|
||||||
cluster fails(like data center power off), Karmada scheduler
|
cluster fails(like data center power off), Karmada scheduler
|
||||||
could migrate workloads to the backup clusters."
|
could migrate workloads to the backup clusters."
|
||||||
items:
|
items:
|
||||||
description: OrderedClusterAffinityTerm selects a set of cluster
|
description: ClusterAffinityTerm selects a set of cluster.
|
||||||
and indicates the order that Karmada scheduler should inspect
|
|
||||||
with.
|
|
||||||
properties:
|
properties:
|
||||||
affinityName:
|
affinityName:
|
||||||
description: AffinityName is the name of the cluster group.
|
description: AffinityName is the name of the cluster group.
|
||||||
|
@ -334,14 +335,8 @@ spec:
|
||||||
contains only "value". The requirements are ANDed.
|
contains only "value". The requirements are ANDed.
|
||||||
type: object
|
type: object
|
||||||
type: object
|
type: object
|
||||||
order:
|
|
||||||
description: Order of the cluster group that Karmada scheduler
|
|
||||||
should inspect with, in the range 1-100.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
required:
|
required:
|
||||||
- affinityName
|
- affinityName
|
||||||
- order
|
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
replicaScheduling:
|
replicaScheduling:
|
||||||
|
|
|
@ -329,9 +329,11 @@ spec:
|
||||||
propagate resources.
|
propagate resources.
|
||||||
properties:
|
properties:
|
||||||
clusterAffinity:
|
clusterAffinity:
|
||||||
description: ClusterAffinity represents scheduling restrictions
|
description: 'ClusterAffinity represents scheduling restrictions
|
||||||
to a certain set of clusters. If not set, any cluster can be
|
to a certain set of clusters. Note: 1. ClusterAffinity can not
|
||||||
scheduling candidate.
|
co-exist with ClusterAffinities. 2. If both ClusterAffinity
|
||||||
|
and ClusterAffinities are not set, any cluster can be scheduling
|
||||||
|
candidates.'
|
||||||
properties:
|
properties:
|
||||||
clusterNames:
|
clusterNames:
|
||||||
description: ClusterNames is the list of clusters to be selected.
|
description: ClusterNames is the list of clusters to be selected.
|
||||||
|
@ -473,17 +475,18 @@ spec:
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
orderedClusterAffinities:
|
orderedClusterAffinities:
|
||||||
description: "OrderedClusterAffinities represents the scheduling
|
description: "ClusterAffinities represents scheduling restrictions
|
||||||
order among multiple set of clusters that indicated by OrderedClusterAffinityTerm.
|
to multiple cluster groups that indicated by ClusterAffinityTerm.
|
||||||
Each term should have a unique order among all terms. \n The
|
\n The scheduler will evaluate these groups one by one in the
|
||||||
scheduler will evaluate these groups one by one in strict order,
|
order they appear in the spec, the group that does not satisfy
|
||||||
the group that does not satisfy scheduling restrictions will
|
scheduling restrictions will be ignored which means all clusters
|
||||||
be ignored that means all clusters in this group will not be
|
in this group will not be selected unless it also belongs to
|
||||||
selected unless it also belongs to the next group(a cluster
|
the next group(a cluster could belong to multiple groups). \n
|
||||||
could belong to multiple groups). \n If none of the groups satisfy
|
If none of the groups satisfy the scheduling restrictions, then
|
||||||
the scheduling restrictions, then scheduling fails, which means
|
scheduling fails, which means no cluster will be selected. \n
|
||||||
no cluster will be selected. \n Note: OrderedClusterAffinities
|
Note: 1. ClusterAffinities can not co-exist with ClusterAffinity.
|
||||||
can not co-exist with ClusterAffinity. \n Potential use case
|
2. If both ClusterAffinity and ClusterAffinities are not set,
|
||||||
|
any cluster can be scheduling candidates. \n Potential use case
|
||||||
1: The private clusters in the local data center could be the
|
1: The private clusters in the local data center could be the
|
||||||
main group, and the managed clusters provided by cluster providers
|
main group, and the managed clusters provided by cluster providers
|
||||||
could be the secondary group. So that the Karmada scheduler
|
could be the secondary group. So that the Karmada scheduler
|
||||||
|
@ -496,9 +499,7 @@ spec:
|
||||||
cluster fails(like data center power off), Karmada scheduler
|
cluster fails(like data center power off), Karmada scheduler
|
||||||
could migrate workloads to the backup clusters."
|
could migrate workloads to the backup clusters."
|
||||||
items:
|
items:
|
||||||
description: OrderedClusterAffinityTerm selects a set of cluster
|
description: ClusterAffinityTerm selects a set of cluster.
|
||||||
and indicates the order that Karmada scheduler should inspect
|
|
||||||
with.
|
|
||||||
properties:
|
properties:
|
||||||
affinityName:
|
affinityName:
|
||||||
description: AffinityName is the name of the cluster group.
|
description: AffinityName is the name of the cluster group.
|
||||||
|
@ -601,14 +602,8 @@ spec:
|
||||||
contains only "value". The requirements are ANDed.
|
contains only "value". The requirements are ANDed.
|
||||||
type: object
|
type: object
|
||||||
type: object
|
type: object
|
||||||
order:
|
|
||||||
description: Order of the cluster group that Karmada scheduler
|
|
||||||
should inspect with, in the range 1-100.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
required:
|
required:
|
||||||
- affinityName
|
- affinityName
|
||||||
- order
|
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
replicaScheduling:
|
replicaScheduling:
|
||||||
|
|
|
@ -329,9 +329,11 @@ spec:
|
||||||
propagate resources.
|
propagate resources.
|
||||||
properties:
|
properties:
|
||||||
clusterAffinity:
|
clusterAffinity:
|
||||||
description: ClusterAffinity represents scheduling restrictions
|
description: 'ClusterAffinity represents scheduling restrictions
|
||||||
to a certain set of clusters. If not set, any cluster can be
|
to a certain set of clusters. Note: 1. ClusterAffinity can not
|
||||||
scheduling candidate.
|
co-exist with ClusterAffinities. 2. If both ClusterAffinity
|
||||||
|
and ClusterAffinities are not set, any cluster can be scheduling
|
||||||
|
candidates.'
|
||||||
properties:
|
properties:
|
||||||
clusterNames:
|
clusterNames:
|
||||||
description: ClusterNames is the list of clusters to be selected.
|
description: ClusterNames is the list of clusters to be selected.
|
||||||
|
@ -473,17 +475,18 @@ spec:
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
orderedClusterAffinities:
|
orderedClusterAffinities:
|
||||||
description: "OrderedClusterAffinities represents the scheduling
|
description: "ClusterAffinities represents scheduling restrictions
|
||||||
order among multiple set of clusters that indicated by OrderedClusterAffinityTerm.
|
to multiple cluster groups that indicated by ClusterAffinityTerm.
|
||||||
Each term should have a unique order among all terms. \n The
|
\n The scheduler will evaluate these groups one by one in the
|
||||||
scheduler will evaluate these groups one by one in strict order,
|
order they appear in the spec, the group that does not satisfy
|
||||||
the group that does not satisfy scheduling restrictions will
|
scheduling restrictions will be ignored which means all clusters
|
||||||
be ignored that means all clusters in this group will not be
|
in this group will not be selected unless it also belongs to
|
||||||
selected unless it also belongs to the next group(a cluster
|
the next group(a cluster could belong to multiple groups). \n
|
||||||
could belong to multiple groups). \n If none of the groups satisfy
|
If none of the groups satisfy the scheduling restrictions, then
|
||||||
the scheduling restrictions, then scheduling fails, which means
|
scheduling fails, which means no cluster will be selected. \n
|
||||||
no cluster will be selected. \n Note: OrderedClusterAffinities
|
Note: 1. ClusterAffinities can not co-exist with ClusterAffinity.
|
||||||
can not co-exist with ClusterAffinity. \n Potential use case
|
2. If both ClusterAffinity and ClusterAffinities are not set,
|
||||||
|
any cluster can be scheduling candidates. \n Potential use case
|
||||||
1: The private clusters in the local data center could be the
|
1: The private clusters in the local data center could be the
|
||||||
main group, and the managed clusters provided by cluster providers
|
main group, and the managed clusters provided by cluster providers
|
||||||
could be the secondary group. So that the Karmada scheduler
|
could be the secondary group. So that the Karmada scheduler
|
||||||
|
@ -496,9 +499,7 @@ spec:
|
||||||
cluster fails(like data center power off), Karmada scheduler
|
cluster fails(like data center power off), Karmada scheduler
|
||||||
could migrate workloads to the backup clusters."
|
could migrate workloads to the backup clusters."
|
||||||
items:
|
items:
|
||||||
description: OrderedClusterAffinityTerm selects a set of cluster
|
description: ClusterAffinityTerm selects a set of cluster.
|
||||||
and indicates the order that Karmada scheduler should inspect
|
|
||||||
with.
|
|
||||||
properties:
|
properties:
|
||||||
affinityName:
|
affinityName:
|
||||||
description: AffinityName is the name of the cluster group.
|
description: AffinityName is the name of the cluster group.
|
||||||
|
@ -601,14 +602,8 @@ spec:
|
||||||
contains only "value". The requirements are ANDed.
|
contains only "value". The requirements are ANDed.
|
||||||
type: object
|
type: object
|
||||||
type: object
|
type: object
|
||||||
order:
|
|
||||||
description: Order of the cluster group that Karmada scheduler
|
|
||||||
should inspect with, in the range 1-100.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
required:
|
required:
|
||||||
- affinityName
|
- affinityName
|
||||||
- order
|
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
replicaScheduling:
|
replicaScheduling:
|
||||||
|
|
|
@ -146,23 +146,29 @@ type FieldSelector struct {
|
||||||
// Placement represents the rule for select clusters.
|
// Placement represents the rule for select clusters.
|
||||||
type Placement struct {
|
type Placement struct {
|
||||||
// ClusterAffinity represents scheduling restrictions to a certain set of clusters.
|
// ClusterAffinity represents scheduling restrictions to a certain set of clusters.
|
||||||
// If not set, any cluster can be scheduling candidate.
|
// Note:
|
||||||
|
// 1. ClusterAffinity can not co-exist with ClusterAffinities.
|
||||||
|
// 2. If both ClusterAffinity and ClusterAffinities are not set, any cluster
|
||||||
|
// can be scheduling candidates.
|
||||||
// +optional
|
// +optional
|
||||||
ClusterAffinity *ClusterAffinity `json:"clusterAffinity,omitempty"`
|
ClusterAffinity *ClusterAffinity `json:"clusterAffinity,omitempty"`
|
||||||
|
|
||||||
// OrderedClusterAffinities represents the scheduling order among multiple
|
// ClusterAffinities represents scheduling restrictions to multiple cluster
|
||||||
// set of clusters that indicated by OrderedClusterAffinityTerm.
|
// groups that indicated by ClusterAffinityTerm.
|
||||||
// Each term should have a unique order among all terms.
|
|
||||||
//
|
//
|
||||||
// The scheduler will evaluate these groups one by one in strict order, the
|
// The scheduler will evaluate these groups one by one in the order they
|
||||||
// group that does not satisfy scheduling restrictions will be ignored that
|
// appear in the spec, the group that does not satisfy scheduling restrictions
|
||||||
// means all clusters in this group will not be selected unless it also
|
// will be ignored which means all clusters in this group will not be selected
|
||||||
// belongs to the next group(a cluster could belong to multiple groups).
|
// unless it also belongs to the next group(a cluster could belong to multiple
|
||||||
|
// groups).
|
||||||
//
|
//
|
||||||
// If none of the groups satisfy the scheduling restrictions, then scheduling
|
// If none of the groups satisfy the scheduling restrictions, then scheduling
|
||||||
// fails, which means no cluster will be selected.
|
// fails, which means no cluster will be selected.
|
||||||
//
|
//
|
||||||
// Note: OrderedClusterAffinities can not co-exist with ClusterAffinity.
|
// Note:
|
||||||
|
// 1. ClusterAffinities can not co-exist with ClusterAffinity.
|
||||||
|
// 2. If both ClusterAffinity and ClusterAffinities are not set, any cluster
|
||||||
|
// can be scheduling candidates.
|
||||||
//
|
//
|
||||||
// Potential use case 1:
|
// Potential use case 1:
|
||||||
// The private clusters in the local data center could be the main group, and
|
// The private clusters in the local data center could be the main group, and
|
||||||
|
@ -178,7 +184,7 @@ type Placement struct {
|
||||||
// Karmada scheduler could migrate workloads to the backup clusters.
|
// Karmada scheduler could migrate workloads to the backup clusters.
|
||||||
//
|
//
|
||||||
// +optional
|
// +optional
|
||||||
OrderedClusterAffinities []OrderedClusterAffinityTerm `json:"orderedClusterAffinities,omitempty"`
|
ClusterAffinities []ClusterAffinityTerm `json:"orderedClusterAffinities,omitempty"`
|
||||||
|
|
||||||
// ClusterTolerations represents the tolerations.
|
// ClusterTolerations represents the tolerations.
|
||||||
// +optional
|
// +optional
|
||||||
|
@ -255,17 +261,12 @@ type ClusterAffinity struct {
|
||||||
ExcludeClusters []string `json:"exclude,omitempty"`
|
ExcludeClusters []string `json:"exclude,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// OrderedClusterAffinityTerm selects a set of cluster and indicates the order
|
// ClusterAffinityTerm selects a set of cluster.
|
||||||
// that Karmada scheduler should inspect with.
|
type ClusterAffinityTerm struct {
|
||||||
type OrderedClusterAffinityTerm struct {
|
|
||||||
// AffinityName is the name of the cluster group.
|
// AffinityName is the name of the cluster group.
|
||||||
// +required
|
// +required
|
||||||
AffinityName string `json:"affinityName"`
|
AffinityName string `json:"affinityName"`
|
||||||
|
|
||||||
// Order of the cluster group that Karmada scheduler should inspect with, in the range 1-100.
|
|
||||||
// +required
|
|
||||||
Order int32 `json:"order"`
|
|
||||||
|
|
||||||
ClusterAffinity `json:",inline"`
|
ClusterAffinity `json:",inline"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,23 @@ func (in *ClusterAffinity) DeepCopy() *ClusterAffinity {
|
||||||
return out
|
return out
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ClusterAffinityTerm) DeepCopyInto(out *ClusterAffinityTerm) {
|
||||||
|
*out = *in
|
||||||
|
in.ClusterAffinity.DeepCopyInto(&out.ClusterAffinity)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterAffinityTerm.
|
||||||
|
func (in *ClusterAffinityTerm) DeepCopy() *ClusterAffinityTerm {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ClusterAffinityTerm)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *ClusterOverridePolicy) DeepCopyInto(out *ClusterOverridePolicy) {
|
func (in *ClusterOverridePolicy) DeepCopyInto(out *ClusterOverridePolicy) {
|
||||||
*out = *in
|
*out = *in
|
||||||
|
@ -439,23 +456,6 @@ func (in *LabelAnnotationOverrider) DeepCopy() *LabelAnnotationOverrider {
|
||||||
return out
|
return out
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
|
||||||
func (in *OrderedClusterAffinityTerm) DeepCopyInto(out *OrderedClusterAffinityTerm) {
|
|
||||||
*out = *in
|
|
||||||
in.ClusterAffinity.DeepCopyInto(&out.ClusterAffinity)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OrderedClusterAffinityTerm.
|
|
||||||
func (in *OrderedClusterAffinityTerm) DeepCopy() *OrderedClusterAffinityTerm {
|
|
||||||
if in == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
out := new(OrderedClusterAffinityTerm)
|
|
||||||
in.DeepCopyInto(out)
|
|
||||||
return out
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *OverridePolicy) DeepCopyInto(out *OverridePolicy) {
|
func (in *OverridePolicy) DeepCopyInto(out *OverridePolicy) {
|
||||||
*out = *in
|
*out = *in
|
||||||
|
@ -618,9 +618,9 @@ func (in *Placement) DeepCopyInto(out *Placement) {
|
||||||
*out = new(ClusterAffinity)
|
*out = new(ClusterAffinity)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
if in.OrderedClusterAffinities != nil {
|
if in.ClusterAffinities != nil {
|
||||||
in, out := &in.OrderedClusterAffinities, &out.OrderedClusterAffinities
|
in, out := &in.ClusterAffinities, &out.ClusterAffinities
|
||||||
*out = make([]OrderedClusterAffinityTerm, len(*in))
|
*out = make([]ClusterAffinityTerm, len(*in))
|
||||||
for i := range *in {
|
for i := range *in {
|
||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,6 +55,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
|
||||||
"github.com/karmada-io/karmada/pkg/apis/networking/v1alpha1.MultiClusterIngress": schema_pkg_apis_networking_v1alpha1_MultiClusterIngress(ref),
|
"github.com/karmada-io/karmada/pkg/apis/networking/v1alpha1.MultiClusterIngress": schema_pkg_apis_networking_v1alpha1_MultiClusterIngress(ref),
|
||||||
"github.com/karmada-io/karmada/pkg/apis/networking/v1alpha1.MultiClusterIngressList": schema_pkg_apis_networking_v1alpha1_MultiClusterIngressList(ref),
|
"github.com/karmada-io/karmada/pkg/apis/networking/v1alpha1.MultiClusterIngressList": schema_pkg_apis_networking_v1alpha1_MultiClusterIngressList(ref),
|
||||||
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.ClusterAffinity": schema_pkg_apis_policy_v1alpha1_ClusterAffinity(ref),
|
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.ClusterAffinity": schema_pkg_apis_policy_v1alpha1_ClusterAffinity(ref),
|
||||||
|
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.ClusterAffinityTerm": schema_pkg_apis_policy_v1alpha1_ClusterAffinityTerm(ref),
|
||||||
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.ClusterOverridePolicy": schema_pkg_apis_policy_v1alpha1_ClusterOverridePolicy(ref),
|
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.ClusterOverridePolicy": schema_pkg_apis_policy_v1alpha1_ClusterOverridePolicy(ref),
|
||||||
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.ClusterOverridePolicyList": schema_pkg_apis_policy_v1alpha1_ClusterOverridePolicyList(ref),
|
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.ClusterOverridePolicyList": schema_pkg_apis_policy_v1alpha1_ClusterOverridePolicyList(ref),
|
||||||
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.ClusterPreferences": schema_pkg_apis_policy_v1alpha1_ClusterPreferences(ref),
|
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.ClusterPreferences": schema_pkg_apis_policy_v1alpha1_ClusterPreferences(ref),
|
||||||
|
@ -70,7 +71,6 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
|
||||||
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.ImageOverrider": schema_pkg_apis_policy_v1alpha1_ImageOverrider(ref),
|
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.ImageOverrider": schema_pkg_apis_policy_v1alpha1_ImageOverrider(ref),
|
||||||
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.ImagePredicate": schema_pkg_apis_policy_v1alpha1_ImagePredicate(ref),
|
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.ImagePredicate": schema_pkg_apis_policy_v1alpha1_ImagePredicate(ref),
|
||||||
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.LabelAnnotationOverrider": schema_pkg_apis_policy_v1alpha1_LabelAnnotationOverrider(ref),
|
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.LabelAnnotationOverrider": schema_pkg_apis_policy_v1alpha1_LabelAnnotationOverrider(ref),
|
||||||
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.OrderedClusterAffinityTerm": schema_pkg_apis_policy_v1alpha1_OrderedClusterAffinityTerm(ref),
|
|
||||||
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.OverridePolicy": schema_pkg_apis_policy_v1alpha1_OverridePolicy(ref),
|
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.OverridePolicy": schema_pkg_apis_policy_v1alpha1_OverridePolicy(ref),
|
||||||
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.OverridePolicyList": schema_pkg_apis_policy_v1alpha1_OverridePolicyList(ref),
|
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.OverridePolicyList": schema_pkg_apis_policy_v1alpha1_OverridePolicyList(ref),
|
||||||
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.OverrideSpec": schema_pkg_apis_policy_v1alpha1_OverrideSpec(ref),
|
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.OverrideSpec": schema_pkg_apis_policy_v1alpha1_OverrideSpec(ref),
|
||||||
|
@ -2202,6 +2202,72 @@ func schema_pkg_apis_policy_v1alpha1_ClusterAffinity(ref common.ReferenceCallbac
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func schema_pkg_apis_policy_v1alpha1_ClusterAffinityTerm(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||||
|
return common.OpenAPIDefinition{
|
||||||
|
Schema: spec.Schema{
|
||||||
|
SchemaProps: spec.SchemaProps{
|
||||||
|
Description: "ClusterAffinityTerm selects a set of cluster.",
|
||||||
|
Type: []string{"object"},
|
||||||
|
Properties: map[string]spec.Schema{
|
||||||
|
"affinityName": {
|
||||||
|
SchemaProps: spec.SchemaProps{
|
||||||
|
Description: "AffinityName is the name of the cluster group.",
|
||||||
|
Default: "",
|
||||||
|
Type: []string{"string"},
|
||||||
|
Format: "",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"labelSelector": {
|
||||||
|
SchemaProps: spec.SchemaProps{
|
||||||
|
Description: "LabelSelector is a filter to select member clusters by labels. If non-nil and non-empty, only the clusters match this filter will be selected.",
|
||||||
|
Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"fieldSelector": {
|
||||||
|
SchemaProps: spec.SchemaProps{
|
||||||
|
Description: "FieldSelector is a filter to select member clusters by fields. If non-nil and non-empty, only the clusters match this filter will be selected.",
|
||||||
|
Ref: ref("github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.FieldSelector"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"clusterNames": {
|
||||||
|
SchemaProps: spec.SchemaProps{
|
||||||
|
Description: "ClusterNames is the list of clusters to be selected.",
|
||||||
|
Type: []string{"array"},
|
||||||
|
Items: &spec.SchemaOrArray{
|
||||||
|
Schema: &spec.Schema{
|
||||||
|
SchemaProps: spec.SchemaProps{
|
||||||
|
Default: "",
|
||||||
|
Type: []string{"string"},
|
||||||
|
Format: "",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"exclude": {
|
||||||
|
SchemaProps: spec.SchemaProps{
|
||||||
|
Description: "ExcludedClusters is the list of clusters to be ignored.",
|
||||||
|
Type: []string{"array"},
|
||||||
|
Items: &spec.SchemaOrArray{
|
||||||
|
Schema: &spec.Schema{
|
||||||
|
SchemaProps: spec.SchemaProps{
|
||||||
|
Default: "",
|
||||||
|
Type: []string{"string"},
|
||||||
|
Format: "",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Required: []string{"affinityName"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Dependencies: []string{
|
||||||
|
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.FieldSelector", "k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector"},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func schema_pkg_apis_policy_v1alpha1_ClusterOverridePolicy(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
func schema_pkg_apis_policy_v1alpha1_ClusterOverridePolicy(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||||
return common.OpenAPIDefinition{
|
return common.OpenAPIDefinition{
|
||||||
Schema: spec.Schema{
|
Schema: spec.Schema{
|
||||||
|
@ -2859,80 +2925,6 @@ func schema_pkg_apis_policy_v1alpha1_LabelAnnotationOverrider(ref common.Referen
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func schema_pkg_apis_policy_v1alpha1_OrderedClusterAffinityTerm(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
|
||||||
return common.OpenAPIDefinition{
|
|
||||||
Schema: spec.Schema{
|
|
||||||
SchemaProps: spec.SchemaProps{
|
|
||||||
Description: "OrderedClusterAffinityTerm selects a set of cluster and indicates the order that Karmada scheduler should inspect with.",
|
|
||||||
Type: []string{"object"},
|
|
||||||
Properties: map[string]spec.Schema{
|
|
||||||
"affinityName": {
|
|
||||||
SchemaProps: spec.SchemaProps{
|
|
||||||
Description: "AffinityName is the name of the cluster group.",
|
|
||||||
Default: "",
|
|
||||||
Type: []string{"string"},
|
|
||||||
Format: "",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"order": {
|
|
||||||
SchemaProps: spec.SchemaProps{
|
|
||||||
Description: "Order of the cluster group that Karmada scheduler should inspect with, in the range 1-100.",
|
|
||||||
Default: 0,
|
|
||||||
Type: []string{"integer"},
|
|
||||||
Format: "int32",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"labelSelector": {
|
|
||||||
SchemaProps: spec.SchemaProps{
|
|
||||||
Description: "LabelSelector is a filter to select member clusters by labels. If non-nil and non-empty, only the clusters match this filter will be selected.",
|
|
||||||
Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector"),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"fieldSelector": {
|
|
||||||
SchemaProps: spec.SchemaProps{
|
|
||||||
Description: "FieldSelector is a filter to select member clusters by fields. If non-nil and non-empty, only the clusters match this filter will be selected.",
|
|
||||||
Ref: ref("github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.FieldSelector"),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"clusterNames": {
|
|
||||||
SchemaProps: spec.SchemaProps{
|
|
||||||
Description: "ClusterNames is the list of clusters to be selected.",
|
|
||||||
Type: []string{"array"},
|
|
||||||
Items: &spec.SchemaOrArray{
|
|
||||||
Schema: &spec.Schema{
|
|
||||||
SchemaProps: spec.SchemaProps{
|
|
||||||
Default: "",
|
|
||||||
Type: []string{"string"},
|
|
||||||
Format: "",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"exclude": {
|
|
||||||
SchemaProps: spec.SchemaProps{
|
|
||||||
Description: "ExcludedClusters is the list of clusters to be ignored.",
|
|
||||||
Type: []string{"array"},
|
|
||||||
Items: &spec.SchemaOrArray{
|
|
||||||
Schema: &spec.Schema{
|
|
||||||
SchemaProps: spec.SchemaProps{
|
|
||||||
Default: "",
|
|
||||||
Type: []string{"string"},
|
|
||||||
Format: "",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Required: []string{"affinityName", "order"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Dependencies: []string{
|
|
||||||
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.FieldSelector", "k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector"},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func schema_pkg_apis_policy_v1alpha1_OverridePolicy(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
func schema_pkg_apis_policy_v1alpha1_OverridePolicy(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||||
return common.OpenAPIDefinition{
|
return common.OpenAPIDefinition{
|
||||||
Schema: spec.Schema{
|
Schema: spec.Schema{
|
||||||
|
@ -3190,19 +3182,19 @@ func schema_pkg_apis_policy_v1alpha1_Placement(ref common.ReferenceCallback) com
|
||||||
Properties: map[string]spec.Schema{
|
Properties: map[string]spec.Schema{
|
||||||
"clusterAffinity": {
|
"clusterAffinity": {
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
Description: "ClusterAffinity represents scheduling restrictions to a certain set of clusters. If not set, any cluster can be scheduling candidate.",
|
Description: "ClusterAffinity represents scheduling restrictions to a certain set of clusters. Note:\n 1. ClusterAffinity can not co-exist with ClusterAffinities.\n 2. If both ClusterAffinity and ClusterAffinities are not set, any cluster\n can be scheduling candidates.",
|
||||||
Ref: ref("github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.ClusterAffinity"),
|
Ref: ref("github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.ClusterAffinity"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"orderedClusterAffinities": {
|
"orderedClusterAffinities": {
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
Description: "OrderedClusterAffinities represents the scheduling order among multiple set of clusters that indicated by OrderedClusterAffinityTerm. Each term should have a unique order among all terms.\n\nThe scheduler will evaluate these groups one by one in strict order, the group that does not satisfy scheduling restrictions will be ignored that means all clusters in this group will not be selected unless it also belongs to the next group(a cluster could belong to multiple groups).\n\nIf none of the groups satisfy the scheduling restrictions, then scheduling fails, which means no cluster will be selected.\n\nNote: OrderedClusterAffinities can not co-exist with ClusterAffinity.\n\nPotential use case 1: The private clusters in the local data center could be the main group, and the managed clusters provided by cluster providers could be the secondary group. So that the Karmada scheduler would prefer to schedule workloads to the main group and the second group will only be considered in case of the main group does not satisfy restrictions(like, lack of resources).\n\nPotential use case 2: For the disaster recovery scenario, the clusters could be organized to primary and backup groups, the workloads would be scheduled to primary clusters firstly, and when primary cluster fails(like data center power off), Karmada scheduler could migrate workloads to the backup clusters.",
|
Description: "ClusterAffinities represents scheduling restrictions to multiple cluster groups that indicated by ClusterAffinityTerm.\n\nThe scheduler will evaluate these groups one by one in the order they appear in the spec, the group that does not satisfy scheduling restrictions will be ignored which means all clusters in this group will not be selected unless it also belongs to the next group(a cluster could belong to multiple groups).\n\nIf none of the groups satisfy the scheduling restrictions, then scheduling fails, which means no cluster will be selected.\n\nNote:\n 1. ClusterAffinities can not co-exist with ClusterAffinity.\n 2. If both ClusterAffinity and ClusterAffinities are not set, any cluster\n can be scheduling candidates.\n\nPotential use case 1: The private clusters in the local data center could be the main group, and the managed clusters provided by cluster providers could be the secondary group. So that the Karmada scheduler would prefer to schedule workloads to the main group and the second group will only be considered in case of the main group does not satisfy restrictions(like, lack of resources).\n\nPotential use case 2: For the disaster recovery scenario, the clusters could be organized to primary and backup groups, the workloads would be scheduled to primary clusters firstly, and when primary cluster fails(like data center power off), Karmada scheduler could migrate workloads to the backup clusters.",
|
||||||
Type: []string{"array"},
|
Type: []string{"array"},
|
||||||
Items: &spec.SchemaOrArray{
|
Items: &spec.SchemaOrArray{
|
||||||
Schema: &spec.Schema{
|
Schema: &spec.Schema{
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
Default: map[string]interface{}{},
|
Default: map[string]interface{}{},
|
||||||
Ref: ref("github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.OrderedClusterAffinityTerm"),
|
Ref: ref("github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.ClusterAffinityTerm"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -3246,7 +3238,7 @@ func schema_pkg_apis_policy_v1alpha1_Placement(ref common.ReferenceCallback) com
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Dependencies: []string{
|
Dependencies: []string{
|
||||||
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.ClusterAffinity", "github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.OrderedClusterAffinityTerm", "github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.ReplicaSchedulingStrategy", "github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.SpreadConstraint", "k8s.io/api/core/v1.Toleration"},
|
"github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.ClusterAffinity", "github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.ClusterAffinityTerm", "github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.ReplicaSchedulingStrategy", "github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1.SpreadConstraint", "k8s.io/api/core/v1.Toleration"},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue