www.czarnaowca.it
Kubernetes 1.33, którego finalne wydanie zaplanowano na 23 kwietnia 2025 roku, przynosi liczne ulepszenia i nowe funkcjonalności dla administratorów i deweloperów systemu orkiestracji kontenerów. Ta aktualizacja zawiera 64 ulepszenia, z czego 17 funkcji przechodzi do stabilnej wersji, a 26 zostaje wprowadzonych jako funkcje alpha. W tym artykule omówimy najważniejsze zmiany, które pojawią się w najnowszej wersji Kubernetes.
Najważniejsze funkcje w Kubernetes 1.33
Kubernetes 1.33 wprowadza szereg istotnych funkcji, które mają na celu uproszczenie zarządzania klastrami, poprawę bezpieczeństwa oraz zwiększenie wydajności. Wśród tych zmian znajdziemy zarówno funkcje przechodzące do stabilnej wersji, jak i zupełnie nowe funkcjonalności w fazie alpha lub beta.
Funkcje przechodzące do stabilnej wersji
W Kubernetes 1.33 aż 17 funkcji przechodzi do stabilnej wersji, co oznacza, iż są one gotowe do wykorzystania w środowiskach produkcyjnych. Wśród nich możemy wyróżnić:
Flaga –subresource w kubectl
Jedną z najważniejszych funkcji promowanych do stabilnej wersji jest flaga --subresource w poleceniach kubectl takich jak get, patch, edit i replace. Pozwala ona na pobieranie i aktualizację podrzędnych zasobów, takich jak status, skala i inne, co znacznie ułatwia zarządzanie klastrami Kubernetes1.
CRDValidationRatcheting
Funkcja CRDValidationRatcheting, która teraz przechodzi do GA (General Availability), pozwala na bardziej elastyczną walidację zasobów niestandardowych (Custom Resources)3.
HonorPVReclaimPolicy
Kolejna istotna funkcja promowana do GA to HonorPVReclaimPolicy, która poprawia zarządzanie cyklem życia woluminów trwałych (Persistent Volumes).
Nowe funkcje w wersji beta
RelaxedDNSSearchValidation
Ta funkcja, awansowana do wersji beta, umożliwia bardziej elastyczną walidację domen DNS dla podów. Dzięki temu domeny wyszukiwania dla podów mogą być pojedynczą kropką „.” lub zawierać podkreślenie „_”.
ControlPlaneKubeletLocalMode w kubeadm
Kubeadm wprowadza funkcję ControlPlaneKubeletLocalMode, która została awansowana do wersji beta. Funkcja ta powoduje, iż kubeadm będzie domyślnie używać lokalnego punktu końcowego kube-apiserver dla kubleta podczas tworzenia klastra dzięki „kubeadm init” lub podczas dołączania węzłów płaszczyzny sterowania dzięki „kubeadm join”.
Nowe funkcje w wersji alpha
kuberc dla kubectl
Kubernetes 1.33 wprowadza nową funkcję alpha o nazwie kuberc, która umożliwia dostosowywanie zachowania narzędzia kubectl. Dzięki plikowi .kube/kuberc w katalogu domowym, użytkownicy mogą tworzyć aliasy i wymuszać opcje dla podpoleceń kubectl. Funkcja ta jest dostępna w wersji alpha i można ją aktywować dzięki zmiennej środowiskowej KUBECTL_KUBERC=true.
Przykład pliku kuberc:
apiVersion: kubectl.config.k8s.io/v1alpha1 kind: Preference # alias "kubectl crns" dla "kubectl create namespace test-kuberc-ns" aliases: - name: crns command: create namespace appendArgs: - test-kuberc-ns # Wymuszenie flagi --interactive=true dla kubectl delete overrides: - command: delete flags: - name: interactive default: "true"OrderedNamespaceDeletion
Kubernetes 1.33 wprowadza funkcję OrderedNamespaceDeletion, która rozwiązuje problem z aktualnym podejściem do usuwania zasobów w przestrzeni nazw Kubernetes. Obecne podejście opiera się na półlosowej kolejności usuwania, co wprowadza niepotrzebne ryzyko, szczególnie w środowiskach wymagających ścisłych kontroli bezpieczeństwa1.
Szczególnie niebezpieczny scenariusz występuje, gdy Pod przeżywa swoją powiązaną NetworkPolicy, co efektywnie pozbawia go zamierzonych zabezpieczeń sieciowych, pozostawiając go otwartym na nieograniczony dostęp. Ta nowa funkcja wprowadza celową strategię usuwania, która priorytetowo traktuje bezpieczeństwo poprzez wymuszenie logicznej kolejności: Pody powinny być usuwane przed ich zależnymi zasobami, takimi jak NetworkPolicies.
Configurowalna tolerancja dla Horizontal Pod Autoscalers
Horizontal Pod Autoscaler (HPA) w Kubernetes określa liczbę replik dla obciążenia na podstawie metryk, takich jak wykorzystanie CPU, używając stosunku bieżących wartości do pożądanych wartości metryki. Jednak aby zapobiec częstemu, niepotrzebnemu skalowaniu (tzw. „flapping”), używana jest globalnie skonfigurowana tolerancja — domyślnie ustawiona na 10% – aby ignorować drobne odchylenia od docelowej metryki.
Nawet jeżeli obliczenie sugeruje skalowanie ze 100 do 107 replik (wzrost o 7%), autoscaler nie podejmie żadnych działań, ponieważ mieści się to w domyślnym zakresie tolerancji. W Kubernetes 1.33 wprowadzono możliwość konfigurowania tej tolerancji.
Ulepszenia wydajności
Streaming JSON dla odpowiedzi LIST
Jednym z najważniejszych usprawnień wydajności w Kubernetes 1.33 jest zmiana w sposobie, w jaki serwer API odpowiada na żądania list, gdy format odpowiedzi negocjuje do JSON. Odpowiedzi list w JSON są teraz serializowane po jednym elemencie na raz, co drastycznie zmniejsza ilość pamięci potrzebnej do obsługi dużych kolekcji3.
Funkcjonalność ta jest kontrolowana przez bramkę funkcji StreamingJSONListEncoding i stanowi znaczącą poprawę wydajności dla klastrów z dużą liczbą zasobów.
Przyspieszenie rekursywnej zmiany etykiet SELinux
Innym istotnym ulepszeniem wydajności jest przyspieszenie procesu udostępniania woluminów Podom w systemach z SELinux w trybie wymuszającym. w tej chwili środowisko wykonawcze kontenera musi rekurencyjnie zmienić etykiety wszystkich plików na woluminie przed uruchomieniem kontenera, co jest powolne dla woluminów z wieloma plikami1.
Proponowane rozwiązanie wykorzystuje opcję montowania -o context=XYZ do ustawienia kontekstu SELinux dla wszystkich plików na woluminie bez potrzeby rekursywnego przechodzenia. Zmiana ta znacząco poprawia wydajność, zachowując jednocześnie elastyczność dla różnych przypadków użycia.
Zmiany w sieciach
Multiple Service CIDRs
Kubernetes 1.33 wprowadza możliwość dynamicznego rozszerzania puli adresów IP dostępnych dla usług Kubernetes. Usługi, szczególnie te typu NodePort, ClusterIP i LoadBalancer, polegają na wirtualnych adresach IP (ClusterIPs) w całym klastrze, które muszą być unikalne. Istniejący mechanizm alokacji IP ma istotne ograniczenia – przede wszystkim brak możliwości zmiany rozmiaru lub rozszerzenia zakresu adresów IP1.
Funkcja Multiple Service CIDRs rozwiązuje ten problem, umożliwiając administratorom dodawanie nowych zakresów CIDR bez konieczności ponownego tworzenia klastra.
Tryb nftables dla kube-proxy
W Kubernetes 1.33 tryb nftables dla kube-proxy przechodzi do wersji GA. Chociaż tryb iptables pozostaje domyślny, możesz wybrać tryb nftables, przekazując --proxy-mode nftables lub używając pliku konfiguracyjnego z mode: nftables.
Bezpieczeństwo
ClusterTrustBundle dla certyfikatów X.509
Kubernetes umożliwia w tej chwili obciążeniom roboczym żądanie certyfikatów za pośrednictwem API certificates.k8s.io, ale brakuje standardowego sposobu dla podpisujących do dystrybucji ich kotwic zaufania do obciążeń roboczych. Kotwice zaufania, które są zwykle certyfikatami root lub pośrednimi, są niezbędne do walidacji łańcuchów certyfikatów i często są specyficzne dla kontekstu1.
Aby rozwiązać tę lukę, w Kubernetes 1.33 wprowadzono nowy zasób o zakresie klastra zwany ClusterTrustBundle, specjalistyczny obiekt do przechowywania i udostępniania kotwic zaufania. Pakiety te są opcjonalnie powiązane z określonym podpisującym certyfikat dzięki .spec.signerName, przy czym kontrole RBAC regulują ich mutację1.
Harmonogram wydania Kubernetes 1.33
Zgodnie z oficjalnym harmonogramem wydania Kubernetes 1.33, najważniejsze etapy procesu wydania są następujące:
- 13 stycznia 2025: Początek cyklu wydania
- 6 lutego 2025: Zamrożenie gotowości produkcyjnej (Production Readiness Freeze)
- 14 lutego 2025: Zamrożenie usprawnień (Enhancements Freeze)
- 5 marca 2025: Zamrożenie bloga o funkcjach (Feature blog freeze)
- 21 marca 2025: Zamrożenie kodu i testów (Code Freeze and Test Freeze)
- 1-4 kwietnia 2025: KubeCon EU
- 8 kwietnia 2025: Zamrożenie dokumentacji (Docs Freeze)
- 23 kwietnia 2025: Wydanie Kubernetes v1.33.0
Obecnie Kubernetes 1.33 jest w fazie beta (beta.0)3, a finalne wydanie jest zaplanowane na 23 kwietnia 2025 roku.
Przygotowanie do aktualizacji
Aby przygotować się do aktualizacji do Kubernetes 1.33, administratorzy powinni:
- Zapoznać się z pełnym rejestrem zmian Kubernetes 1.33 dostępnym na GitHubie3
- Sprawdzić potencjalne problemy z kompatybilnością wsteczną
- Przetestować aktualizację w środowisku nieprodukcyjnym
- Zaktualizować skrypty CI/CD i narzędzia operacyjne, aby uwzględnić nowe funkcje
- Rozważyć, które nowe funkcje mogą być przydatne w ich konkretnym przypadku użycia
Podsumowanie
Kubernetes 1.33 stanowi znaczący krok naprzód dla platformy orkiestracji kontenerów, wprowadzając liczne ulepszenia w zakresie wydajności, bezpieczeństwa i użyteczności. najważniejsze funkcje, takie jak kuberc dla kubectl, OrderedNamespaceDeletion, streaming JSON dla odpowiedzi LIST oraz ClusterTrustBundle dla certyfikatów X.509, mają na celu ułatwienie zarządzania klastrami i poprawę bezpieczeństwa.
Finalne wydanie Kubernetes 1.33 jest zaplanowane na 23 kwietnia 2025 roku, a administratorzy i deweloperzy powinni zapoznać się z nowymi funkcjami i potencjalnymi zmianami, aby przygotować się do aktualizacji.