Pod jest najmniejszą jednostką wdrożeniową w Kubernetes. Składa się z jednego lub więcej kontenerów, które współdzielą:
- Namespace sieciowy — ten sam IP i porty wewnątrz poda.
- Wolumeny danych — współdzielony storage między kontenerami w podzie.
- Metadata — etykiety i annotacje.
Pody są efemeryczne: jeśli pod się zepsuje, Kubernetes może go zrestartować lub zastąpić nowym.
Node to maszyna w klastrze K8s (fizyczna lub wirtualna), która hostuje pody. Każdy node posiada:
- Kubelet — agent zarządzający podami na node.
- Kube-proxy — zarządza komunikacją sieciową dla podów.
- Zasoby CPU i RAM — które są przydzielane podom.
Cluster to grupa node’ów zarządzanych przez Kubernetes. Składa się z:
- Master node (control plane) — zarządza stanem klastra.
- Worker nodes — wykonują pody.
Deployment to deklaratywny opis pożądanego stanu aplikacji. Zawiera:
- Ile replik poda ma działać.
- Jakie kontenery mają być uruchomione (obraz, tag, env).
- Strategię rollout (np. rolling update).
Kiedy Deployment zostaje zmieniony, Kubernetes tworzy nowe ReplicaSety i aktualizuje pody stopniowo.
ReplicaSet utrzymuje określoną liczbę replik podów. Jeśli pod zostanie zabity lub node zniknie, ReplicaSet utworzy nowy pod, aby osiągnąć pożądaną liczbę kopii.
Service zapewnia stabilny adres IP i DNS dla grupy podów. Typy Service:
- ClusterIP — wewnętrzny adres w klastrze.
- NodePort — port dostępny na node'ach.
- LoadBalancer — integracja z chmurą dla publicznego IP.
Namespace to izolacja zasobów w klastrze — użyteczne przy wielu środowiskach (dev/test/prod) w jednym clusterze.
Rollout to proces wdrażania zmian w Deployment. Kubernetes może stopniowo zastępować stare pody nowymi, kontrolując dostępność aplikacji.
kubectl get pods
Wyświetla listę podów z ich statusami, restart count i wiekiem.
kubectl get nodes
Wyświetla node'y z ich stanem (Ready/NotReady) i etykietami.
kubectl describe pod <nazwa>
Pokazuje wszystkie szczegóły podu, eventy i powody restartów.
kubectl get deployment
Lista Deploymentów w namespace z liczbą replik i status rollout.
kubectl describe deployment <name>
Szczegóły Deployment: strategia rollout, podłączone ReplicaSety, eventy.
kubectl rollout status deployment <name>
Status bieżącego rollout — czy nowe pody są uruchomione i gotowe.
kubectl rollout history deployment <name>
Historia rolloutów (revision), pozwala sprawdzić jakie zmiany były wdrażane.
kubectl rollout undo deployment <name>
Rollback do poprzedniej wersji Deployment, jeśli nowy rollout spowodował błędy.
kubectl logs <pod>
Wyświetla logi głównego kontenera w podzie.
kubectl logs <pod> --previous
Logi poprzedniej instancji podu (przy restartach).
kubectl exec -it <pod> -- sh
Wejście do kontenera, możliwość testowania plików i sieci.
kubectl get svc
Lista usług i typów dostępu.
kubectl get endpoints <service>
Pody powiązane z daną usługą.
kubectl exec -it <pod> -- curl <service>:port
Test połączenia sieciowego wewnątrz klastra.
kubectl get configmap
kubectl describe configmap <name>
Konfiguracja aplikacji i powiązanie z podami.
kubectl get secret
kubectl describe secret <name>
Dane wrażliwe, jak hasła lub tokeny dostępu.
kubectl top pods
kubectl top node
Zużycie CPU/RAM dla podów i node'ów.
kubectl describe pod <name>
Probe (readiness/liveness) i restartCount — krytyczne przy CrashLoopBackOff.
kubectl describe pod <pod>
ImagePullBackOff i błędy inicjalizacji kontenera.
kubectl get secret docker-registry
Sprawdzenie dostępu do prywatnych rejestrów Docker.
kubectl describe node <node_name>
Zasoby node, eventy, tainty, problemy sprzętowe.
kubectl cordon <node_name>
Blokuje node przed przydzielaniem nowych podów.
kubectl drain <node_name>
Przenosi pody do innych node'ów w celu konserwacji.
kubectl debug <pod> -it --image=busybox
Tymczasowy kontener debugujący na tym samym node.
stern <pod_name_pattern>
Tailowanie logów wielu podów na żywo.
kubectl logs -f <pod> -c <container>
Śledzenie logów kontenera w czasie rzeczywistym.
Omówiliśmy szczegółowo:
- Definicje podstawowych pojęć K8s.
- Komendy do monitorowania i debugowania podów i node'ów.
- Deployment, ReplicaSet, Rollout i rollback.
- ConfigMap, Secret i zasoby (probe, CPU/RAM).
- Zaawansowane techniki debugowania i monitoring w klastrze.