Lab 06 – Jak se v kubectl vyznat

Lab 06 – Jak se v kubectl vyznat

Infodiscovery

Cíl: už nikdy nepotřebovat internet na otázku o Kubernetes. Kapitola: Jak se v kubectl vyznat

U každého úkolu je napsané, co máte nakonec vidět. Nejdřív zkoušejte sami; v boxu je jedna funkční odpověď.


Úkol 1. Vypište všechny druhy objektů, které cluster zná, a zjistěte, jestli jsou ingresses v namespace a jakou mají zkratku.

kubectl api-resources
kubectl api-resources | grep -i ingress

ingresses ing networking.k8s.io/v1 true Ingress – zkratka ing, true znamená v namespace.


Úkol 2. Vypište jen druhy, které nejsou v namespace. Měli byste vidět nodes, persistentvolumes, storageclasses a samotné namespaces.

kubectl api-resources --namespaced=false

Úkol 3. Bez opuštění terminálu zjistěte, jaká pole patří pod spec.containers[].resources u podu a co přijímá spec.restartPolicy.

kubectl explain pod.spec.containers.resources
kubectl explain pod.spec.restartPolicy

explain se generuje z API serveru, se kterým mluvíte, takže vždy sedí na vaši verzi.


Úkol 4. Najděte minimální povinná pole pravidla Ingressu – ta označená jako required.

kubectl explain ingress.spec.rules
kubectl explain ingress.spec.rules.http.paths --recursive

Hledejte -required- v popisech polí.


Úkol 5. Chcete vytvořit Deployment imperativně, ale nepamatujete si přepínače. Najděte vestavěné příklady.

kubectl create deployment --help

Blok Examples: na konci libovolné --help bývá nejrychlejší odpovědí v celém nástroji.


Úkol 6. Vytvořte pod explorer s image nginx:1.27 a pak vypište jen jeho IP adresu a uzel, na kterém přistál – nic jiného.

kubectl run explorer --image nginx:1.27
kubectl get pod explorer -o jsonpath='{.status.podIP} {.spec.nodeName}{"\n"}'

nebo čitelněji:

kubectl get pod explorer -o custom-columns=IP:.status.podIP,NODE:.spec.nodeName

Úkol 7. Zobrazte celý uložený objekt explorer včetně výchozích hodnot, které jste nikdy nenapsali. Najděte terminationGracePeriodSeconds a dnsPolicy.

kubectl get pod explorer -o yaml | less
kubectl get pod explorer -o yaml | grep -E 'terminationGracePeriod|dnsPolicy'

Všechno, co jste neuvedli, doplnil API server – proto je get -o yaml mnohem delší než manifest, který jste nasadili.


Úkol 8. Zobrazte události podu explorer: naplánování, stažení image, start.

kubectl describe pod explorer          # Events jsou dole
kubectl get events --sort-by=.lastTimestamp | tail -10

Úkol 9. Vypište access log nginxu z podu explorer a pak ho sledujte průběžně, zatímco na pod pošlete požadavek z jednorázového podu.

kubectl logs explorer
kubectl logs -f explorer &
kubectl run tmp --image busybox --restart=Never -it --rm -- \
  wget -qO- --timeout=3 "$(kubectl get pod explorer -o jsonpath='{.status.podIP}')"
kill %1

Úkol 10. Zjistěte, jestli v tomto clusteru smíte mazat uzly.

kubectl auth can-i delete nodes
kubectl auth can-i --list | head -20

Úklid

kubectl delete pod explorer
Tip

Čtyři příkazy odpovědí skoro na všechno: api-resources (co existuje), explain (jaká pole), describe (co se dělo), logs (co řekla aplikace).