0Pricing
Kubernetes Basics · Lekcja

Cykl życia i stany Poda

Poznaj poszczególne fazy cyklu życia Poda oraz dowiedz się, jak monitorować jego stan.

Cykl życia i stany Poda to bezpłatna lekcja Kubernetes Basics na CoddyKit. To lekcja 2 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 Kubernetes Basics, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kubernetes Basics zawiera 4 lekcji w sumie.

Pody: podróż przez cykl życia

Pody nie są statyczne — przechodzą przez różne etapy, niczym w podróży. Zrozumienie tego „cyklu życia” ma kluczowe znaczenie dla skutecznego zarządzania aplikacjami w Kubernetes.

Pozwala określić, czy aplikacja działa poprawnie, uruchamia się albo napotkała problem.

Cykl życia i stany Poda — ilustracja 1

Pięć etapów życia Poda

Kubernetes dzieli Pody na pięć głównych faz. Dają one ogólny obraz bieżącego stanu Poda:

  • Pending: Pod został zaakceptowany przez Kubernetes, ale jego kontenery nie zostały jeszcze uruchomione.
  • Running: Co najmniej jeden kontener w Podzie działa lub jest uruchamiany.
  • Succeeded: Wszystkie kontenery w Podzie zakończyły działanie pomyślnie i nie zostaną uruchomione ponownie.
  • Failed: Wszystkie kontenery zakończyły działanie, a co najmniej jeden z nich zakończył się niepowodzeniem (np. zwrócił kod różny od zera).
  • Unknown: Nie można określić stanu Poda, często z powodu problemów z komunikacją.

Faza 1: Pody w stanie Pending

Pod znajduje się w fazie Pending, gdy został zaakceptowany przez serwer API Kubernetes, ale co najmniej jeden z jego kontenerów nie został jeszcze utworzony lub skonfigurowany.

Typowe przyczyny to:

  • Obraz kontenera jest nadal pobierany.
  • Klaster nie ma wystarczających zasobów (CPU/pamięci), aby zaplanować uruchomienie Poda.
  • Woluminy są nadal przygotowywane lub montowane.

Obserwowanie Poda w stanie Pending

Przyjrzyjmy się przykładowi. Jeśli spróbujesz wdrożyć Poda z obrazem, który nie istnieje, może on utknąć w stanie „Pending” lub wyświetlić błąd pobierania obrazu.

Oto przykładowa definicja Poda:

apiVersion: v1
kind: Pod
metadata:
  name: pending-pod-demo
spec:
  containers:
  - name: my-container
    image: non-existent-image:latest
    ports:
    - containerPort: 80

Aby sprawdzić jego stan, użyj polecenia kubectl get pod. Możesz zobaczyć coś takiego:

$ kubectl get pod pending-pod-demo
NAME               READY   STATUS         RESTARTS   AGE
pending-pod-demo   0/1     ErrImagePull   0          5s

ErrImagePull oznacza, że nie udało się pobrać obrazu, przez co Pod nie przechodzi do stanu Running.

Faza 2: Uruchamianie Podów

Faza Running oznacza, że Pod został przypisany do węzła, a wszystkie jego kontenery zostały pomyślnie utworzone. Co najmniej jeden kontener działa albo jest uruchamiany lub ponownie uruchamiany.

Należy pamiętać, że Pod w stanie Running nie oznacza automatycznie, że znajdująca się w nim aplikacja jest zdrowa lub w pełni funkcjonalna. Oznacza to jedynie, że kontenery są aktywne.

Uruchamianie Poda

Oto standardowa definicja Poda dla serwera internetowego Nginx. Po jej zastosowaniu Pod powinien szybko przejść do stanu „Running”.

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers:
  - name: nginx
    image: nginx:latest
    ports:
    - containerPort: 80

Po wdrożeniu polecenie kubectl get pod wyświetliłoby:

$ kubectl get pod nginx-pod
NAME        READY   STATUS    RESTARTS   AGE
nginx-pod   1/1     Running   0          10s

Wartość 1/1 w kolumnie READY potwierdza, że gotowy jest jeden kontener z jednego zdefiniowanego.

