api: change list type for node lists in PodSchedulingContext

The "set" list type was chosen because it seemed appropriate (no duplicates!)
but that made tracking of managed fields more expensive (each entry in the list
is tracked, not the entire field) and for no good reason (one client is
responsible for the entire list).

Therefore the type gets changed to "atomic". Server-side-apply has not been
used in the past and PodSchedulingContext objects are short-lived and still in
alpha, so the any potential compatibility issues should be minor.

The scheduling throughput in scheduler_perf increases:

    name                                                                      old SchedulingThroughput/Average     new SchedulingThroughput/Average
    PerfScheduling/SchedulingWithResourceClaimTemplate/2000pods_100nodes-36   18.8 ± 8%                            24.0 ±37%
    PerfScheduling/SchedulingWithMultipleResourceClaims/2000pods_100nodes-36  13.7 ±81%                            18.5 ±40%
This commit is contained in:
Patrick Ohly 2023-08-15 09:55:57 +02:00
parent d5f2420309
commit 5567f288e7
6 changed files with 12 additions and 12 deletions

View File

@ -14045,7 +14045,7 @@
"type": "string"
},
"type": "array",
"x-kubernetes-list-type": "set"
"x-kubernetes-list-type": "atomic"
},
"selectedNode": {
"description": "SelectedNode is the node for which allocation of ResourceClaims that are referenced by the Pod and that use \"WaitForFirstConsumer\" allocation is to be attempted.",
@ -14204,7 +14204,7 @@
"type": "string"
},
"type": "array",
"x-kubernetes-list-type": "set"
"x-kubernetes-list-type": "atomic"
}
},
"type": "object"

View File

@ -219,7 +219,7 @@
"type": "string"
},
"type": "array",
"x-kubernetes-list-type": "set"
"x-kubernetes-list-type": "atomic"
},
"selectedNode": {
"description": "SelectedNode is the node for which allocation of ResourceClaims that are referenced by the Pod and that use \"WaitForFirstConsumer\" allocation is to be attempted.",
@ -414,7 +414,7 @@
"type": "string"
},
"type": "array",
"x-kubernetes-list-type": "set"
"x-kubernetes-list-type": "atomic"
}
},
"type": "object"

View File

@ -43041,7 +43041,7 @@ func schema_k8sio_api_resource_v1alpha2_PodSchedulingContextSpec(ref common.Refe
"potentialNodes": {
VendorExtensible: spec.VendorExtensible{
Extensions: spec.Extensions{
"x-kubernetes-list-type": "set",
"x-kubernetes-list-type": "atomic",
},
},
SchemaProps: spec.SchemaProps{
@ -43302,7 +43302,7 @@ func schema_k8sio_api_resource_v1alpha2_ResourceClaimSchedulingStatus(ref common
"unsuitableNodes": {
VendorExtensible: spec.VendorExtensible{
Extensions: spec.Extensions{
"x-kubernetes-list-type": "set",
"x-kubernetes-list-type": "atomic",
},
},
SchemaProps: spec.SchemaProps{

View File

@ -107,7 +107,7 @@ message PodSchedulingContextSpec {
// that suits all pending resources. This may get increased in the
// future, but not reduced.
//
// +listType=set
// +listType=atomic
// +optional
repeated string potentialNodes = 2;
}
@ -208,7 +208,7 @@ message ResourceClaimSchedulingStatus {
// PodSchedulingSpec.PotentialNodes. This may get increased in the
// future, but not reduced.
//
// +listType=set
// +listType=atomic
// +optional
repeated string unsuitableNodes = 2;
}

View File

@ -248,7 +248,7 @@ type PodSchedulingContextSpec struct {
// that suits all pending resources. This may get increased in the
// future, but not reduced.
//
// +listType=set
// +listType=atomic
// +optional
PotentialNodes []string `json:"potentialNodes,omitempty" protobuf:"bytes,2,opt,name=potentialNodes"`
}
@ -283,7 +283,7 @@ type ResourceClaimSchedulingStatus struct {
// PodSchedulingSpec.PotentialNodes. This may get increased in the
// future, but not reduced.
//
// +listType=set
// +listType=atomic
// +optional
UnsuitableNodes []string `json:"unsuitableNodes,omitempty" protobuf:"bytes,2,opt,name=unsuitableNodes"`
}

View File

@ -11923,7 +11923,7 @@ var schemaYAML = typed.YAMLObject(`types:
list:
elementType:
scalar: string
elementRelationship: associative
elementRelationship: atomic
- name: selectedNode
type:
scalar: string
@ -12002,7 +12002,7 @@ var schemaYAML = typed.YAMLObject(`types:
list:
elementType:
scalar: string
elementRelationship: associative
elementRelationship: atomic
- name: io.k8s.api.resource.v1alpha2.ResourceClaimSpec
map:
fields: