LWKD: Week Ending October 17, 2021
Developer News
Voting in the Steering Committee Election is now open. We have a record 13 well-known contributors running for the four available seats. Please cast your ballot and help choose who will lead us in 2022-2023. Polls close on November 4.
SIG-Scheduling now has separate Tech Leads and Chairs, starting with new TL Aldo Culquicondor.
Release Schedule
Next Deadline: November 1, exception requests due
October patch releases were pushed back because of KubeCon, which means you still have time to get a cherry-pick in until October 22, for a planned release on October 27.
Featured PR
#102015: Add support for consuming whole NUMA nodes in CPUManager CPU assignments
In the early days of multi-CPU computers, Linux made the decision to default to symmetrical multiprocessing (SMP) which treated every CPU as identical. While most hardware at least somewhat supports this, these days different CPUs will generally have faster access to one bit of memory/cache compared to another. This is non-uniform memory access or NUMA. The "sockets" and "cores" abstraction in both Linux and Kubernetes was built on the older SMP assumptions which can lead to frustration when trying to take advantage of NUMA hardware (which, again, is most hardware). This week we have two big updates to NUMA handling. The first is #102015 which allows CPUManager to allocate based on NUMA nodes rather than cores, so the Kubelet will make sure your container's processes all run on one NUMA node together. This joined by #105631 which adds support for a distribute-cpus-across-numa
policy in CPUManager. If a container's requested CPU count won't all fit in one NUMA node, the Kubelet will divide things evenly across all the required nodes rather than packing things in as much as possible and leaving the last one mostly unused. Together these changes will allow getting even more performance out of your existing hardware by exploiting its inherent strengths.
Other Merges
- Allow changing config on suspended Jobs
- Windows gets an Etcd image
- NonIndexed Jobs shouldn't have a weird
-1
suffix - We can have more than 100 mounts on Windows
- Kubeadm won't accept an empty config flag
- Generic ephemeral volumes get Kubelet stats
- Properly set terminated pod status on Kubelet restart
- Revert the fix for plugin scores with no scheduled pods due to unanticipated side effects
- Fix
kubectl diff --invalid-argument
return status code - Node Graceful Shutdown also terminates probes and avoids race conditions
- New Scheduling API: v1beta3
- PodResource API only shows "isolated" CPUs instead of shared pools for QoS uses
Structured Logging: JSON logging has been refactored and has new config options, plus proxy and ipvs proxy ported
SIG-APIMachinery is trying to improve API Priority and Fairness for Watch requests. If you want to join the discussion, see #105683.
Promotions
- TTL After Finish to GA
- JobTrackingWithFinalizers to beta and enabled by default
- CPUManagerPolicyOptions to beta including a new feature gate
- pod GetAllocatableResources to beta and enabled by default
Deprecated
- Deprecate Userspace Proxying, since it's already broken
- Deprecate VolumeSubpath feature gate since it can no longer be disabled; will be removed in 1.25
Version Updates
- go to 1.16.9 on 1.21 and 1.22, and to 1.17.2 in 1.23
- klog to 2.9.0, backported, fixes binary output
- golang/x/text to v0.3.6 backported to all versions