Fazy 3 i 4: Succeeded i Failed

Te fazy reprezentują stany zakończenia Poda:

  • Succeeded: Pod przechodzi do tej fazy, gdy wszystkie znajdujące się w nim kontenery zakończyły działanie pomyślnie i nie zostaną ponownie uruchomione. Jest to typowe dla Podów wykonujących jednorazowe zadania lub zadania wsadowe.
  • Failed: Pod znajduje się w fazie Failed, gdy wszystkie jego kontenery zakończyły działanie, a co najmniej jeden z nich zakończył je niepowodzeniem, na przykład zwrócił kod wyjścia różny od zera.

Zrozumienie tych faz pomaga diagnozować zakończenie zadań lub błędy aplikacji.

Tajemnicza faza Unknown

Faza Unknown oznacza, że nie można było ustalić stanu Poda. Jest to rzadka, ale krytyczna faza.

Zwykle występuje, gdy Kubelet (agent) na węźle, na którym działa Pod, przestaje komunikować się z serwerem API Kubernetes. Przyczyną może być problem z siecią, awaria Kubeleta lub problem z samym węzłem.

Stany kontenerów w Podach

Podczas gdy Pody mają ogólne fazy, poszczególne kontenery w Podzie mają również własne, bardziej szczegółowe stany. Stany te bezpośrednio wpływają na ogólną fazę Poda:

  • Waiting: Kontener oczekuje obecnie na uruchomienie. Przyczyną może być pobieranie obrazu, przydzielanie zasobów lub oczekiwanie na zakończenie działania kontenerów inicjujących.
  • Running: Kontener aktywnie wykonuje działanie bez problemów.
  • Terminated: Kontener zakończył wykonywanie. Mogło ono zakończyć się pomyślnie lub niepowodzeniem.

Sprawdzanie stanu Poda

Wyobraź sobie, że właśnie wdrożono nowy Pod. Uruchamiasz polecenie kubectl get pod my-app i widzisz następujące dane wyjściowe:

NAME      READY   STATUS     RESTARTS   AGE
my-app    0/1     Pending    0          12s

Jaki jest najbardziej prawdopodobny powód, dla którego Pod my-app znajduje się w stanie Pending, a liczba gotowych kontenerów wynosi 0/1?

Podsumowanie cyklu życia i kolejne kroki

Wiesz już, że Pody Kubernetes przechodzą przez określone fazy: Pending, Running, Succeeded, Failed i Unknown. Fazy te dostarczają ogólnych informacji o stanie operacyjnym Poda.

Omówiliśmy również poszczególne stany kontenerów (Waiting, Running, Terminated), które wpływają na ogólną fazę Poda. Monitorowanie tych stanów za pomocą poleceń kubectl get pod i kubectl describe pod (które zostaną dokładniej omówione później) ma kluczowe znaczenie dla zrozumienia kondycji aplikacji.

W następnym kroku zajmiemy się zaawansowanymi wzorcami dla Podów i dowiemy się, jak uruchamiać wiele współlokowanych kontenerów w jednym Podzie za pomocą wzorca sidecar!

Często zadawane pytania

Czy lekcja „Cykl życia i stany Poda” jest bezpłatna?

Tak — pełny tekst „Cykl życia i stany Poda” 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 Kubernetes Basics, przejdź na CoddyKit PRO. Kurs Kubernetes Basics zawiera 4 lekcji w sumie.

Co nauczysz się w „Cykl życia i stany Poda”?

Poznaj poszczególne fazy cyklu życia Poda oraz dowiedz się, jak monitorować jego stan. Ćwiczysz Kubernetes Basics 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ąć Kubernetes Basics?

Nie wymagamy żadnego doświadczenia. Kubernetes Basics 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 2 z 4.

Ile czasu zajmuje lekcja „Cykl życia i stany Poda”?

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 Kubernetes Basics?

Tak. Każda lekcja Kubernetes Basics 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

  1. Pody: najmniejsza jednostka
  2. Cykl życia i stany Poda
  3. Pody wielokontenerowe (sidecary)
  4. Kontenery init i kolejność uruchamiania
← Powrót do Kubernetes Basics