Kubernetes snabbguide

Några vanliga k8s-kommandon med parametrar

Sidinnehåll

Här är mitt k8s snabbhandsbok som täcker de viktigaste kommandona och koncepten i Kubernetes från installation till att köra containrar och rensa upp:

k8s ljus

Installation av Kubernetes

Användande av Kubeadm

För att installera Kubernetes med kubeadm, följ dessa steg:

  1. Förbered miljö:

    • Se till att nödvändiga kärnmoduler är aktiverade:
      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
      
    • Starta om systemet för att tillämpa ändringarna.
  2. Installera Docker och andra förutsättningar:

    • Installera Docker:
      sudo apt-get update
      sudo apt-get install -y docker.io
      
    • Installera ebtables och ethtool:
      sudo apt-get install ebtables ethtool
      
    • Installera HTTPS-stöd och curl om nödvändigt:
      sudo apt-get update
      sudo apt-get install -y apt-transport-https curl
      
    • Lägg till Kubernetes-repository och installera kubeadm, kubelet och kubectl:
      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
      
  3. Initialisera Kubernetes-klustret:

    • Initialisera den första kontrollplanenoden:
      sudo kubeadm init
      
    • Anslut ytterligare kontrollplanenoder och arbetarnoder:
      kubeadm join <kontrollplanenod>:8443 --token <token> --discovery-token-ca-cert-hash <hash>
      

Användande av Minikube eller Kind

För lokal utveckling kan du använda minikube eller kind:

  • Minikube:

    minikube start
    

    Följ den officiella [Get Started!-guiden].

  • Kind:

    curl -sfL https://get.k3s.io | sh -
    kind create cluster
    

    Följ [Kind Quick Start-sidan].

Vanliga kubectl-kommandon

Grundläggande kommandon

  • Hämta information om resurser:

    kubectl get <resurs>  # Lista resurser (t.ex. pods, services, deployments)
    kubectl get pods --all-namespaces  # Lista alla pods i alla namespaces
    kubectl get pods -o wide  # Lista pods med mer detaljer
    kubectl get pod my-pod -o yaml  # Hämta en pods YAML-konfiguration.
    
  • Beskriv resurser:

    kubectl describe <resurs>  # Detaljerad beskrivning av en resurs (t.ex. noder, pods)
    kubectl describe nodes my-node
    kubectl describe pods my-pod.
    
  • Skapa resurser:

    kubectl create -f <manifest-fil>  # Skapa resurser från en YAML- eller JSON-fil
    kubectl create configmap <configmap-namn> --from-literal=<nyckel>=<värde>  # Skapa en ConfigMap
    kubectl create secret generic <secret-namn> --from-literal=<nyckel>=<värde>  # Skapa en Secret.
    
  • Radera resurser:

    kubectl delete <resurs> <namn>  # Radera en resurs (t.ex. pod, deployment)
    kubectl delete pod my-pod
    kubectl delete deployment my-deployment.
    

Pod-hantering

  • Definiera ett kommando och argument för en 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-fil>
    kubectl get pods
    kubectl logs command-demo.
    
  • Kör ett kommando i ett skalkonto:

    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-fil>
    kubectl get pods
    kubectl logs shell-demo.
    

ConfigMap och Secret-hantering

  • Skapa en ConfigMap:

    kubectl create configmap <configmap-namn> --from-literal=<nyckel>=<värde>
    kubectl create configmap app-config --from-literal=environment=production --from-literal=log_level=info.
    
  • Skapa en Secret:

    kubectl create secret generic <secret-namn> --from-literal=<nyckel>=<värde>
    kubectl create secret generic db-secret --from-literal=username=admin --from-literal=password=supersecret.
    

Deployment och Service-hantering

  • Skapa en Deployment:

    kubectl create deployment <deployment-namn> --image=<image-namn>
    kubectl create deployment my-deployment --image=nginx:latest.
    
  • Exponera en Deployment som en Service:

    kubectl expose deployment <deployment-namn> --type=NodePort --port=<port>
    kubectl expose deployment my-deployment --type=NodePort --port=80.
    

Namespace och Node-hantering

  • Lista Namespaces:

    kubectl get namespaces
    
  • Skapa en Namespace:

    kubectl create namespace <namespace-namn>
    kubectl create namespace my-namespace.
    
  • Lista Noder:

    kubectl get nodes
    kubectl get nodes --selector='!node-role.kubernetes.io/control-plane'.
    

Övervakning och felsökning

  • Visa loggar:

    kubectl logs <pod-namn>
    kubectl logs -f <pod-namn>  # Följ loggarna i realtid.
    
  • Beskriv händelser:

    kubectl describe events
    
  • Kontrollera klusterinformation:

    kubectl cluster-info
    kubectl version  # Kontrollera Kubernetes-version.
    

Avancerade kommandon

  • Sortera resurser:

    kubectl get pods --sort-by='.status.containerStatuses.restartCount'
    kubectl get services --sort-by=.metadata.name.
    
  • Filtrera resurser:

    kubectl get pods --field-selector=status.phase=Running
    kubectl get nodes --selector='!node-role.kubernetes.io/control-plane'.
    
  • Hämta specifik data:

    kubectl get configmap myconfig -o jsonpath='{.data.ca\.crt}'
    kubectl get secret my-secret --template='{{index .data "key-name-with-dashes"}}'.
    

Användbara länkar