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
732
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
733
+
manipulated per node. Expected use cases of this type of heterogeneity in
734
+
configuration include
735
+
736
+
* Dedicated node pool for workloads that are expected to rapidly restart
737
+
* Config aligned with node labels/pod affinity labels for workloads that are
738
+
expected to rapidly restart
739
+
* Machine size adjusted config
740
+
741
+
By default `KubeletConfiguration` is intended to be shared
724
742
between nodes, but the beta feature for drop-in configuration files in a
725
743
colocated config directory cirumvent this. In addition, `KubeletConfiguration`
726
744
drops fields unrecognized by the current kubelet's schema, making it a good
727
745
choice to circumvent compatibility issues with n-3 kubelets. While there is an
728
746
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.
747
+
lifecycle tooling that configures nodes can expose it more transparently, that
748
+
was an acceptable design change given the introduction of `KubeletConfiguration`
749
+
in the first place. In any case, the advantages to backwards and forward
750
+
compatibility by far outweigh this consideration for the alpha period and can be
751
+
revisted before beta.
752
+
753
+
The proposed configuration explicitly looks like this:
754
+
755
+
```
756
+
apiVersion: kubelet.config.k8s.io/v1beta1
757
+
kind: KubeletConfiguration
758
+
crashloopbackoff:
759
+
max: 4
760
+
```
732
761
733
762
### Refactor of recovery threshold
734
763
@@ -1147,6 +1176,7 @@ feature gates set as per the [Conflict Resolution](#conflict-resolution) policy
1147
1176
1148
1177
- Gather feedback from developers and surveys
1149
1178
- High confidence in the specific numbers/decay rate
1179
+
- Including revisiting 300s maximum for node specific config
1150
1180
- Benchmark restart load methodology and analysis published and discussed with
1151
1181
SIG-Node
1152
1182
- Discuss PLEG polling loops and its effect on specific decay rates
@@ -1500,15 +1530,15 @@ which is a new field in the `KubeletConfiguration` Kind. Based on manual tests
1500
1530
by the author, adding an unknown field to `KubeletConfiguration` is safe and the
1501
1531
unknown config field is dropped before addition to the
1502
1532
`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
1533
+
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
1534
is not currently tested as far as I can tell in the tests for
1505
1535
`KubeletConfiguration`(in either the most likely location, in
0 commit comments