Spiekbriefje voor Kubernetes commando’s
Tijdens het werken op Kubernetes is het erg belangrijk dat je op zijn minst de basis commando’s kent. In dit artikel vind je de commando’s die het meest nodig zijn tijdens het werken op het cluster. Als je de commando’s kent, dan kun je af van het schrijven van object definitie bestanden voor eenvoudige objecten en dan objecten maken met behulp van die bestanden. In plaats daarvan kun je de commando’s gebruiken en binnen een fractie van seconden objecten zien ontstaan.
In dit artikel zie je niet alleen de commando’s om details van de objecten te krijgen, maar ook om de objecten te maken. Dit artikel richt zich alleen op commando’s en niet op een beschrijving van die commando’s. Als je elk commando in detail wilt kennen, kun je de officiële documentatie hier bezoeken.
Dit artikel zal een spiekbriefje voor je zijn met betrekking tot de kernobjecten in de Kubernetes Cluster.
Vereisten
- Basiskennis van Kubernetes
- Kubernetes Cluster met minstens 1 worker node.
Als je wilt leren hoe je een Kubernetes Cluster maakt, klik danhier. Deze gids helpt je een Kubernetes cluster te maken met 1 Master en 2 Nodes op AWS Ubuntu 18.04 EC2 Instances.
Wat zullen we zien?
- Belangrijke commando’s
- Cluster Informatie
- Configuratie Informatie
- Namespace
- Pod
- Inzettingen
- Diensten
- Beheer Objecten uit .yaml/.yml bestanden
Belangrijke commando’s
Cluster Informatie
Druk de client en server versie informatie af
kubectl version
Druk de ondersteunde API bronnen op de server af
kubectl api-resources
Druk de ondersteunde API versies op de server af, in de vorm van “groep/versie”
kubectl api-versions
Druk de cluster informatie af
kubectl cluster-info
Verkrijg de lijst van de knooppunten in het cluster
kubectl get nodes
Verkrijg informatie over de master node
kubectl get nodes master -o wide
Verkrijg gedetailleerde informatie over de master nodes
kubectl describe nodes master
Informatie over de configuratie
Toon samengevoegde kubeconfig instellingen
kubectl config view
Bekijk de huidige context
kubectl config current-context
Stel de context in, hier is [email protected] de contextnaam
kubectl config use-context [email protected]
Geef in de kubeconfig gedefinieerde clusters weer
kubectl config get-clusters
Beschrijf één of vele contexten
kubectl config get-contexts
Namespaces
Verkrijg alle namespaces
kubectl get namespaces
Verkrijg namespace informatie in yaml formaat
kubectl get namespaces -o yaml
Beschrijf de standaard namespace
kubectl describe namespace default
Maak een nieuwe namespace
kubectl create namespace my-namespace
Verwijder de naamruimte
kubectl delete namespace my-namespace
Pods
Haal pods op uit de huidige namespace
kubectl get pods
Haal pods op uit alle namespaces
kubectl get pods --all-namespaces
Haal pods op uit de opgegeven namespace
kubectl get pods -namespace=my-namespace
Maak een pod
kubectl run my-pod-1 --image=nginx:latest --dry-run
Kijk hoe de pod verwerkt zou worden
kubectl run my-pod-1 --image=nginx:latest --dry-run=client
Maak een pod in de gespecificeerde namespace
kubectl run my-pod-2 --image=nginx:latest --namespace=my-namespace
Maak een pod met een label eraan
kubectl run nginx --image=nginx -l --labels=app=test
Verkrijg alle pods met label uitvoer
kubectl get pods --show-labels
Verkrijg pods met exapanded/brede uitvoer
kubectl get pods -o wide
Lijst pods in een gesorteerde volgorde op
kubectl get pods --sort-by=.metadata.name
Verkrijg logs van de pod
kubectl logs my-pod-1
Verkrijg pods binnen de gespecificeerde namespace met geëxapandeerde/brede uitvoer
kubectl get pods my-pod-2 --namespace=my-namespace -o wide
Verkrijg logs van de pod binnen de gespecificeerde namespace
kubectl logs my-pod-2 --namespace=my-namespace
Beschrijf de pod
kubectl describe pod my-pod-1
Beschrijf de pod binnen de gespecificeerde namespace
kubectl describe pods my-pod-1 --namespace=my-namespace
Verwijder de pod uit de huidige namespace
kubectl delete pod my-pod-1
Verwijder de pod uit de gespecificeerde namespace
kubectl delete pods my-pod-1 --namespace=my-namespace
Inzetplaatsen
Verkrijg een lijst van implementaties uit de huidige namespace
kubectl get deployments
Verkrijg een lijst van deployments uit de gespecificeerde namespace
kubectl get deployments --namespace=my-namespace
Maak een inzet aan
kubectl create deployment my-deployment-1 --image=nginx
Verkrijg de gespecificeerde inzet
kubectl get deployment my-deployment-1
Verkrijg de gespecificeerde inzet met zijn labels
kubectl get deployment my-deployment-1 --show-labels
Beschrijf de gespecificeerde inzet
kubectl describe deployments my-deployment-1
Verkrijg details van de inzet in yaml formaat
kubectl get deployment my-deployment-1 -o yaml
Verander het beeld in de bestaande inzet
kubectl set image deployment my-deployment-1 nginx=nginx:1.16.1
Bekijk de geschiedenis van de uitrol
kubectl rollout history deployment my-deployment-1
Maak een vorige uitrol ongedaan
kubectl rollout undo deployment my-deployment-1
Ga terug naar de specifieke versie van de uitrolgeschiedenis
kubectl rollout undo deployment my-deployment-1 --to-revision=2
Toon de status van de uitrol
kubectl rollout status deployment my-deployment-1
Start een bron opnieuw op
kubectl rollout restart deployment my-deployment-1
Schaal de uitrol naar 3
kubectl scale --replicas=3 deployment my-deployment-1
Schaal van de huidige telling naar de gewenste
kubectl scale --current-replicas=3 --replicas=5 deployment my-deployment-1
Dit zal een HPA (Horizontal Pod Aotuscaler) creëren
kubectl autoscale deployment my-deployment-1 --min=2 --max=10
Diensten
Maak eerst een pod met label app=myapp.
Dan:
Maak een pod met label
kubectl run my-pod --image=nginx --labels=app=myapp
Maak een service van type NodePort die pod’s labels zal gebruiken als selector maar we moeten het type specificeren, dus maak eerst een definitiebestand en maak dan een service
kubectl expose pod my-pod --port=80 --name nginx-service --type=NodePort --dry-run=client -o yaml
Maak een dienst die type NodePort zal hebben maar deze zal geen selector hebben als mijn-app
kubectl create service nodeport nginx --tcp=80:80 --node-port=30080 --dry-run=client -o yaml
Haal diensten op uit de huidige context
kubectl get service
Verkrijg details van de diensten
kubectl get service -o wide
Haal diensten op met labels erop
kubectl get service --show-labels
Haal diensten op uit alle namespaces
kubectl get services --all-namespaces
Beschrijf de dienst om er meer over te weten te komen
kubectl describe service nginx-service
Haal een bepaalde dienst op
kubectl get service nginx-service
Verwijder de dienst
kubectl delete service nginx-service
Objecten beheren uit .yaml/.yml bestanden
Maak eerst een definitiebestand voor een pod
Maak een definitiebestand voor pod
kubectl run mypod --image=nginx --dry-run=client -o yaml > my-pod.yml
Maak een object
kubectl create -f my-pod.yml
Verwijder het object
kubectl delete -f my-pod.yml
Conclusie
In dit artikel zagen we de belangrijke commando’s die nodig zijn tijdens het werken op Kubernetes. Commando’s in Kubernetes zijn niet beperkt tot alleen deze commando’s, maar deze commando’s zijn als het ware“must-know” commando’s.