Codelab: Kubernetes mit kubectl-ai verwalten, einem KI-basierten Kubernetes-Assistenten

1. Einführung

kubectl-ai ist eine KI-basierte intelligente Schnittstelle, die Nutzerabsichten in präzise Kubernetes-Vorgänge übersetzt und so die Kubernetes-Verwaltung zugänglicher und effizienter macht.

d62a763b2dba5ba7.png

Aufgabe

  • Sie arbeiten mit kubectl-ai, einem KI-basierten Kubernetes Assistant-Tool zur Verwaltung eines GKE-Clusters.

Lerninhalte

  • Sie erstellen einen GKE-Cluster und richten kubectl-ai. ein.
  • Sie führen Kubernetes-Aufgaben wie das Verwalten, Erstellen und Patchen von Ressourcen mit Fehlerbehebungsclustern und ‑ressourcen aus.

Voraussetzungen

  • Chrome-Webbrowser
  • Ein Gmail-Konto
  • Ein Cloud-Projekt mit aktivierter Abrechnung
  • Ein Gemini API-Schlüssel

In diesem Codelab wird davon ausgegangen, dass der Nutzer Grundkenntnisse in Kubernetes hat.

2. Hinweis

Projekt erstellen

  1. Wählen Sie in der Google Cloud Console auf der Seite zur Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
  2. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist .
  3. Sie verwenden Cloud Shell, eine Befehlszeilenumgebung, die in Google Cloud ausgeführt wird und in der „bq“ vorinstalliert ist. Klicken Sie oben in der Google Cloud Console auf „Cloud Shell aktivieren“.

Bild der Schaltfläche „Cloud Shell aktivieren“

  1. Wenn Sie mit Cloud Shell verbunden sind, können Sie mit dem folgenden Befehl prüfen, ob Sie bereits authentifiziert sind und das Projekt auf Ihre Projekt-ID festgelegt ist:
gcloud auth list
  1. Führen Sie den folgenden Befehl in Cloud Shell aus, um zu bestätigen, dass der gcloud-Befehl Ihr Projekt kennt.
gcloud config list project
  1. Wenn Ihr Projekt nicht festgelegt ist, verwenden Sie den folgenden Befehl, um es festzulegen:
gcloud config set project <YOUR_PROJECT_ID>
  1. Aktivieren Sie die erforderlichen APIs mit dem unten gezeigten Befehl. Dies kann einige Minuten dauern.
gcloud services enable cloudresourcemanager.googleapis.com \
                       servicenetworking.googleapis.com \
                       compute.googleapis.com \
                       container.googleapis.com

Bei erfolgreicher Ausführung des Befehls sollte eine Meldung wie die unten gezeigte angezeigt werden:

Operation "operations/..." finished successfully.

Wenn eine API fehlt, können Sie sie jederzeit während der Implementierung aktivieren.

Informationen zu gcloud-Befehlen und deren Verwendung finden Sie in der Dokumentation.

3. GKE-Cluster einrichten

In diesem Schritt richten wir einen GKE-Cluster ein, in dem wir unsere Befehle ausführen. Prüfen Sie, ob Sie die vorherigen Schritte ausgeführt, die richtige Projekt-ID eingerichtet und die erforderlichen Dienste in Ihrem Google Cloud-Projekt aktiviert haben.

GKE-Cluster erstellen

Führen Sie den folgenden Befehl in Cloud Shell aus. Wenn Sie den Cluster in einer anderen Zone erstellen möchten, können Sie den --zone-Wert entsprechend ändern.

gcloud container clusters create my-gke-cluster \
       --num-nodes 2 \
       --machine-type e2-standard-4 \
       --zone us-central1-a

Dieser Vorgang kann einige Zeit dauern. Nach Abschluss des Vorgangs sollten Sie eine Ausgabe sehen, die der folgenden ähnelt:

