K8s: 1.23
The Next Frontier
Release highlights
- 47 total enhancements
- 11 stable enhancements (enabled by default)
- 16 graduated to beta (enabled by default)
- 19 introduced alpha features (blocked behind the flags)
- 1 Depreciation
CRD Validation Expression Language
KEP-2876: https://github.com/kubernetes/enhancements/pull/2877
Common Expression Language: https://github.com/google/cel-go
- Less complexity with implementing webhooks
- CRD integrated inline expression language
- Can be used beyond validation, e.g., admission and defaulting
- Simplifies the CRD development and operation
- More declarative CRDs
- Adopts Common Expression language
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
...
schema:
openAPIV3Schema:
type: object
properties:
spec:
x-kubernetes-validator:
- rule: "minReplicas <= maxReplicas"
message: "minReplicas cannot be larger than maxReplicas"
type: object
properties:
minReplicas:
type: integer
maxReplicas:
type: integer
IPv4/IPv6 Dual-stack
graduates to GA
https://github.com/kubernetes/enhancements/issues/563
IPv4/IPv6 dual-stack networking graduates to GA, it was already enabled by default since it was in Beta, but now the feature gates for IPv6DualStack was removed.
- not mandatory to use the dual stack
- prerequisites: IPv4/IPv6 routable network in place
- CNI that supports the dual stack must be used
PodSecurity Admission (beta)
KEP-2579: https://github.com/kubernetes/enhancements/blob/master/keps/sig-auth/2579-psp-replacement/README.md
- Pod Security Policy (PSP) was deprecated in 1.21 instead of graduating to GA
- PSP will be removed in 1.25
- Enforces Pod Security Standards on Pods
- Replaces PSP as k8s build in mechanism to limit creation and update of pod permissions
- Avoids privilege escalation
- Offers Enforcing, Audit and Warning modes
Horizontal PodAutoScaler (GA)
https://github.com/kubernetes/enhancements/blob/master/keps/sig-autoscaling/2702-graduate-hpa-api-to-GA/README.md
- promoted to GA and adds custom metrics
Structured Logging
(beta)
https://github.com/kubernetes/enhancements/tree/master/keps/sig-instrumentation/1602-structured-logging
- standard structure for K8s log messages
- adds methods to klog to enforce the standard structure
- logs in JSON format which simplifies querying and ingestion by third party applications
- kubelet and kube-scheduler logs have been converted
Ephemeral Containers
(beta)
https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/277-ephemeral-containers/README.md
- built in mechanism to run temporary containers for troubleshooting and debugging purposes
- allow access to namespaces and the file systems of individual containers
kubectl debug -it --image=debian podName --bash
Kubelet CRI Support
(beta)
https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/2040-kubelet-cri/README.md
- Container Runtime Interface (CRI) is a plugin interface for kubelet to select a container runtime
- (CRI) v1 API is now default
- dockershim is expected to be removed in 1.24
Extend kubelet pod resource assignment to return allocatable resources
(beta)
- offers an API for node monitoring agents to know the allocatable compute resources on a node
https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/2403-pod-resources-allocatable-resources/README.md
CPU manager policies
(beta)
https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/2625-cpumanager-policies-thread-placement/README.md
- mitigates physical CPU sharing, whereas static policy of CPU Manager offers prevention of virtual CPU sharing
- prevents workloads from requesting cores that don't consume a full CPU by rejecting them
- physical core is not shared between different containers
- avoids interference with other workloads which may consume the resources of the same physical core
- good for latency sensitive applications such as ML/AI, which requires better CPU isolation for its performance
Add GRPC Probe
(alpha)
https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/2727-grpc-probe/README.md
- Adds gRPC support in Livenessprobe, ReadnessProbe and StartupProbe
- requires feature gate flag to be enabled since it is in Alpha stage
readinessProbe:
grpc: #+
port: 9090 #+
service: my-service #+
initialDelaySeconds: 5
periodSeconds: 10
Skip Volume Ownership Change (stable)
https://github.com/kubernetes/enhancements/tree/master/keps/sig-storage/695-skip-permission-change
- many databases are sensitive to volume permissions and may refuse to start whenever volume being used inside pod gets mounted on different node.
- if volume has a large number of files, performing recursive chown and chmod could be slow and could cause timeout while starting the pod
- this feature allows volume ownership and permission change to be skipped during mount
- https://kubernetes.io/blog/2021/12/07/kubernetes-1-23-release-announcement/
- https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.23.md
CHANGELOG-1.23 and Release notes
Kubernetes 1.23
By fmuyassarov
Kubernetes 1.23
- 320