Ściągawka – Kubernetes / Minikube / Docker
1. Tworzenie kontenera (Docker)
# uruchomienie kontenera z Apache
docker run -d --name apache -p 8080:80 httpd:2.4
# uruchomienie kontenera z Apache + PHP
docker run -d --name php-apache -p 8080:80 php:8.2-apache
2. Deploy z pliku YAML
# zastosowanie konfiguracji z pliku
minikube kubectl -- apply -f apache-deployment.yaml
3. Zrzut konfiguracji poda do pliku
# zapis pełnej konfiguracji poda do pliku YAML
minikube kubectl -- get pod NAZWA-PODA -o yaml > pod.yaml
# zapis konfiguracji deploymentu
minikube kubectl -- get deployment apache -o yaml > apache-deployment-dump.yaml
# zapis konfiguracji deploymentu bez tworzenia poda
kubectl run moj-pod --image=nginx --dry-run=client -o yaml > pod.yaml
4. Zalogowanie się do poda
# wejście do poda z powłoką sh
minikube kubectl -- exec -it NAZWA-PODA -- /bin/sh
# przykład
minikube kubectl -- exec -it apache-d59967b49-mwtvq -- /bin/sh
5. Wyświetlenie listy podów
# wszystkie pody w namespace
minikube kubectl -- get pods
# pody z konkretną etykietą
minikube kubectl -- get pods -l app=apache
# lista podów z nazwą i obrazem kontenera
kubectl get pod -o custom-columns=CONTAINER:.metadata.name,IMAGE:.spec.containers[0].image
minikube kubectl -- get pod -o custom-columns=CONTAINER:.metadata.name,IMAGE:.spec.containers[0].image
6. Service, Ingress, szczegóły
# lista serwisów
minikube kubectl -- get svc
# szczegóły serwisu
minikube kubectl -- describe svc apache-service
# lista ingressów
minikube kubectl -- get ingress
# szczegóły ingressu
minikube kubectl -- describe ingress NAZWA-INGRESSU
7. Restart i status deploymentu
# restart deploymentu
minikube kubectl -- rollout restart deployment apache
# status rollout
minikube kubectl -- rollout status deployment apache
8. Testowanie z hosta (curl)
# test przez Ingress (Host: apache.local)
curl -H "Host: apache.local" http://192.168.49.2
# test konkretnego pliku
curl -H "Host: apache.local" http://192.168.49.2/pod.txt
9. NFS – szybkie przypomnienie
# sprawdzenie zawartości katalogu montowanego w podzie
minikube kubectl -- exec -it NAZWA-PODA -- ls -l /usr/local/apache2/htdocs
10. HPA – autoskalowanie podów
# włączenie metrics-server (wymagane do HPA)
minikube addons enable metrics-server
# podgląd autoskalera
minikube kubectl -- get hpa
# podgląd autoskalera na żywo
minikube kubectl -- get hpa --watch
# utworzenie HPA (CPU > 70%)
minikube kubectl -- autoscale deployment apache --cpu-percent=70 --min=2 --max=10
# usunięcie HPA
minikube kubectl -- delete hpa apache
# sprawdzanie podów podczas skalowania
minikube kubectl -- get pods -w
11. Usuwanie / ubijanie poda
# usunięcie (ubicie) konkretnego poda
minikube kubectl -- delete pod NAZWA-PODA
# przykład
minikube kubectl -- delete pod apache-12345abcd-xyz
12. Tworzenie poda
# utworzenie prostego poda z obrazem nginx
minikube kubectl -- run moj-pod --image=nginx
# utworzenie poda z otwartym portem 80
minikube kubectl -- run web --image=nginx --port=80
# utworzenie poda i zapisanie YAML zamiast uruchamiania
minikube kubectl -- run test --image=nginx --dry-run=client -o yaml > pod.yaml
# usunięcie poda
minikube kubectl -- delete pod NAZWA-PODA
13. Przenoszenie Deploymentu do innego namespace
# 1. Sprawdzenie, gdzie istnieje Deployment
minikube kubectl -- get deployment --all-namespaces
# 2. Usunięcie starego Deploymentu z default (jeśli istnieje)
minikube kubectl -- delete deployment apache -n default
# 3. Utworzenie namespace (jeśli jeszcze nie istnieje)
minikube kubectl -- create namespace moj-namespace
# 4. Dodanie namespace do YAML
# metadata:
# name: apache
# namespace: moj-namespace
# 5. Zastosowanie YAML w nowym namespace
minikube kubectl -- apply -f apache-deployment.yaml
# 6. Sprawdzenie podów w nowym namespace
minikube kubectl -- get pods -n moj-namespace
7. Usuwanie zasobów
# usunięcie zasobu z pliku YAML
minikube kubectl -- delete -f apache-deployment.yaml
# usunięcie konkretnego poda
minikube kubectl -- delete pod NAZWA-PODA
# usunięcie deploymentu po nazwie
minikube kubectl -- delete deployment apache
8. Deployment – lista i szczegóły
# lista deploymentów
minikube kubectl -- get deployments
# szczegóły konkretnego deploymentu
minikube kubectl -- describe deployment NAZWA-DEPLOYMENTU
# lista repliksetów powiązanych z deploymentem
minikube kubectl -- get rs
# szczegóły konkretnego replicaset
minikube kubectl -- describe rs NAZWA-RS
9. Namespace – lista, tworzenie, przełączanie, usuwanie
# wyświetlenie listy namespace
minikube kubectl -- get ns
# przejście do konkretnego namespace
minikube kubectl -- config set-context --current --namespace=moj-namespace
# jednorazowe użycie namespace
minikube kubectl -- get pods -n moj-namespace
# dodanie namespace
minikube kubectl -- create namespace moj-namespace
# usunięcie namespace
minikube kubectl -- delete namespace moj-namespace
# wyświetlenie podów w namespace
minikube kubectl -- get pods -n moj-namespace
# wyświetlenie deploymentów w namespace
minikube kubectl -- get deployments -n moj-namespace
# wyświetlenie wszystkich podów
minikube kubectl -- get pods -A
11. Systemowe pody Kubernetes – co to jest?
# coredns
DNS klastra – pozwala podom odnajdywać usługi po nazwie.
# etcd
Wewnętrzna baza danych Kubernetes – przechowuje cały stan klastra.
# kube-apiserver
Główny punkt wejścia do klastra.
# kube-controller-manager
Zestaw kontrolerów – pilnuje replik i obiektów.
# kube-scheduler
Decyduje, gdzie uruchomić nowy pod.
# kube-proxy
Warstwa sieciowa – iptables/IPVS.
# metrics-server
Zbiera metryki CPU/RAM.
# storage-provisioner
Dynamiczne PV dla PVC.
12. Architektura produkcyjnego klastra Kubernetes
# minimalny klaster produkcyjny (HA)
3 × control-plane
2 × worker
# rola control-plane
- etcd
- API Server
- Scheduler
- Controller Manager
# rola worker
- pody aplikacyjne
- kube-proxy
# typowe parametry
CPU: 4–8 vCPU
RAM: 16–32 GB
Dysk: SSD/NVMe
# enterprise
3 × control-plane
10–100 × worker
15. Sekrety – listowanie, podgląd, dekodowanie
# lista sekretów
minikube kubectl -- get secrets
# szczegóły sekretu
minikube kubectl -- describe secret NAZWA-SEKRETU
# YAML sekretu
minikube kubectl -- get secret NAZWA-SEKRETU -o yaml
# dekodowanie klucza
minikube kubectl -- get secret NAZWA-SEKRETU \
-o jsonpath="{.data.KEY}" | base64 -d
Ściągawka – Kubernetes (kubeadm / produkcyjny klaster)
1. Tworzenie kontenera (Docker)
# uruchomienie kontenera z Apache
docker run -d --name apache -p 8080:80 httpd:2.4
# uruchomienie kontenera z Apache + PHP
docker run -d --name php-apache -p 8080:80 php:8.2-apache
2. Deploy z pliku YAML
# zastosowanie konfiguracji z pliku
kubectl apply -f apache-deployment.yaml
3. Zrzut konfiguracji poda do pliku
# zapis pełnej konfiguracji poda do pliku YAML
kubectl get pod NAZWA-PODA -o yaml > pod.yaml
# zapis konfiguracji deploymentu
kubectl get deployment apache -o yaml > apache-deployment-dump.yaml
# zapis konfiguracji deploymentu bez tworzenia poda
kubectl run moj-pod --image=nginx --dry-run=client -o yaml > pod.yaml
4. Zalogowanie się do poda
# wejście do poda z powłoką sh
kubectl exec -it NAZWA-PODA -- /bin/sh
# przykład
kubectl exec -it apache-d59967b49-mwtvq -- /bin/sh
5. Wyświetlenie listy podów
# wszystkie pody w namespace
kubectl get pods
# pody z konkretną etykietą
kubectl get pods -l app=apache
# lista podów z nazwą i obrazem kontenera
kubectl get pod -o custom-columns=CONTAINER:.metadata.name,IMAGE:.spec.containers[0].image
6. Service, Ingress, szczegóły
# lista serwisów
kubectl get svc
# szczegóły serwisu
kubectl describe svc apache-service
# lista ingressów
kubectl get ingress
# szczegóły ingressu
kubectl describe ingress NAZWA-INGRESSU
7. Restart i status deploymentu
# restart deploymentu
kubectl rollout restart deployment apache
# status rollout
kubectl rollout status deployment apache
8. Testowanie z hosta (curl)
# test przez Ingress (Host: apache.local)
curl -H "Host: apache.local" http://ADRES-LOADBALANCERA
# test konkretnego pliku
curl -H "Host: apache.local" http://ADRES-LOADBALANCERA/pod.txt
9. NFS – szybkie przypomnienie
# sprawdzenie zawartości katalogu montowanego w podzie
kubectl exec -it NAZWA-PODA -- ls -l /usr/local/apache2/htdocs
10. HPA – autoskalowanie podów
# włączenie metrics-server (jeśli nie ma w klastrze)
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
# podgląd autoskalera
kubectl get hpa
# podgląd autoskalera na żywo
kubectl get hpa --watch
# utworzenie HPA (CPU > 70%)
kubectl autoscale deployment apache --cpu-percent=70 --min=2 --max=10
# usunięcie HPA
kubectl delete hpa apache
# sprawdzanie podów podczas skalowania
kubectl get pods -w
11. Usuwanie / ubijanie poda
# usunięcie (ubicie) konkretnego poda
kubectl delete pod NAZWA-PODA
# przykład
kubectl delete pod apache-12345abcd-xyz
12. Tworzenie poda
# utworzenie prostego poda z obrazem nginx
kubectl run moj-pod --image=nginx
# utworzenie poda z otwartym portem 80
kubectl run web --image=nginx --port=80
# utworzenie poda i zapisanie YAML zamiast uruchamiania
kubectl run test --image=nginx --dry-run=client -o yaml > pod.yaml
# usunięcie poda
kubectl delete pod NAZWA-PODA
13. Przenoszenie Deploymentu do innego namespace
# 1. Sprawdzenie, gdzie istnieje Deployment
kubectl get deployment --all-namespaces
# 2. Usunięcie starego Deploymentu
kubectl delete deployment apache -n default
# 3. Utworzenie namespace
kubectl create namespace moj-namespace
# 4. Dodanie namespace do YAML
# metadata:
# name: apache
# namespace: moj-namespace
# 5. Zastosowanie YAML
kubectl apply -f apache-deployment.yaml
# 6. Sprawdzenie podów
kubectl get pods -n moj-namespace
7. Usuwanie zasobów
# usunięcie zasobu z pliku YAML
kubectl delete -f apache-deployment.yaml
# usunięcie konkretnego poda
kubectl delete pod NAZWA-PODA
# usunięcie deploymentu
kubectl delete deployment apache
8. Deployment – lista i szczegóły
# lista deploymentów
kubectl get deployments
# szczegóły konkretnego deploymentu
kubectl describe deployment NAZWA-DEPLOYMENTU
# lista repliksetów
kubectl get rs
# szczegóły replicaset
kubectl describe rs NAZWA-RS
9. Namespace – lista, tworzenie, przełączanie, usuwanie
# lista namespace
kubectl get ns
# ustawienie domyślnego namespace
kubectl config set-context --current --namespace=moj-namespace
# jednorazowe użycie namespace
kubectl get pods -n moj-namespace
# dodanie namespace
kubectl create namespace moj-namespace
# usunięcie namespace
kubectl delete namespace moj-namespace
# pody w namespace
kubectl get pods -n moj-namespace
# deploymenty w namespace
kubectl get deployments -n moj-namespace
# wszystkie pody
kubectl get pods -A
11. Systemowe pody Kubernetes – co to jest?
# coredns
DNS klastra.
# etcd
Baza danych klastra.
# kube-apiserver
Punkt wejścia do klastra.
# kube-controller-manager
Kontrolery replik i obiektów.
# kube-scheduler
Planowanie podów.
# kube-proxy
Warstwa sieciowa.
# metrics-server
Metryki CPU/RAM.
12. Architektura produkcyjnego klastra Kubernetes
# minimalny klaster produkcyjny (HA)
3 × control-plane
2 × worker
# rola control-plane
- etcd
- API Server
- Scheduler
- Controller Manager
# rola worker
- pody aplikacyjne
- kube-proxy
# enterprise
3 × control-plane
10–100 × worker
15. Sekrety – listowanie, podgląd, dekodowanie
# lista sekretów
kubectl get secrets
# szczegóły sekretu
kubectl describe secret NAZWA-SEKRETU
# YAML sekretu
kubectl get secret NAZWA-SEKRETU -o yaml
# dekodowanie klucza
kubectl get secret NAZWA-SEKRETU \
-o jsonpath="{.data.KEY}" | base64 -d