Aktualizacje kroczące i wycofywanie zmian
Wdrażaj aktualizacje aplikacji bez przestojów i wracaj do poprzednich wersji, gdy pojawią się problemy.
Aktualizacje kroczące i wycofywanie zmian to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Aktualizacje bez przestojów: dlaczego
Wyobraź sobie aktualizowanie działającej aplikacji. Bez starannego planowania użytkownicy mogą doświadczyć przestoju lub błędów. Właśnie tutaj aktualizacje kroczące w Kubernetes pokazują swoje zalety!
Aktualizacje kroczące umożliwiają zaktualizowanie aplikacji do nowej wersji bez przerywania jej działania. Nowe wersje są wdrażane stopniowo, dzięki czemu aplikacja pozostaje dostępna.
Jak obiekty Deployment obsługują aktualizacje
Gdy aktualizujesz szablon Poda obiektu Deployment (na przykład zmieniając obraz kontenera), Kubernetes nie wyłącza po prostu wszystkiego i nie uruchamia ponownie. Zamiast tego domyślnie używa strategii RollingUpdate.
- Tworzy nowe Pody ze zaktualizowaną konfiguracją.
- Stopniowo usuwa stare Pody, gdy nowe są już gotowe.
- Proces ten zapewnia płynne przejście przy minimalnym przestoju lub bez przestoju.
Sterowanie tempem wdrażania
Sposób działania aktualizacji kroczących można precyzyjnie dostosować za pomocą dwóch kluczowych parametrów w sekcji .spec.strategy.rollingUpdate obiektu Deployment:
maxUnavailable: Maksymalna liczba Podów, które mogą być niedostępne podczas aktualizacji. Wartość może być podana jako liczba bezwzględna lub procent.maxSurge: Maksymalna liczba Podów, które można utworzyć ponad żądaną liczbę Podów. Wartość również może być podana jako liczba bezwzględna lub procent.
Domyślnie obie wartości wynoszą 25%.
Nasz początkowy obiekt Deployment
Zacznijmy od prostego obiektu Deployment dla Nginx. Ten kod YAML definiuje początkową aplikację uruchamiającą 3 repliki obrazu nginx:1.14.2.
W następnym kroku użyjemy go jako podstawy do przeprowadzenia aktualizacji kroczącej.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80Przeprowadzanie aktualizacji kroczącej
Teraz zaktualizujmy wersję Nginx z 1.14.2 do 1.15.0. Wystarczy zmienić obraz w kodzie YAML i zastosować zmianę.
Kubernetes wykryje zmianę i automatycznie rozpocznie aktualizację kroczącą. Zwróć uwagę na znajdujące się poniżej pole image:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.15.0
ports:
- containerPort: 80Monitorowanie stanu wdrażania
Po zastosowaniu zaktualizowanego kodu YAML można monitorować postęp aktualizacji kroczącej za pomocą polecenia kubectl rollout status:
kubectl rollout status deployment/my-nginx
Zobaczysz komunikaty informujące o tworzeniu nowych Podów i usuwaniu starych aż do zakończenia aktualizacji. Możesz także użyć polecenia kubectl get rs, aby wyświetlić stare i nowe obiekty ReplicaSet.
Sprawdzanie historii wdrażania
Kubernetes przechowuje historię rewizji obiektów Deployment. Jest to niezwykle przydatne do śledzenia zmian i ewentualnego wycofywania aktualizacji.
Aby wyświetlić historię, użyj polecenia:
kubectl rollout history deployment/my-nginx
Zobaczysz listę rewizji, z których każda reprezentuje odmienny stan obiektu Deployment. Wartość CHANGE-CAUSE często odzwierciedla polecenie lub zmianę w kodzie YAML.
Kiedy potrzebne jest wycofanie aktualizacji
Nawet mimo starannego testowania nowa wersja aplikacji może czasami wprowadzić błędy lub problemy z wydajnością, których nie wykryto. W takiej krytycznej sytuacji potrzebny jest szybki sposób na powrót do znanego, stabilnego stanu.
Właśnie do tego służy wycofywanie aktualizacji. Umożliwia ono cofnięcie problematycznej aktualizacji i przywrócenie poprzedniej, działającej wersji obiektu Deployment z jego historii.
Wykonywanie wycofania aktualizacji
Aby wycofać aktualizację do bezpośrednio poprzedniej rewizji, użyj:
kubectl rollout undo deployment/my-nginx
Aby wycofać aktualizację do konkretnej rewizji (na przykład rewizji 1), możesz ją określić:
kubectl rollout undo deployment/my-nginx --to-revision=1
Kubernetes przeprowadzi kolejną aktualizację kroczącą, aby przywrócić Pody do określonej konfiguracji historycznej.
Sprawdzenie strategii wdrażania
Których z poniższych parametrów można użyć do sterowania działaniem strategii RollingUpdate obiektu Deployment Kubernetes?
Podsumowanie: płynne aktualizacje i zabezpieczenia
Omówiliśmy, jak obiekty Deployment w Kubernetes umożliwiają aktualizacje kroczące bez przestojów, zapewniając płynne przejście aplikacji do nowych wersji. Dowiedziałeś się, że:
- Obiekty Deployment domyślnie używają strategii
RollingUpdate. - Parametry
maxUnavailableimaxSurgesterują tempem aktualizacji. kubectl rollout statusmonitoruje postęp.kubectl rollout historyśledzi rewizje.kubectl rollout undoumożliwia szybkie wycofanie zmian do stabilnych wersji.
Funkcje te mają kluczowe znaczenie dla utrzymania wysokiej dostępności i niezawodności aplikacji!
Często zadawane pytania
Czy lekcja „Aktualizacje kroczące i wycofywanie zmian” jest bezpłatna?
Tak — pełny tekst „Aktualizacje kroczące i wycofywanie zmian” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Co nauczysz się w „Aktualizacje kroczące i wycofywanie zmian”?
Wdrażaj aktualizacje aplikacji bez przestojów i wracaj do poprzednich wersji, gdy pojawią się problemy. Ćwiczysz DevOps Bootcamp z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć DevOps Bootcamp?
Nie wymagamy żadnego doświadczenia. DevOps Bootcamp w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Aktualizacje kroczące i wycofywanie zmian”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji DevOps Bootcamp?
Tak. Każda lekcja DevOps Bootcamp zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Poznajemy obiekty Deployments
- Skalowanie aplikacji za pomocą ReplicaSets
- Aktualizacje kroczące i wycofywanie zmian
- Strategie wdrażania: blue-green i canary