Note: Your Pod address range (`--cluster-ipv4-cidr`) can accommodate at most 1008 node(s).
Creating cluster my-gke-cluster in us-central1-a... Cluster is being health-checked (Kubernetes Control Plane is healthy)...done.                                                                                                             
Created [https://container.googleapis.com/v1/projects/YOUR_PROJECT_ID/zones/us-central1-a/clusters/my-gke-cluster].
To inspect the contents of your cluster, go to: https://console.cloud.google.com/kubernetes/workload_/gcloud/us-central1-a/my-gke-cluster?project=YOUR_PROJECT_ID
kubeconfig entry generated for my-gke-cluster.
NAME: my-gke-cluster
LOCATION: us-central1-a
MASTER_VERSION: 1.33.4-gke.1350000
MASTER_IP: 34.59.221.183
MACHINE_TYPE: e2-standard-4
NODE_VERSION: 1.33.4-gke.1350000
NUM_NODES: 2
STATUS: RUNNING
STACK_TYPE: IPV4

GKE-Clusterdetails prüfen

Rufen wir zuerst die Clusteranmeldedaten ab:

gcloud container clusters get-credentials my-gke-cluster \
                 --zone us-central1-a

Die Ausgabe sollte wie unten aussehen:

Fetching cluster endpoint and auth data.
kubeconfig entry generated for my-gke-cluster.

Als Nächstes prüfen wir die Clusterdetails:

kubectl get nodes

Die Ausgabe sollte in etwa so aussehen:

NAME                                            STATUS   ROLES    AGE     VERSION
gke-my-gke-cluster-default-pool-c63d5936-2f1z   Ready    <none>   2m58s   v1.33.4-gke.1350000
gke-my-gke-cluster-default-pool-c63d5936-fqtl   Ready    <none>   3m2s    v1.33.4-gke.1350000

Prüfen Sie zum Schluss den Clusternamespace:

kubectl get namespaces

Die Ausgabe sollte in etwa so aussehen:

NAME                          STATUS   AGE
default                       Active   6m16s
gke-managed-cim               Active   4m21s
gke-managed-system            Active   4m6s
gke-managed-volumepopulator   Active   4m
gmp-public                    Active   3m40s
gmp-system                    Active   3m41s
kube-node-lease               Active   6m16s
kube-public                   Active   6m16s
kube-system                   Active   6m16s

4. kubectl-ai-Befehlszeile installieren

Wir verwenden die Schnellinstallation (empfohlen) für die Installation von kubectl-ai CLI.

Geben Sie den folgenden Befehl in Cloud Shell ein:

curl -sSL https://raw.githubusercontent.com/GoogleCloudPlatform/kubectl-ai/main/install.sh | bash

Dadurch wird kubectl-ai CLI heruntergeladen und installiert. Am Ende sollte die folgende Meldung angezeigt werden:

✅ kubectl-ai installed successfully! Run 'kubectl-ai --help' to get started.

Mit dem folgenden Befehl können wir prüfen, ob der Befehl kubectl-ai funktioniert:

kubectl-ai

Hinweis: Der obige Befehl gibt den Fehler zurück, dass

creating llm client: GEMINI_API_KEY environment variable not set

kubectl-ai unterstützt KI-Modelle von gemini, vertexai, azopenai, openai, grok, bedrock und lokalen LLM-Anbietern wie ollama und llama.cpp. In unserem Fall verwenden wir Gemini (Google) und benötigen dafür einen API-Schlüssel, den wir über Google AI Studio erhalten. Nachdem Sie den Schlüssel generiert haben und der Wert verfügbar ist, verwenden Sie den folgenden Befehl in Cloud Shell, um die Umgebungsvariable GEMINI_API_KEY festzulegen, die auf Ihren Schlüssel verweist.

export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"

Hinweis: Verwenden Sie „GEMINI_API_KEY“ nur als Schlüsselwert.

Starten Sie kubectl-ai noch einmal. Dieses Mal wird es gestartet und wartet in seinem interaktiven Terminal auf Ihren Befehl.

$ kubectl-ai

  Hey there, what can I help you with today?                                  

>>>  

Probieren Sie einige Anfragen zu kubectl-Befehlen im Prompt aus. Hier einige Beispiele:

  • What is the command to get the nodes in a cluster?
  • list pods

Sie können das kubectl-ai-Terminal beenden, indem Sie quit eingeben.

5. kubectl-ai verwenden

Nachdem Sie kubectl-ai konfiguriert haben, können Sie jetzt mit dem Cluster interagieren, indem Sie Abfragen in natürlicher Sprache verwenden. Probieren wir ein paar andere Befehle aus:

Führen Sie den folgenden Befehl aus:

kubectl-ai --model gemini-2.5-flash "list pods in default namespace"

Dadurch wird die folgende Ausgabe generiert:

Running: kubectl get pods -n default

There are no resources found in the default namespace.      

>>>

Die Anfrage in natürlicher Sprache zum Auflisten von Pods wurde in den entsprechenden kubectl-Befehl übersetzt.

Außerdem befinden wir uns jetzt im interaktiven Terminal kubectl-ai (>>>), in dem wir weiterhin mit ihm interagieren können.

Geben Sie den folgenden Befehl ein:

how many pods are there in kube-system namespace

Die Ausgabe sieht so aus:

>>> how many pods are there in kube-system namespace

Running: kubectl get pods -n kube-system --output=jsonpath='{.items[*].metadata.name}'

There are 18 pods in the kube-system namespace.

Single Shot Command

Im vorherigen Abschnitt wurde gezeigt, wie Sie kubectl-ai starten und im interaktiven Terminal bleiben, um nachfolgende Befehle zu geben. Dies ist nicht für Befehle geeignet, die autonom und ohne interaktive Aufforderung zur Eingabe des nächsten Befehls ausgeführt werden sollen.

Geben Sie die Methode für den einzelnen Prompt mit dem Parameter --quiet ein.

Hier ist ein Beispielbefehl zum Erstellen eines Deployments.

kubectl-ai --quiet "create a deployment named nginx with 2 replicas" --skip-permissions

Dadurch wird der Befehl create deployment wie unten gezeigt ausgeführt:

Running: kubectl create deployment nginx --image=nginx --replicas=2

I have created a deployment named nginx with 2 replicas. You can verify this by running kubectl get deployments .

So konnten wir kubectl-ai für die Interaktion mit unserem aktuellen GKE-Cluster einrichten.

Wir haben gerade einige Befehle ausgeführt und eine Arbeitsweise mit kubectl-ai demonstriert. Sie können die Ausgabe an andere Tools weiterleiten, Fehler nachvollziehen und die Persistenz zwischen verschiedenen Sitzungsdurchläufen von kubectl-ai untersuchen. Sehen Sie sich den Abschnitt Verwendung in der Tool-Dokumentation an.

6. (Optional) kubectl-ai-Chatoberfläche

In bestimmten Situationen ist es möglicherweise besser, mit kubectl-ai über eine Standard-Chatoberfläche zu arbeiten. Kubectl-ai hat eine eigene Benutzeroberfläche, die Sie über den unten gezeigten Befehl in Cloud Shell starten können:

kubectl-ai --llm-provider=gemini \ --ui-type=web \ --ui-listen-address=0.0.0.0:8080

Dadurch wird das Tool in einer Chat-Oberfläche gestartet. Die Ausgabe sollte in etwa so aussehen:

listening on http://[::]:8080

Klicken Sie in Cloud Shell auf „Webvorschau“ (siehe unten):

f990712162e8e924.png

Klicken Sie dann auf Vorschau auf Port 8080. Dadurch wird ein Browser gestartet und die Webchat-Oberfläche wie unten dargestellt geöffnet:

90fce57ad7f16842.png

Hier ist eine Beispielabfrage, die wir in der Chatoberfläche ausgeführt haben:

6a304d227d3fa5a6.png

Probieren Sie andere Anfragen in dieser Benutzeroberfläche aus. Außerdem erhalten Sie Hinweise darauf, welche anderen Abfragen in natürlicher Sprache Sie ausführen könnten.

7. Bereinigen

Damit Ihrem Google Cloud-Konto keine laufenden Gebühren in Rechnung gestellt werden, ist es wichtig, die Ressourcen zu löschen, die wir während dieses Workshops erstellt haben.

Wenn Sie den GKE-Cluster, den wir im vorherigen Abschnitt dieses Labs erstellt haben, nicht mehr benötigen, können Sie ihn mit dem folgenden Befehl löschen:

gcloud container clusters delete my-gke-cluster --zone=us-central1-a

8. Glückwunsch

Herzlichen Glückwunsch! Sie haben kubectl-ai, einen KI-basierten Kubernetes-Assistenten, erfolgreich verwendet, um Ihren Kubernetes-Cluster über Anfragen in natürlicher Sprache zu verwalten. Weitere Informationen finden Sie in den Ressourcen im nächsten Abschnitt.

9. Ressourcen