Damit ihr mit eurem Kubernetes Cluster arbeiten könnt, braucht ihr Zugriff auf die Kube API. In diesem Guide zeigen wir euch, wie ihr bei uns Zugriff auf euren Cluster bekommt, welche Tools ihr benötigt und wie ihr sie richtig einrichtet.
Neben dem klassischen Zugriff über kubectl
habt ihr auch die Möglichkeit, direkt auf die darunterliegende Infrastruktur über die Talos API zuzugreifen. So könnt ihr nicht nur eure Anwendungen steuern, sondern bei Bedarf auch auf das Betriebssystem der Nodes Einfluss nehmen.
Im weiteren Verlauf erklären wir euch Schritt für Schritt, wie ihr kubectl
und talosctl
installiert, konfiguriert und effektiv nutzt – auch wenn ihr mit mehreren Clustern und Umgebungen gleichzeitig arbeitet.
Bei Xelon habt ihr vollen Zugriff auf die Kube API über die Admin Kube-Config, die ihr im HQ herunterladen können. Navigiert ihr zum Dashboard eures Clusters und klickt auf "Download Config" im Segment "Kubernetes Configuration".
Kubectl ist das bekannteste Tool für den Zugriff auf die Kubernetes-API und ermöglicht die Erstellung und Manipulation von Kubernetes-Ressourcen.
Gerne verweisen wir auf die offizielle Dokumentation, die je nach Betriebssystem variiert. Nachfolgend findet ihr die direkten Links für die Installation auf den gängigsten Betriebssystemen:
Um zu überprüfen, ob das Tool korrekt installiert ist, könnt ihr ein Terminal öffnen und den folgenden Befehl ausführen, um die Version auszulesen:
kubectl version
Die Ausgabe dieses Befehls sollte wie folgt aussehen - mit dem Unterschied, dass ihr wahrscheinlich eine neuere Version haben und möglicherweise noch nicht auf ein Kubernetes-Cluster zugreifen könnt (Server-Version), aber wenn die Client-Version angezeigt wird, ist kubectl installiert.
Client Version: v1.30.0
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Server Version: v1.30.3
Als Faustregel gilt, dass Kubectl nicht mehr als +/- eine Minor-Version von der Serverversion abweichen sollte.
Das Konfigurieren des kubectl binaries ist einfach, das Werkzeug muss wissen, welche Verbindungsdatei es nutzen soll. Hierzu gibt es drei Methoden, die nachfolgend erläutert sind. Die erste Methode wird generell empfohlen, wer jedoch oft mit verschiedenen Kubernetes Clustern arbeitet, bevorzugt höchstwahrscheinlich Methode 2 oder 3 in Kombination mit Option 1.
Methode 1 - Standardpfad:
Standardmässig wird die Verbindungsdatei ("config") im Ordner ".kube" verwendet, der sich im Benutzerordner befindet (~/.kube/config). Wenn ihr eure kubeconfig in dieses Verzeichnis (mit dem korrekten Namen) verschieben, wird diese standardmässig verwendet.
kubectl get nodes
Methode 2 - Argument:
Bei der Ausführung des Befehls kubectl kann als Argument eine kubeconfig-Datei angegeben werden. Dieses Argument muss dann bei jedem kubectl-Befehl übergeben werden.
kubectl --kubeconfig=./Downloads/kubeconfig get nodes
Methode 3 - Umgebungsvariable:
Wenn die Umgebungsvariable "KUBECONFIG" auf einen Pfad gesetzt ist, wird diese kubeconfig-Datei verwendet.
KUBECONFIG=./Downloads/kubeconfig kubectl get nodes
Diese Methode sieht auf den ersten Blick aus wie die zweite Methode (mit Argument), hat aber den Vorteil, dass man mehrere Terminals geöffnet haben kann, in denen man die Umgebungsvariablen auf unterschiedliche Kubeconfig-Dateien setzt und dann für beide Terminals die gleichen Befehle verwenden kann.
Stage-Umgebung (Terminal 1):
export KUBECONFIG=./.kube/config-stage
kubectl get nodes
Produktive Umgebung (Terminal 2)
export KUBECONFIG=./.kube/config-prod
kubectl get nodes
Talos-API-Zugriff
Bei uns habt ihr auch vollen Zugriff auf die Kubernetes-Nodes über die Talos-Config. Dabei handelt es sich um eine Verbindungsdatei ähnlich der Kube-Config. Mit diesem Tool könnt ihr jedoch das Betriebssystem der Kubernetes-Nodes selbst ändern. Navigiert zum Dashboard eures Clusters und klicktt auf "Download Config", im Segment "Cluster info".
Dieser Zugriff wird in den meisten Fällen nicht benötigt, kann aber für eine erweiterte Kontrolle verwendet werden.
Das talosctl ist stark vom kubectl inspiriert, verwendet ähnliche Prinzipien und ist wie das kubectl "nur" ein Werkzeug, um auf die Talos API zuzugreifen. Die Talos API hat jedoch eine etwas andere Architektur als die Kube API. Die Kube API läuft auf allen Controlplane-Knoten, aber nicht auf den Worker-Knoten. Die Talos API hingegen läuft auf allen Nodes. Der Ansatz, den Talos Linux verwendet, ist die Steuerung des gesamten Betriebssystem über die API.
Siderolabs (Hersteller von Talos Linux) bietet Talosctl als Binary an, das automatisch mit den Talos Linux Binaries veröffentlicht wird. Die Binaries können auf der Github Releases Page unter "Assets" gefunden werden. Besucht dazu die folgende URL und passt ihr die Versionsnummer an eure Talos-Version an.
https://github.com/siderolabs/talos/releases/tag/v1.7.5
In den Assets gibt es verschiedene Variationen des talosctl-Binaries. Hier findet ihr die entsprechende Variation für euer Betriebssystem, von dem aus ihr talosctl ausführen möchten: "talosctl-<Betriebssystem>-<CPU-Architektur>".
Die folgenden Schritte sind betriebssystemspezifisch, aber in der Regel gleich.
1. Verschiebt die Binärdatei in einen Ordner, der von eurer Umgebung als Applikationsordner verwendet wird.
Linux/MacOS: Unter POSIX-Betriebssystemen kann der Pfad über die Systemvariable $PATH ermittelt werden.
In den meisten Fällen enthält diese Variable einen Pfad, der wie folgt aussieht:
/home/<username>/.local/bin
Dieser Pfad ist optimal für Binärdateien, die nur für den aktuellen Benutzer ausführbar sind. Wenn der Benutzer existiert, könnt ihr eure Binärdateien hier ablegen.
Windows: Unter Windows findet ihr diese Variabel in den Einstellungen. Klickt dazu auf "Einstellungen" ->"System" -> "Info" -> "Erweiterte Systemeinstellungen" -> "Erweitert" -> "Umgebungsvariabeln..."
In diesem Menü könnt ihr der Variablen "Path" einen weiteren Pfad hinzufügen:
Wir empfehlen, hier den Ordner "%USERPROFILE%\AppData\Local\bin" anzulegen, in dem ihr dann eure Binaries ablegen können.
2. Falls erforderlich, die Rechte zum Ausführen der Binärdatei hinterlegen.
3. Überprüft eure vorherigen Schritte, indem ihr den folgenden Befehl ausführen:
talosctl version
Wenn ihr eine Client-Version sehen, ist die Binärversion für euch nun korrekt verfügbar.
Beispiel Ausgabe:
Client:
Tag: v1.7.2
SHA: f876025b
Built:
Go version: go1.22.3
OS/Arch: linux/amd64
Server:
nodes are not set for the command: please use `--nodes` flag or configuration file to set the nodes to run the command against
Usage:
talosctl version [flags]
Flags:
--client Print client version only
-h, --help help for version
-i, --insecure use Talos maintenance mode API
--short Print the short version
Global Flags:
--cluster string Cluster to connect to if a proxy endpoint is used.
--context string Context to be used in command
-e, --endpoints strings override default endpoints in Talos configuration
-n, --nodes strings target the specified nodes
--talosconfig string The path to the Talos configuration file. Defaults to 'TALOSCONFIG' env variable if set, otherwise '$HOME/.talos/config' and '/var/run/secrets/talos.dev/config' in order.
Die Konfiguration von talosctl ist fast identisch mit der von kubectl. Es stehen wieder alle drei Methoden zur Verfügung, es ändert sich nur, dass nicht mehr kubeconfig sondern talosconfig verwendet wird.
Der Standardpfad der Talosconfig ist ebenfalls im Benutzerordner, aber nicht im Ordner ".kube", sondern im Ordner ".talos": (~/.talos/config). Wenn die Talosconfig dorthin verschoben wird, kann der Befehl talosctl ausgeführt werden.
talosctl dashboard -n 100.110.255.11
Das Subkommando-Dashboard gibt einen Überblick über den aktuellen Node, der mit "-n <ip>" angegeben wird. Die IPs der einzelnen Knoten können mit dem Befehl kubectl ausgelesen werden:
kubectl get nodes -o wide
Beispiel Ausgabe:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
customer-cp-1-1 Ready control-plane 6d19h v1.30.3 100.110.255.11 <none> Talos (v1.7.5) 6.6.33-talos containerd://1.7.18
customer-w-1-1 Ready <none> 5d22h v1.30.3 100.110.255.21 <none> Talos (v1.7.5) 6.6.33-talos containerd://1.7.18
customer-w-1-2 Ready <none> 5d22h v1.30.3 100.110.255.22 <none> Talos (v1.7.5) 6.6.33-talos containerd://1.7.18
customer-w-1-3 Ready <none> 5d22h v1.30.3 100.110.255.23 <none> Talos (v1.7.5) 6.6.33-talos containerd://1.7.18
In der Spalte "INTERNAL-IP" wird die IP-Adresse angezeigt.
Methode 2 - Argument:
Bei talosctl kann die Konfigurationsdatei auch mit einem Argument angegeben werden, in diesem Fall ist das Argument "--talosconfig".
talosctl --talosconfig=./Downloads/talosconfig dashboard -n 100.110.255.11
Methode 3 - Umgebungsvariable:
Wenn die Umgebungsvariable "TALOSCONFIG" auf einen Pfad gesetzt ist, wird diese Verbindungsdatei verwendet.
TALOSCONFIG=./Downloads/talosconfig talosctl dashboard -n 100.110.255.11
🚀Extratipp: Der Xelon Kubernetes Service unterstützt Software-Entwickler, SaaS-Unternehmen und Managed Service Provider beim Aufbau sowie Betrieb sicherer und hochverfügbarer Applikationen oder Microservices. So könnt ihr euren ihren Kundinnen und Kunden Kubernetes-Cluster bereitstellen, ohne selbst in den Betrieb und Unterhalt einer eigenen Control Plane investieren zu müssen. Hier könnt ihr mehr über unseren Kubernetes Service erfahren. Hier könnt ihr mehr über unseren Kubernetes Service erfahren.