Merge pull request #497 from qianjun1993/bug-fix

Update ReplicaScheduling type
This commit is contained in:
karmada-bot 2021-07-06 11:02:23 +08:00 committed by GitHub
commit ea47422461
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 290 additions and 482 deletions

View File

@ -214,261 +214,165 @@ spec:
that have replicas in spec (e.g. deployments, statefulsets)
to member clusters.
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this
representation of an object. Servers should convert recognized
schemas to the latest internal value, and may reject unrecognized
values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
replicaDivisionPreference:
description: ReplicaDivisionPreference determines how the
replicas is divided when ReplicaSchedulingType is "Divided".
Valid options are Aggregated and Weighted. "Aggregated"
divides replicas into clusters as few as possible, while
respecting clusters' resource availabilities during the
division. "Weighted" divides replicas by weight according
to WeightPreference.
type: string
kind:
description: 'Kind is a string value representing the REST
resource this object represents. Servers may infer this
from the endpoint the client submits requests to. Cannot
be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
replicaSchedulingType:
description: ReplicaSchedulingType determines how the replicas
is scheduled when karmada propagating a resource. Valid
options are Duplicated and Divided. "Duplicated" duplicates
the same replicas to each candidate member cluster from
resource. "Divided" divides replicas into parts according
to number of valid candidate member clusters, and exact
replicas for each cluster are determined by ReplicaDivisionPreference.
type: string
metadata:
type: object
spec:
description: Spec represents the desired behavior of ReplicaSchedulingPolicy.
weightPreference:
description: WeightPreference describes weight for each cluster
or for each group of cluster If ReplicaDivisionPreference
is set to "Weighted", and WeightPreference is not set, scheduler
will weight all clusters the same.
properties:
preferences:
description: Preferences describes weight for each cluster
or for each group of cluster.
properties:
staticWeightList:
description: StaticWeightList defines the static cluster
weight.
items:
description: StaticClusterWeight defines the static
cluster weight.
properties:
targetCluster:
description: TargetCluster describes the filter
to select clusters.
properties:
clusterNames:
description: ClusterNames is the list of
clusters to be selected.
items:
type: string
type: array
exclude:
description: ExcludedClusters is the list
of clusters to be ignored.
items:
type: string
type: array
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.
properties:
matchExpressions:
description: A list of field selector
requirements.
items:
description: A node selector requirement
is a selector that contains values,
a key, and an operator that relates
the key and values.
properties:
key:
description: The label key that
the selector applies to.
type: string
operator:
description: Represents a key's
relationship to a set of values.
Valid operators are In, NotIn,
Exists, DoesNotExist. Gt, and
Lt.
type: string
values:
description: An array of string
values. If the operator is In
or NotIn, the values array must
be non-empty. If the operator
is Exists or DoesNotExist, the
values array must be empty.
If the operator is Gt or Lt,
the values array must have a
single element, which will be
interpreted as an integer. This
array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
type: object
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.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
description: A label selector requirement
is a selector that contains values,
a key, and an operator that relates
the key and values.
properties:
key:
description: key is the label
key that the selector applies
to.
type: string
operator:
description: operator represents
a key's relationship to a set
of values. Valid operators are
In, NotIn, Exists and DoesNotExist.
type: string
values:
description: values is an array
of string values. If the operator
is In or NotIn, the values array
must be non-empty. If the operator
is Exists or DoesNotExist, the
values array must be empty.
This array is replaced during
a strategic merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of
{key,value} pairs. A single {key,value}
in the matchLabels map is equivalent
to an element of matchExpressions,
whose key field is "key", the operator
is "In", and the values array contains
only "value". The requirements are
ANDed.
type: object
type: object
type: object
weight:
description: Weight expressing the preference
to the cluster(s) specified by 'TargetCluster'.
format: int64
type: integer
required:
- targetCluster
- weight
type: object
type: array
required:
- staticWeightList
type: object
resourceSelectors:
description: ResourceSelectors used to select resources.
staticWeightList:
description: StaticWeightList defines the static cluster
weight.
items:
description: ResourceSelector the resources will be
selected.
description: StaticClusterWeight defines the static
cluster weight.
properties:
apiVersion:
description: APIVersion represents the API version
of the target resources.
type: string
kind:
description: Kind represents the Kind of the target
resources.
type: string
labelSelector:
description: A label query over a set of resources.
If name is not empty, labelSelector will be ignored.
targetCluster:
description: TargetCluster describes the filter
to select clusters.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are
ANDed.
clusterNames:
description: ClusterNames is the list of clusters
to be selected.
items:
description: A label selector requirement
is a selector that contains values, a key,
and an operator that relates the key and
values.
properties:
key:
description: key is the label key that
the selector applies to.
type: string
operator:
description: operator represents a key's
relationship to a set of values. Valid
operators are In, NotIn, Exists and
DoesNotExist.
type: string
values:
description: values is an array of string
values. If the operator is In or NotIn,
the values array must be non-empty.
If the operator is Exists or DoesNotExist,
the values array must be empty. This
array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of {key,value}
pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions,
whose key field is "key", the operator is
"In", and the values array contains only "value".
The requirements are ANDed.
type: array
exclude:
description: ExcludedClusters is the list of
clusters to be ignored.
items:
type: string
type: array
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.
properties:
matchExpressions:
description: A list of field selector requirements.
items:
description: A node selector requirement
is a selector that contains values,
a key, and an operator that relates
the key and values.
properties:
key:
description: The label key that the
selector applies to.
type: string
operator:
description: Represents a key's relationship
to a set of values. Valid operators
are In, NotIn, Exists, DoesNotExist.
Gt, and Lt.
type: string
values:
description: An array of string values.
If the operator is In or NotIn,
the values array must be non-empty.
If the operator is Exists or DoesNotExist,
the values array must be empty.
If the operator is Gt or Lt, the
values array must have a single
element, which will be interpreted
as an integer. This array is replaced
during a strategic merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
type: object
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.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The requirements
are ANDed.
items:
description: A label selector requirement
is a selector that contains values,
a key, and an operator that relates
the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
description: operator represents a
key's relationship to a set of values.
Valid operators are In, NotIn, Exists
and DoesNotExist.
type: string
values:
description: values is an array of
string values. If the operator is
In or NotIn, the values array must
be non-empty. If the operator is
Exists or DoesNotExist, the values
array must be empty. This array
is replaced during a strategic merge
patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of {key,value}
pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions,
whose key field is "key", the operator
is "In", and the values array contains
only "value". The requirements are ANDed.
type: object
type: object
type: object
name:
description: Name of the target resource. Default
is empty, which means selecting all resources.
type: string
namespace:
description: Namespace of the target resource. Default
is empty, which means inherit from the parent
object scope.
type: string
weight:
description: Weight expressing the preference to
the cluster(s) specified by 'TargetCluster'.
format: int64
type: integer
required:
- apiVersion
- kind
- targetCluster
- weight
type: object
type: array
totalReplicas:
description: TotalReplicas represents the total number
of replicas across member clusters. The replicas(spec.replicas)
specified for deployment template will be discarded.
format: int32
type: integer
required:
- preferences
- resourceSelectors
- totalReplicas
- staticWeightList
type: object
required:
- spec
type: object
spreadConstraints:
description: SpreadConstraints represents a list of the scheduling

