Kubernetes cheat sheet
Enkele veelgebruikte k8s-commands met parameters
Hier is mijn k8s cheat sheet
die de belangrijkste kubenetes opdrachten en concepten behandelt van installeren tot het draaien van containers en het opschonen:
Installatie van Kubernetes
Met Kubeadm
Om Kubernetes te installeren met kubeadm
, volg dan deze stappen:
-
Voorbereiding van de omgeving:
- Zorg dat de benodigde kernel modules zijn ingeschakeld:
sudo sysctl net/bridge/bridge-nf-call-ip6tables=1 sudo sysctl net/bridge/bridge-nf-call-iptables=1 sudo sysctl net/bridge/bridge-nf-call-arptables=1
- Herstart het systeem om de wijzigingen toe te passen.
- Zorg dat de benodigde kernel modules zijn ingeschakeld:
-
Installatie van Docker en andere voorwaarden:
- Installeer Docker:
sudo apt-get update sudo apt-get install -y docker.io
- Installeer
ebtables
enethtool
:sudo apt-get install ebtables ethtool
- Installeer HTTPS-ondersteuning en
curl
indien nodig:sudo apt-get update sudo apt-get install -y apt-transport-https curl
- Voeg het Kubernetes-repository toe en installeer
kubeadm
,kubelet
enkubectl
:curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - sudo cat <<EOF >/etc/apt/sources.list.d/kubernetes.list deb http://apt.kubernetes.io/ kubernetes-xenial main EOF sudo apt-get update sudo apt-get install -y kubeadm kubelet kubectl
- Installeer Docker:
-
Initialisatie van het Kubernetes-cluster:
- Initialiseer de eerste controleplane-node:
sudo kubeadm init
- Voeg extra controleplane- en werknooden toe:
kubeadm join <control-plane-node>:8443 --token <token> --discovery-token-ca-cert-hash <hash>
- Initialiseer de eerste controleplane-node:
Met Minikube of Kind
Voor lokale ontwikkeling kun je minikube
of kind
gebruiken:
-
Minikube:
minikube start
Volg de officiële [Startgids].
-
Kind:
curl -sfL https://get.k3s.io | sh - kind create cluster
Volg de [Snelstartpagina van Kind].
Algemene kubectl-opdrachten
Basisopdrachten
-
Informatie ophalen over resources:
kubectl get <resource> # Lijst resources (bijv. pods, services, deployments) kubectl get pods --all-namespaces # Lijst alle pods in alle namespaces kubectl get pods -o wide # Lijst pods met meer details kubectl get pod my-pod -o yaml # Haal de YAML-configuratie van een pod op.
-
Beschrijving van resources:
kubectl describe <resource> # Gedetailleerde beschrijving van een resource (bijv. nodes, pods) kubectl describe nodes my-node kubectl describe pods my-pod.
-
Resources aanmaken:
kubectl create -f <manifest-file> # Maak resources aan vanuit een YAML- of JSON-bestand kubectl create configmap <configmap-name> --from-literal=<key>=<value> # Maak een ConfigMap aan kubectl create secret generic <secret-name> --from-literal=<key>=<value> # Maak een Secret aan.
-
Resources verwijderen:
kubectl delete <resource> <name> # Verwijder een resource (bijv. pod, deployment) kubectl delete pod my-pod kubectl delete deployment my-deployment.
Podbeheer
-
Een opdracht en argumenten definiëren voor een container:
apiVersion: v1 kind: Pod metadata: name: command-demo spec: containers: - name: command-demo-container image: debian command: ["printenv"] args: ["HOSTNAME", "KUBERNETES_PORT"]
kubectl apply -f <manifest-file> kubectl get pods kubectl logs command-demo.
-
Een opdracht uitvoeren in een shell:
apiVersion: v1 kind: Pod metadata: name: shell-demo spec: containers: - name: shell-demo-container image: debian command: ["/bin/sh"] args: ["-c", "while true; do echo hello; sleep 10;done"]
kubectl apply -f <manifest-file> kubectl get pods kubectl logs shell-demo.
ConfigMap- en Secretbeheer
-
Een ConfigMap aanmaken:
kubectl create configmap <configmap-name> --from-literal=<key>=<value> kubectl create configmap app-config --from-literal=environment=production --from-literal=log_level=info.
-
Een Secret aanmaken:
kubectl create secret generic <secret-name> --from-literal=<key>=<value> kubectl create secret generic db-secret --from-literal=username=admin --from-literal=password=supersecret.
Deployment- en Servicebeheer
-
Een Deployment aanmaken:
kubectl create deployment <deployment-name> --image=<image-name> kubectl create deployment my-deployment --image=nginx:latest.
-
Een Deployment als Service blootstellen:
kubectl expose deployment <deployment-name> --type=NodePort --port=<port> kubectl expose deployment my-deployment --type=NodePort --port=80.
Namespace- en Nodebeheer
-
Namespaces lijsten:
kubectl get namespaces
-
Een Namespace aanmaken:
kubectl create namespace <namespace-name> kubectl create namespace my-namespace.
-
Nodes lijsten:
kubectl get nodes kubectl get nodes --selector='!node-role.kubernetes.io/control-plane'.
Monitoring en foutopsporing
-
Logboeken bekijken:
kubectl logs <pod-name> kubectl logs -f <pod-name> # Volg de logboeken in real-time.
-
Gebeurtenissen beschrijven:
kubectl describe events
-
Clusterinformatie controleren:
kubectl cluster-info kubectl version # Controleer de Kubernetes-versie.
Geavanceerde opdrachten
-
Resources sorteren:
kubectl get pods --sort-by='.status.containerStatuses.restartCount' kubectl get services --sort-by=.metadata.name.
-
Resources filteren:
kubectl get pods --field-selector=status.phase=Running kubectl get nodes --selector='!node-role.kubernetes.io/control-plane'.
-
Specifieke gegevens ophalen:
kubectl get configmap myconfig -o jsonpath='{.data.ca\.crt}' kubectl get secret my-secret --template='{{index .data "key-name-with-dashes"}}'.