Kubernetes 1.31, codenamed “Elli,” marks another significant stride in container orchestration. This release introduces a suite of enhancements that address critical areas such as networking, security, storage, and resource management. Let’s delve into the key features and their implications.
Networking Enhancements
Improved Ingress Connectivity Reliability
Kubernetes 1.31 significantly bolsters ingress connectivity reliability, especially for load balancers. This is achieved through enhancements in kube-proxy, which now implements a connection draining mechanism for terminating nodes.
Example Service Configuration:
apiVersion: v1
kind: Service
metadata:
name: my-loadbalancer-service
spec:
type: LoadBalancer
externalTrafficPolicy: Cluster
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 9376
nftables Backend for Kube-Proxy
Kubernetes 1.31 introduces nftables as a backend option for kube-proxy, offering potential performance improvements and enhanced flexibility.
Enabling nftables:
To enable nftables, set the NFTablesProxyMode feature gate to true.
Multiple Service CIDRs
Addressing the challenge of IP exhaustion in large-scale deployments, Kubernetes 1.31 allows for multiple Service CIDRs.
Example kubeadm Configuration:
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
networking:
serviceSubnet: "10.96.0.0/12,10.100.0.0/16"
Traffic Distribution for Services
Kubernetes 1.31 introduces the trafficDistribution field in the Service specification, offering more granular control over traffic routing.
Example Service Configuration:
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 9376
trafficDistribution:
policy: Weighted
weight: 70
Security Enhancements
AppArmor Support (GA)
Kubernetes 1.31 brings stable AppArmor support, enabling granular security policies for containers and pods.
Example Pod Specification:
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: my-image
securityContext:
appArmor:
profileName: my-apparmor-profile
Bound Service Account Token Improvements (Beta)
This feature enhances security by embedding node information in tokens and extending token functionalities.
- Finer-Grained Authorization Based on Selectors (Alpha)
- Allows webhook authorizers to use label and field selectors for more granular authorization decisions, improving security by restricting access based on specific resource attributes.
Storage Improvements
- Persistent Volume Last Phase Transition Time (GA)
- Introduces a timestamp field in PersistentVolumes to record the last phase transition time, aiding in troubleshooting and management.
- Changes to Reclaim Policy for PersistentVolumes (Beta)
- Ensures that the reclaim policy is respected even after the PVC is deleted, preventing potential storage leaks.
Kubernetes VolumeAttributesClass ModifyVolume (Beta)
Allows for dynamic modification of volume parameters, improving flexibility in managing storage resources.
AI/ML and Hardware Management
- New DRA APIs for Better Hardware Management (Alpha)
- Introduces structured parameters within the dynamic resource allocation (DRA) API, enabling features like cluster autoscaling for hardware resources like GPUs.
Example ResourceClaim:
apiVersion: resource.k8s.io/v1alpha1
kind: ResourceClaim
metadata:
name: ai-workload
spec:
resourceClassName: nvidia-gpu
parameters:
gpuType: "A100"
memory: "16Gi"
compute: "2"
Support for Image Volumes (Alpha)
- Enables using OCI images as native volumes in pods, providing flexible storage solutions for AI/ML workloads.
- Exposing Device Health Information Through Pod Status (Alpha)
- Provides real-time health information about allocated devices within a Pod, facilitating better monitoring and management of hardware resources.
Additional Enhancements
Kubernetes 1.31 also includes improvements in areas like scheduling, CLI, and instrumentation.
For a comprehensive overview, refer to the official release notes.
Resources:
- Kubernetes project on GitHub
- Get involved with the Kubernetes tools community
- Follow @kubetools on Twitter