03: Pod z YAML — deklaratywne podejście

Poznajemy Pody w Kubernetes

15 min

Cel zadania

Zrozumienie czym jest Pod w Kubernetes poprzez poznanie jego struktury i samodzielne stworzenie działającego Poda.

Teoria: Anatomia Poda

Czym jest Pod?

  • Najmniejsza jednostka w Kubernetes
  • Grupa jednego lub więcej kontenerów
  • Kontenery w Podzie:
    • Dzielą tę samą przestrzeń sieciową (ten sam IP)
    • Uruchamiają się na tym samym węźle
    • Mogą komunikować się przez localhost

Przykładowy manifest Pod

Poniżej znajduje się przykład z wyjaśnieniem każdej sekcji:

apiVersion: v1                # Wersja API Kubernetes której używamy dla Poda
kind: Pod                     # Typ zasobu który tworzymy
metadata:                     # Sekcja z metadanymi
  name: przyklad-pod         # Nazwa Poda - musi być unikalna w namespace
  labels:                    # Etykiety - pomagają organizować i wyszukiwać Pody
    app: frontend           # Przykładowa etykieta określająca aplikację
    env: dev               # Przykładowa etykieta określająca środowisko

spec:                        # Specyfikacja Poda - najważniejsza część!
  containers:               # Lista kontenerów w Podzie
  - name: nginx            # Nazwa kontenera
    image: nginx:1.14.2    # Obraz kontenera z wersją
    ports:                 # Lista portów do ekspozycji
    - containerPort: 80    # Port na którym aplikacja nasłuchuje w kontenerze

Co oznaczają poszczególne pola?

  1. Sekcja główna:
    • apiVersion: Określa wersję API Kubernetes dla danego typu zasobu
    • kind: Określa typ zasobu (Pod, Deployment, Service, itd.)
  2. metadata:
    • name: Unikalna nazwa Poda w namespace
    • labels: Etykiety służące do organizacji i wyszukiwania
  3. spec:
    • containers: Lista kontenerów w Podzie
      • name: Nazwa kontenera (używana w logach i komendach)
      • image: Obraz kontenera z rejestru
      • ports: Porty które kontener udostępnia
        • containerPort: Port na którym aplikacja nasłuchuje

Anatomia Poda — diagram

graph TB
    subgraph POD["Pod: przyklad-pod"]
        subgraph CONT["Kontener: nginx"]
            IMG["Image: nginx:1.14.2"]
            PORT["Port: 80"]
        end
        NET["Shared Network<br/>(wspólne IP)"]
        LABELS["Labels:<br/>app: frontend<br/>env: dev"]
    end

    CONT ---|"nasłuchuje na"| PORT
    POD ---|"identyfikowany przez"| LABELS

    style POD fill:#f0f4ff,stroke:#4a6fa5
    style CONT fill:#e8f5e9

Zadanie praktyczne: Stwórz Pod z aplikacją kuard

Wymagania

Stwórz manifest Pod dla aplikacji kuard, który spełnia następujące wymagania:

  1. Użyj obrazu gcr.io/kuar-demo/kuard-amd64:1
  2. Aplikacja działa na porcie 8080
  3. Nazwa poda musi zawierać Twój numer (-XX)
  4. Pod musi mieć etykiety:
    • app: kuard
    • team: teamXX (gdzie XX to Twój numer)

Kroki do wykonania

  1. Stwórz nowy plik kuard-pod-XX.yaml i napisz w nim manifest
    • Użyj struktury poznanej w części teoretycznej
    • Dostosuj pola do wymagań zadania
  2. Wdróż swojego Poda:
    kubectl apply -f kuard-pod-XX.yaml
    
  3. Sprawdź czy Pod działa:
    kubectl get pods
    
  4. Przekieruj port do aplikacji:
    kubectl port-forward [nazwa-twojego-poda] 8080:8080
    
  5. Otwórz w przeglądarce: http://localhost:8080

Przydatne komendy

# Sprawdzenie statusu Poda
kubectl get pod [nazwa-poda]

# Szczegółowe informacje o Podzie
kubectl describe pod [nazwa-poda]

# Sprawdzenie logów
kubectl logs [nazwa-poda]

# Dodanie nowej etykiety
kubectl label pod [nazwa-poda] [klucz]=[wartość]

Pytania kontrolne

  1. Jakie informacje znajdują się w sekcji metadata?
  2. Do czego służą etykiety w Kubernetes?
  3. Jak sprawdzić logi Poda?
  4. Co się stanie jeśli spróbujesz stworzyć dwa Pody o tej samej nazwie?
  5. Jak dodać nową etykietę do już działającego Poda?

Tips

  • Zawsze weryfikuj nazwę Poda przed wykonaniem komend
  • Używaj opisowych etykiet
  • Sprawdzaj logi w przypadku problemów
  • Pamiętaj o unikalności nazw w ramach namespace

results matching ""

    No results matching ""