---
title: Kubectl installieren und konfigurieren auf Linux
content_type: task
weight: 10
card:
  name: tasks
  weight: 20
  title: Kubectl auf Linux installieren
---

## {{% heading "prerequisites" %}}

Um kubectl zu verwenden darf die kubectl-Version nicht mehr als eine Minor-Version Unterschied zu dem Cluster aufweisen. Zum Beispiel: eine Client-Version v{{< skew currentVersion >}} kann mit folgenden Versionen kommunizieren v{{< skew currentVersionAddMinor -1 >}}, v{{< skew currentVersionAddMinor 0 >}}, und v{{< skew currentVersionAddMinor 1 >}}.
Die Verwendung der neuesten kompatiblen Version von kubectl hilft, unvorhergesehene Probleme zu vermeiden.

## Kubectl auf Linux installieren

Um kubectl auf Linux zu installieren, gibt es die folgenden Möglichkeiten:

- [{{% heading "prerequisites" %}}](#-heading-prerequisites-)
- [Kubectl auf Linux installieren](#kubectl-auf-linux-installieren)
  - [Kubectl Binary mit curl auf Linux installieren](#kubectl-binary-mit-curl-auf-linux-installieren)
  - [Installieren mit Hilfe des Linux eigenen Paketmanagers](#installieren-mit-hilfe-des-linux-eigenen-paketmanagers)
  - [Installation mit anderen Paketmanagern](#installation-mit-anderen-paketmanagern)
- [Kubectl Konfiguration verifizieren](#kubectl-konfiguration-verifizieren)
- [Optionale kubectl Konfigurationen und Plugins](#optionale-kubectl-konfigurationen-und-plugins)
  - [Shell Autovervollständigung einbinden](#shell-autovervollständigung-einbinden)
  - [`kubectl-convert` Plugin installieren](#kubectl-convert-plugin-installieren)
- [{{% heading "whatsnext" %}}](#-heading-whatsnext-)

### Kubectl Binary mit curl auf Linux installieren

1. Das aktuellste Release downloaden:

   ```bash
   curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
   ```

   {{< note >}}
   Um eine spezifische Version herunterzuladen, ersetze `$(curl -L -s https://dl.k8s.io/release/stable.txt)` mit der spezifischen Version.

   Um zum Beispiel Version {{< skew currentPatchVersion >}} auf Linux herunterzuladen:

   ```bash
   curl -LO https://dl.k8s.io/release/v{{< skew currentPatchVersion >}}/bin/linux/amd64/kubectl
   ```
   {{< /note >}}

2. Binary validieren (optional)

   Download der kubectl Checksum-Datei:

   ```bash
   curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
   ```

   Kubectl Binary mit der Checksum-Datei validieren:

   ```bash
   echo "$(cat kubectl.sha256)  kubectl" | sha256sum --check
   ```

   Wenn Valide, dann sieht die Ausgabe wie folgt aus:

   ```console
   kubectl: OK
   ```

   Falls die Validierung fehlschlägt, beendet sich `sha256` mit einem "nonzero"-Status und gibt einen Fehler aus, welcher so aussehen könnte:

   ```console
   kubectl: FAILED
   sha256sum: WARNING: 1 computed checksum did NOT match
   ```

   {{< note >}}
   Lade von der kubectl Binary und Checksum-Datei immer die selben Versionen herunter.
   {{< /note >}}

3. kubectl installieren

   ```bash
   sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
   ```

   {{< note >}}
   Wenn kein root Zugriff auf das Zielsystem möglich ist, kann kubectl in das Verzeichnis `~/.local/bin` installiert werden:

   ```bash
   chmod +x kubectl
   mkdir -p ~/.local/bin
   mv ./kubectl ~/.local/bin/kubectl
   # und ~/.local/bin zur Umgebungsvariable $PATH hinzufügen
   ```

   {{< /note >}}

4. Prüfen ob die installierte Version die aktuellste Version ist:

   ```bash
   kubectl version --client
   ```

   {{< note >}}
   Der oben stehende Befehl wirft folgende Warnung:

   ```
   WARNING: This version information is deprecated and will be replaced with the output from kubectl version --short.
   ```

   Diese Warnung kann ignoriert werden. Prüfe lediglich die `kubectl` Version, welche installiert wurde.
   
   {{< /note >}}
   
   Oder benutzte diesen Befehl für eine detailliertere Ansicht:

   ```cmd
   kubectl version --client --output=yaml    
   ```

### Installieren mit Hilfe des Linux eigenen Paketmanagers

{{< tabs name="kubectl_install" >}}
{{% tab name="Debian-basierte Distributionen" %}}

1. Update des `apt` Paketindex und Installation der benötigten Pakete um das Kubernetes `apt` Repository zu nutzen:

   ```shell
   sudo apt-get update
   sudo apt-get install -y ca-certificates curl gnupg
   ```

   Falls Debian 9 (stretch) oder älter genutzt wird, müssen zusätzlich das Paket `apt-transport-https` installiert werden:

   ```shell
   sudo apt-get install -y apt-transport-https
   ```

2. Den öffentlichen Signaturschlüssel für die Kubernetes Repositories herunterladen:

   ```shell
   # Falls der Ordner `/etc/apt/keyrings` nicht existiert, sollte er vor dem curl Kommando erstellt werden, siehe folgende Zeile
   # sudo mkdir -p -m 755 /etc/apt/keyrings
   curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.31/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
   sudo chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg # nicht privilegierten APT Applikationen den Lesezugriff auf diesen Keyring erlauben
   ```

3. Kubernetes `apt` Repository hinzufügen:

   ```shell
   echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.31/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
   sudo chmod 644 /etc/apt/sources.list.d/kubernetes.list   # dies hilft tools wie command-not-found korrekt zu funktionieren
   ```

4. Den `apt` Paketindex mit dem neuen Repository updaten und kubectl installieren:

   ```shell
   sudo apt-get update
   sudo apt-get install -y kubectl
   ```

{{< note >}}
In Releases älter als Debian 12 und Ubuntu 22.04, existiert `/etc/apt/keyrings` nicht per default.
Falls es benötigt wird, kann es angelegt werden. Hierzu sollte es danach von jedermann lesbar, aber nur von Admins schreibar gemacht werden.
{{< /note >}}

{{% /tab %}}

{{% tab name="Red Hat-basierte Distributionen" %}}

1. Hinzufügen des Kubernetes `yum` Repository. Wenn eine andere Kubernetes Version als {{< param "version" >}} installiert werden soll, muss {{< param "version" >}} im unteren Block durch die gewünschte Version ersetzt werden.

   ```bash
   # Bestehende Inhalte in /etc/yum.repos.d/kubernetes.repo werden überschrieben
   cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
   [kubernetes]
   name=Kubernetes
   baseurl=https://pkgs.k8s.io/core:/stable:/{{< param "version" >}}/rpm/
   enabled=1
   gpgcheck=1
   gpgkey=https://pkgs.k8s.io/core:/stable:/{{< param "version" >}}/rpm/repodata/repomd.xml.key
   EOF
   ```
{{< note >}}
Wenn eine andere minor Version von kubectl installiert werden soll muss `/etc/yum.repos.d/kubernetes.repo` angepasst werden
bevor `yum install` ausgeführt wird. Eine genauere Beschreibung findet sich hier
[Wechseln des Kubernetes Package Repository](/docs/tasks/administer-cluster/kubeadm/change-package-repository/).
{{< /note >}}

2. Installieren von kubectl mit Hilfe von `yum`:

   ```bash
   sudo yum install -y kubectl
   ```

{{% /tab %}}

{{% tab name="SUSE-basierte Distributionen" %}}
1. Hinzufügen des Kubernetes `zypper` Repository. Wenn eine andere Kubernetes Version als {{< param "version" >}} installiert werden soll, muss {{< param "version" >}} im unteren Block durch die gewünschte Version ersetzt werden.

   ```bash
   # Bestehende Inhalte in /etc/zypp/repos.d/kubernetes.repo werden überschrieben
   cat <<EOF | sudo tee /etc/zypp/repos.d/kubernetes.repo
   [kubernetes]
   name=Kubernetes
   baseurl=https://pkgs.k8s.io/core:/stable:/{{< param "version" >}}/rpm/
   enabled=1
   gpgcheck=1
   gpgkey=https://pkgs.k8s.io/core:/stable:/{{< param "version" >}}/rpm/repodata/repomd.xml.key
   EOF
   ```

{{< note >}}
Wenn eine andere minor Version von kubectl installiert werden soll muss `/etc/zypp/repos.d/kubernetes.repo` angepasst werden
bevor `zypper update` ausgeführt wird. Eine genauere Beschreibung findet sich hier
[Wechseln des Kubernetes Package Repository](/docs/tasks/administer-cluster/kubeadm/change-package-repository/).
{{< /note >}}

   2. Install kubectl using `zypper`:

      ```bash
      sudo zypper install -y kubectl
      ```

{{% /tab %}}
{{< /tabs >}}

### Installation mit anderen Paketmanagern

{{< tabs name="other_kubectl_install" >}}
{{% tab name="Snap" %}}
Falls Ubuntu oder andere Linux Distributionen verwendet wird, und diese den [snap](https://snapcraft.io/docs/core/install) Paketmanager unterstützen, kann kubectl als [snap](https://snapcraft.io/) Anwendung installiert werden.

```shell
snap install kubectl --classic
kubectl version --client
```

{{% /tab %}}

{{% tab name="Homebrew" %}}
Falls in Linux [Homebrew](https://docs.brew.sh/Homebrew-on-Linux) als
Paketmanager genutzt wird, kann kubectl über diesen [installiert](https://docs.brew.sh/Homebrew-on-Linux#install) werden.

```shell
brew install kubectl
kubectl version --client
```

{{% /tab %}}

{{< /tabs >}}

## Kubectl Konfiguration verifizieren

{{< include "included/verify-kubectl.md" >}}

## Optionale kubectl Konfigurationen und Plugins

### Shell Autovervollständigung einbinden

kubectl stellt Autovervollständigungen für Bash, Zsh, Fish und Powershell zur Verfügung, mit welchem sich Kommandozeilen Befehle beschleunigen lassen.

Untenstehend ist beschrieben, wie die Autovervollständigungen für Fish und Zsh eingebunden werden.

{{< tabs name="kubectl_autocompletion" >}}
{{< tab name="Fish" include="included/optional-kubectl-configs-fish.md" />}}
{{< tab name="Zsh" include="included/optional-kubectl-configs-zsh.md" />}}
{{< /tabs >}}

### `kubectl-convert` Plugin installieren

{{< include "included/kubectl-convert-overview.md" >}}

1. Neueste Version des Kommandozeilenbefehls herunterladen:

   ```bash
   curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl-convert"
   ```

2. Binär-Datei validieren (optional)

   Download der kubectl-convert Checksum-Datei:

   ```bash
   curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl-convert.sha256"
   ```

   Kubectl-convert Binary mit der Checksum-Datei validieren:

   ```bash
   echo "$(cat kubectl-convert.sha256) kubectl-convert" | sha256sum --check
   ```

   Wenn Valide, dann sieht die Ausgabe wie folgt aus:

   ```console
   kubectl-convert: OK
   ```

   Falls die Validierung fehlschlägt, beendet sich `sha256` mit einem "nonzero"-Status und gibt einen Fehler aus, welcher so aussehen könnte:

   ```console
   kubectl-convert: FAILED
   sha256sum: WARNING: 1 computed checksum did NOT match
   ```

   {{< note >}}
   Lade von der kubectl Binary und Checksum-Datei immer die selben Versionen herunter.
   {{< /note >}}

3. kubectl-convert installieren

   ```bash
   sudo install -o root -g root -m 0755 kubectl-convert /usr/local/bin/kubectl-convert
   ```

4. Verifizieren, dass das Pluign erfolgreich installiert wurde:

   ```shell
   kubectl convert --help
   ```

  Wenn kein Fehler ausgegeben wird, ist das Plugin erfolgreich installiert worden.

1. Nach Installation des Plugins, die Installationsdateien aufräumen:

   ```bash
   rm kubectl-convert kubectl-convert.sha256
   ```

## {{% heading "whatsnext" %}}

{{< include "included/kubectl-whats-next.md" >}}