View File

@ -210,261 +210,165 @@ spec:
that have replicas in spec (e.g. deployments, statefulsets)
to member clusters.
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this
representation of an object. Servers should convert recognized
schemas to the latest internal value, and may reject unrecognized
values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
replicaDivisionPreference:
description: ReplicaDivisionPreference determines how the
replicas is divided when ReplicaSchedulingType is "Divided".
Valid options are Aggregated and Weighted. "Aggregated"
divides replicas into clusters as few as possible, while
respecting clusters' resource availabilities during the
division. "Weighted" divides replicas by weight according
to WeightPreference.
type: string
kind:
description: 'Kind is a string value representing the REST
resource this object represents. Servers may infer this
from the endpoint the client submits requests to. Cannot
be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
replicaSchedulingType:
description: ReplicaSchedulingType determines how the replicas
is scheduled when karmada propagating a resource. Valid
options are Duplicated and Divided. "Duplicated" duplicates
the same replicas to each candidate member cluster from
resource. "Divided" divides replicas into parts according
to number of valid candidate member clusters, and exact
replicas for each cluster are determined by ReplicaDivisionPreference.
type: string
metadata:
type: object
spec:
description: Spec represents the desired behavior of ReplicaSchedulingPolicy.
weightPreference:
description: WeightPreference describes weight for each cluster
or for each group of cluster If ReplicaDivisionPreference
is set to "Weighted", and WeightPreference is not set, scheduler
will weight all clusters the same.
properties:
preferences:
description: Preferences describes weight for each cluster
or for each group of cluster.
properties:
staticWeightList:
description: StaticWeightList defines the static cluster
weight.
items:
description: StaticClusterWeight defines the static
cluster weight.
properties:
targetCluster:
description: TargetCluster describes the filter
to select clusters.
properties:
clusterNames:
description: ClusterNames is the list of
clusters to be selected.
items:
type: string
type: array
exclude:
description: ExcludedClusters is the list
of clusters to be ignored.
items:
type: string
type: array
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.
properties:
matchExpressions:
description: A list of field selector
requirements.
items:
description: A node selector requirement
is a selector that contains values,
a key, and an operator that relates
the key and values.
properties:
key:
description: The label key that
the selector applies to.
type: string
operator:
description: Represents a key's
relationship to a set of values.
Valid operators are In, NotIn,
Exists, DoesNotExist. Gt, and
Lt.
type: string
values:
description: An array of string
values. If the operator is In
or NotIn, the values array must
be non-empty. If the operator
is Exists or DoesNotExist, the
values array must be empty.
If the operator is Gt or Lt,
the values array must have a
single element, which will be
interpreted as an integer. This
array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
type: object
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.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
description: A label selector requirement
is a selector that contains values,
a key, and an operator that relates
the key and values.
properties:
key:
description: key is the label
key that the selector applies
to.
type: string
operator:
description: operator represents
a key's relationship to a set
of values. Valid operators are
In, NotIn, Exists and DoesNotExist.
type: string
values:
description: values is an array
of string values. If the operator
is In or NotIn, the values array
must be non-empty. If the operator
is Exists or DoesNotExist, the
values array must be empty.
This array is replaced during
a strategic merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of
{key,value} pairs. A single {key,value}
in the matchLabels map is equivalent
to an element of matchExpressions,
whose key field is "key", the operator
is "In", and the values array contains
only "value". The requirements are
ANDed.
type: object
type: object
type: object
weight:
description: Weight expressing the preference
to the cluster(s) specified by 'TargetCluster'.
format: int64
type: integer
required:
- targetCluster
- weight
type: object
type: array
required:
- staticWeightList
type: object
resourceSelectors:
description: ResourceSelectors used to select resources.
staticWeightList:
description: StaticWeightList defines the static cluster
weight.
items:
description: ResourceSelector the resources will be
selected.
description: StaticClusterWeight defines the static
cluster weight.
properties:
apiVersion:
description: APIVersion represents the API version
of the target resources.
type: string
kind:
description: Kind represents the Kind of the target
resources.
type: string
labelSelector:
description: A label query over a set of resources.
If name is not empty, labelSelector will be ignored.
targetCluster:
description: TargetCluster describes the filter
to select clusters.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are
ANDed.
clusterNames:
description: ClusterNames is the list of clusters
to be selected.
items:
description: A label selector requirement
is a selector that contains values, a key,
and an operator that relates the key and
values.
properties:
key:
description: key is the label key that
the selector applies to.
type: string
operator:
description: operator represents a key's
relationship to a set of values. Valid
operators are In, NotIn, Exists and
DoesNotExist.
type: string
values:
description: values is an array of string
values. If the operator is In or NotIn,
the values array must be non-empty.
If the operator is Exists or DoesNotExist,
the values array must be empty. This
array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of {key,value}
pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions,
whose key field is "key", the operator is
"In", and the values array contains only "value".
The requirements are ANDed.
type: array
exclude:
description: ExcludedClusters is the list of
clusters to be ignored.
items:
type: string
type: array
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.
properties:
matchExpressions:
description: A list of field selector requirements.
items:
description: A node selector requirement
is a selector that contains values,
a key, and an operator that relates
the key and values.
properties:
key:
description: The label key that the
selector applies to.
type: string
operator:
description: Represents a key's relationship
to a set of values. Valid operators
are In, NotIn, Exists, DoesNotExist.
Gt, and Lt.
type: string
values:
description: An array of string values.
If the operator is In or NotIn,
the values array must be non-empty.
If the operator is Exists or DoesNotExist,
the values array must be empty.
If the operator is Gt or Lt, the
values array must have a single
element, which will be interpreted
as an integer. This array is replaced
during a strategic merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
type: object
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.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The requirements
are ANDed.
items:
description: A label selector requirement
is a selector that contains values,
a key, and an operator that relates
the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
description: operator represents a
key's relationship to a set of values.
Valid operators are In, NotIn, Exists
and DoesNotExist.
type: string
values:
description: values is an array of
string values. If the operator is
In or NotIn, the values array must
be non-empty. If the operator is
Exists or DoesNotExist, the values
array must be empty. This array
is replaced during a strategic merge
patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of {key,value}
pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions,
whose key field is "key", the operator
is "In", and the values array contains
only "value". The requirements are ANDed.
type: object
type: object
type: object
name:
description: Name of the target resource. Default
is empty, which means selecting all resources.
type: string
namespace:
description: Namespace of the target resource. Default
is empty, which means inherit from the parent
object scope.
type: string
weight:
description: Weight expressing the preference to
the cluster(s) specified by 'TargetCluster'.
format: int64
type: integer
required:
- apiVersion
- kind
- targetCluster
- weight
type: object
type: array
totalReplicas:
description: TotalReplicas represents the total number
of replicas across member clusters. The replicas(spec.replicas)
specified for deployment template will be discarded.
format: int32
type: integer
required:
- preferences
- resourceSelectors
- totalReplicas
- staticWeightList
type: object
required:
- spec
type: object
spreadConstraints:
description: SpreadConstraints represents a list of the scheduling

View File

@ -104,7 +104,7 @@ type Placement struct {
// ReplicaScheduling represents the scheduling policy on dealing with the number of replicas
// when propagating resources that have replicas in spec (e.g. deployments, statefulsets) to member clusters.
// +optional
ReplicaScheduling *ReplicaSchedulingPolicy `json:"replicaScheduling,omitempty"`
ReplicaScheduling *ReplicaSchedulingStrategy `json:"replicaScheduling,omitempty"`
}
// SpreadFieldValue is the type to define valid values for SpreadConstraint.SpreadByField

View File

@ -390,7 +390,7 @@ func (in *Placement) DeepCopyInto(out *Placement) {
}
if in.ReplicaScheduling != nil {
in, out := &in.ReplicaScheduling, &out.ReplicaScheduling
*out = new(ReplicaSchedulingPolicy)
*out = new(ReplicaSchedulingStrategy)
(*in).DeepCopyInto(*out)
}
return