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

  1. Basiskennis van Kubernetes
  2. 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?

  1. Belangrijke commando’s
    1. Cluster Informatie
    2. Configuratie Informatie
    3. Namespace
    4. Pod
    5. Inzettingen
    6. Diensten
    7. 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.