You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Since this is a per-node configuration that likely will be set on a subset of
722
723
nodes, or potentially even differently per node, it's important that it can be
723
-
manipulated per node. By default `KubeletConfiguration` is intended to be shared
724
+
manipulated per node. Expected use cases of this type of heterogeneity in
725
+
configuration include
726
+
727
+
* Dedicated node pool for workloads that are expected to rapidly restart
728
+
* Config aligned with node labels/pod affinity labels for workloads that are
729
+
expected to rapidly restart
730
+
* Machine size adjusted config
731
+
732
+
By default `KubeletConfiguration` is intended to be shared
724
733
between nodes, but the beta feature for drop-in configuration files in a
725
734
colocated config directory cirumvent this. In addition, `KubeletConfiguration`
726
735
drops fields unrecognized by the current kubelet's schema, making it a good
727
736
choice to circumvent compatibility issues with n-3 kubelets. While there is an
728
737
argument that this could be better manipulated with a command-line flag, so
729
-
lifecycle tooling that configures nodes can expose it more transparently, the
730
-
advantages to backwards compatibility outweigh this consideration for the alpha
731
-
period and will be revisted before beta.
738
+
lifecycle tooling that configures nodes can expose it more transparently, that
739
+
was an acceptable design change given the introduction of `KubeletConfiguration`
740
+
in the first place. In any case, the advantages to backwards and forward
741
+
compatibility by far outweigh this consideration for the alpha period and can be
742
+
revisted before beta.
732
743
733
744
### Refactor of recovery threshold
734
745
@@ -1500,15 +1511,15 @@ which is a new field in the `KubeletConfiguration` Kind. Based on manual tests
1500
1511
by the author, adding an unknown field to `KubeletConfiguration` is safe and the
1501
1512
unknown config field is dropped before addition to the
1502
1513
`kube-system/kubelet-config` object which is its final destination (for example,
1503
-
in the case of n-3 kubelets facing a configuration introduced by this KEP). This
1514
+
in the case of n-3 kubelets facing a configuration introduced by this KEP). Ultimately this is supported by the configuratinon of a given Kind's `fieldValidation` strategy in API machinery ([ref](https://github.com/kubernetes/kubernetes/blob/release-1.31/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/types.go#L584)) which, in 1.31+, is set to "warn" by default and is only valid for API objects and it turns out is not explicitly set as `strict` for `KuberntesConfiguration` object so they ultimately bypass this ([ref](https://github.com/kubernetes/kubectl/issues/1663#issuecomment-2392453716)). This
1504
1515
is not currently tested as far as I can tell in the tests for
1505
1516
`KubeletConfiguration`(in either the most likely location, in
0 commit comments