kubectl tahák
kubectl tahák
Spouštějte na support01 s připraveným ~/.kube/config (Lab 01). Bez sudo.
Nastavení, které ušetří hodiny
alias k=kubectl
source <(kubectl completion bash)
complete -o default -F __start_kubectl k
export do="--dry-run=client -o yaml" # pak: kubectl run x --image=nginx $do
kubectl config set-context --current --namespace=dev
Ptejte se clusteru, ne internetu
| Otázka | Příkaz |
|---|
| Jaké druhy objektů existují? zkratky? namespace? | kubectl api-resources |
| Které druhy jsou mimo namespace? | kubectl api-resources --namespaced=false |
| Jaká pole má tenhle druh? | kubectl explain ingress.spec.rules |
| Všechna pole najednou | kubectl explain deploy.spec --recursive |
| Co tenhle příkaz umí? | kubectl create --help (příklady na konci) |
| Globální přepínače | kubectl options |
| Verze klienta / serveru | kubectl version |
| Smím tohle udělat? | kubectl auth can-i create deployments -n dev |
Rozhlédnout se
| Úkol | Příkaz |
|---|
| Je cluster dostupný? | kubectl cluster-info |
| Uzly s IP a verzemi | kubectl get nodes -o wide |
| Všechno v namespace | kubectl get all -n dev |
| Napříč namespacy | kubectl get pods -A |
| Sledovat změny živě | kubectl get pods -w |
| Události podle času | kubectl get events --sort-by=.lastTimestamp |
| Jen varování, všude | kubectl get events -A --field-selector type=Warning |
| Spotřeba zdrojů | kubectl top nodes / kubectl top pods |
| Podle labelu | kubectl get pods -l app=web |
| Vlastní sloupce | kubectl get pods -o custom-columns=NAME:.metadata.name,NODE:.spec.nodeName |
Vytvářet a měnit
| Úkol | Příkaz |
|---|
| Nasadit manifest (i adresář) | kubectl apply -f pod.yaml / -f ./manifests/ |
| Vygenerovat YAML bez vytvoření | kubectl run web --image nginx --dry-run=client -o yaml > web.yaml |
| YAML pro Deployment | kubectl create deploy web --image nginx --dry-run=client -o yaml |
| Service pro deployment | kubectl expose deploy web --port 80 --type NodePort |
| Ingress (starší) | kubectl create ingress web --rule="web.k8s.lab/*=web-svc:80" |
| Upravit živý objekt | kubectl edit deploy web |
| Změnit jedno pole | kubectl patch svc web -p '{"spec":{"type":"NodePort"}}' |
| Škálovat | kubectl scale deploy web --replicas=3 |
| Změnit image | kubectl set image deploy/web nginx=nginx:1.28 |
| Proměnné z ConfigMapy | kubectl set env deploy/web --from=configmap/app-cfg |
| Label / anotace | kubectl label pod web tier=frontend |
| Smazat | kubectl delete -f web.yaml / kubectl delete pod web |
Zkoumat a ladit
| Úkol | Příkaz |
|---|
| Všechno o objektu + události | kubectl describe pod web |
| Živý objekt jako YAML | kubectl get pod web -o yaml |
| Jedno pole | kubectl get pod web -o jsonpath='{.status.podIP}' |
| Logy, průběžně, předchozí pád | kubectl logs -f web / kubectl logs web --previous |
| Logy jednoho kontejneru | kubectl logs web -c sidecar |
| Logy podle labelu / přes kontroler | kubectl logs -l app=web --tail=50 / kubectl logs deploy/web |
| Shell dovnitř | kubectl exec -it web -- sh |
| Pod na jedno použití | kubectl run tmp --image busybox --restart=Never -it --rm -- sh |
| Tunel na stanici | kubectl port-forward svc/web 8080:80 |
| Kopírování souborů | kubectl cp web:/etc/nginx/nginx.conf ./nginx.conf |
| Endpointy služby | kubectl get endpointslices -l kubernetes.io/service-name=web |
Aplikace
kubectl rollout status deploy/web
kubectl rollout history deploy/web
kubectl rollout undo deploy/web
kubectl rollout restart deploy/web
kubectl get rs -l app=web # který ReplicaSet je aktivní
kubectl get ds -A # DaemonSety
kubectl get sts # StatefulSety
Úložiště
kubectl get pv # cluster-scoped
kubectl get pvc -A
kubectl describe pvc data # proč je Pending?
kubectl get sc # StorageClasses
kubectl get csidrivers # nainstalované CSI drivery
kubectl get pv -o custom-columns=NAME:.metadata.name,STATUS:.status.phase,CLAIM:.spec.claimRef.name,POLICY:.spec.persistentVolumeReclaimPolicy
kubectl patch pv <pv> -p '{"spec":{"claimRef":null}}' # reuse a Released PV
Gateway API
kubectl get gatewayclass
kubectl get gateway,httproute -A
kubectl describe gateway web-gw # PROGRAMMED + podmínky
kubectl describe httproute shop # Accepted + ResolvedRefs
kubectl explain httproute.spec.rules.backendRefs
CRD musí být nainstalované jako první – Gateway API není součástí Kubernetes.
Custom resources
kubectl get crd
kubectl api-resources --api-group=postgresql.cnpg.io
kubectl explain cluster.spec
kubectl get clusters -A
Uzly
kubectl cordon worker01
kubectl drain worker01 --ignore-daemonsets --delete-emptydir-data
kubectl uncordon worker01
kubectl describe node worker01 | grep -A6 'Allocated resources'
Zkratky
po pods, deploy deployments, rs replicasets, svc services, ing ingresses,
ds daemonsets, sts statefulsets, ns namespaces, cm configmaps, no nodes,
gtw gateways, httproute httproutes,
pv/pvc volumes, sa serviceaccounts, crd customresourcedefinitions.
Reference
kubernetes.io/docs/reference/kubectl/quick-reference