Skip to content

htomasz/kubek

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

Kubernetes Masterclass — Pełne definicje i Troubleshooting

Lekcja 1: Podstawowe pojęcia

Pod (Pod)

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

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

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

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

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

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

Namespace to izolacja zasobów w klastrze — użyteczne przy wielu środowiskach (dev/test/prod) w jednym clusterze.

Rollout

Rollout to proces wdrażania zmian w Deployment. Kubernetes może stopniowo zastępować stare pody nowymi, kontrolując dostępność aplikacji.

Lekcja 2: Sprawdzanie statusu podów i node'ów

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.

Lekcja 3: Deployment, ReplicaSet i Rollout

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.

Lekcja 4: Logi i debugowanie

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.

Lekcja 5: Service i sieć

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.

Lekcja 6: ConfigMap i Secret

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.

Lekcja 7: Zasoby i probe

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.

Lekcja 8: Debugowanie obrazów

kubectl describe pod <pod>

ImagePullBackOff i błędy inicjalizacji kontenera.

kubectl get secret docker-registry

Sprawdzenie dostępu do prywatnych rejestrów Docker.

Lekcja 9: Node i problemy sprzętowe

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.

Lekcja 10: Zaawansowane debugowanie

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.

Podsumowanie

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors