Codelab - Managing Kubernetes with kubectl-ai, an AI powered Kubernetes Assistant

1. Wprowadzenie

kubectl-ai to inteligentny interfejs oparty na AI, który przekłada intencje użytkownika na precyzyjne operacje Kubernetes, dzięki czemu zarządzanie Kubernetes jest bardziej dostępne i wydajne.

d62a763b2dba5ba7.png

Co musisz zrobić

  • Będziesz korzystać z kubectl-ai, narzędzia opartego na AI, które pomaga w zarządzaniu klastrem GKE.

Czego się nauczysz

  • Utworzysz klaster GKE i skonfigurujesz kubectl-ai..
  • Będziesz wykonywać zadania Kubernetes, takie jak zarządzanie zasobami, ich tworzenie i patchowanie, a także rozwiązywać problemy z klastrami i zasobami.

Czego potrzebujesz

  • przeglądarki Chrome,
  • konto Gmail,
  • Projekt w chmurze z włączonymi płatnościami
  • Klucz interfejsu Gemini API

W tym laboratorium zakłada się, że użytkownik ma podstawową wiedzę o Kubernetes.

2. Zanim zaczniesz

Utwórz projekt

  1. W konsoli Google Cloud na stronie selektora projektów wybierz lub utwórz projekt Google Cloud.
  2. Sprawdź, czy w projekcie Cloud włączone są płatności. Dowiedz się, jak sprawdzić, czy w projekcie są włączone płatności .
  3. Będziesz używać Cloud Shell, czyli środowiska wiersza poleceń działającego w Google Cloud, które jest wstępnie załadowane narzędziem bq. U góry konsoli Google Cloud kliknij Aktywuj Cloud Shell.

Obraz przycisku Aktywuj Cloud Shell

  1. Po połączeniu z Cloud Shell sprawdź, czy jesteś już uwierzytelniony i czy projekt jest ustawiony na Twój identyfikator projektu, używając tego polecenia:
gcloud auth list
  1. Aby potwierdzić, że polecenie gcloud zna Twój projekt, uruchom w Cloud Shell to polecenie:
gcloud config list project
  1. Jeśli projekt nie jest ustawiony, użyj tego polecenia, aby go ustawić:
gcloud config set project <YOUR_PROJECT_ID>
  1. Włącz wymagane interfejsy API za pomocą polecenia pokazanego poniżej. Może to potrwać kilka minut, więc zachowaj cierpliwość.
gcloud services enable cloudresourcemanager.googleapis.com \
                       servicenetworking.googleapis.com \
                       compute.googleapis.com \
                       container.googleapis.com

Po pomyślnym wykonaniu polecenia powinien wyświetlić się komunikat podobny do tego poniżej:

Operation "operations/..." finished successfully.

Jeśli pominiesz jakiś interfejs API, możesz go włączyć w trakcie wdrażania.

Informacje o poleceniach gcloud i ich użyciu znajdziesz w dokumentacji.

3. Konfigurowanie klastra GKE

W tym kroku skonfigurujemy klaster GKE, w którym będziemy uruchamiać polecenia. Upewnij się, że udało Ci się wykonać poprzednie kroki, skonfigurować prawidłowy identyfikator projektu i włączyć wymagane usługi w projekcie Google Cloud.

Utwórz klaster GKE

Uruchom to polecenie w Cloud Shell. Jeśli chcesz utworzyć klaster w innej strefie, zmień wartość --zone.

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

Może to chwilę potrwać, więc prosimy o cierpliwość. Po zakończeniu powinny pojawić się dane wyjściowe podobne do tych poniżej:

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

Sprawdź szczegóły klastra GKE

Najpierw pobierzmy dane logowania do klastra:

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

Powinny się wyświetlić dane wyjściowe podobne do tych poniżej:

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

Następnie sprawdźmy szczegóły klastra:

kubectl get nodes

Powinny się wyświetlić dane wyjściowe podobne do tych:

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

Na koniec sprawdźmy przestrzeń nazw klastra:

kubectl get namespaces

Powinny się wyświetlić dane wyjściowe podobne do tych:

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. Instalowanie interfejsu kubectl-ai

Do zainstalowania kubectl-ai CLI użyjemy szybkiej instalacji (zalecanej).

Wpisz w Cloud Shell to polecenie:

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

Spowoduje to pobranie i zainstalowanie kubectl-ai CLI. Na koniec powinien pojawić się komunikat:

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

Możemy sprawdzić, czy polecenie kubectl-ai działa, uruchamiając to polecenie:

kubectl-ai

Uwaga: powyższe polecenie zwróci błąd informujący, że

creating llm client: GEMINI_API_KEY environment variable not set

Pamiętaj, że kubectl-ai obsługuje modele AI od gemini, vertexai, azopenai, openai, grok, bedrock i lokalnych dostawców dużych modeli językowych, takich jak ollamallama.cpp. W naszym przypadku będziemy korzystać z Gemini (Google) i musimy uzyskać klucz interfejsu API w Google AI Studio. Po wygenerowaniu klucza i przygotowaniu jego wartości użyj tego polecenia w Cloud Shell, aby ustawić zmienną środowiskową GEMINI_API_KEY wskazującą Twój klucz.

export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"

Uwaga: „GEMINI_API_KEY” używaj tylko jako wartości klucza.

Uruchom kubectl-ai jeszcze raz. Tym razem zobaczysz, że aplikacja uruchamia się i czeka w interaktywnym terminalu na Twoje polecenie.

$ kubectl-ai

  Hey there, what can I help you with today?                                  

>>>  

Wypróbuj w prompcie kilka zapytań związanych z poleceniami kubectl. Poniżej znajdziesz kilka przykładów:

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

Możesz zamknąć terminal kubectl-ai, wpisując quit.

5. Korzystanie z kubectl-ai

Po skonfigurowaniu kubectl-ai możesz teraz wchodzić w interakcje z klastrem za pomocą zapytań w języku naturalnym. Wypróbujmy kilka innych poleceń:

Uruchom to polecenie:

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

Spowoduje to wyświetlenie tych danych wyjściowych:

Running: kubectl get pods -n default

There are no resources found in the default namespace.      

>>>

Zwróć uwagę, jak przetłumaczył nasze zapytanie w języku naturalnym na listę zasobników na odpowiednie polecenie kubectl.

Zwróć też uwagę, że znajdujemy się teraz w kubectl-ai interaktywnym terminalu (>>>), w którym możemy kontynuować interakcję.

Wpisz to polecenie:

how many pods are there in kube-system namespace

Dane wyjściowe są widoczne poniżej:

>>> 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.

Polecenie pojedynczego strzału

W poprzedniej sekcji pokazaliśmy, jak uruchomić kubectl-ai i pozostać w interaktywnym terminalu, aby wydawać kolejne polecenia. Nie nadaje się do poleceń, które chcesz wykonywać autonomicznie i bez interaktywnego promptu oczekującego na kolejne polecenie.

Wpisz metodę polecenia pojedynczego z parametrem --quiet.

Oto przykładowe polecenie tworzenia wdrożenia.

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

Spowoduje to wykonanie polecenia create deployment, jak pokazano poniżej:

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 .

W ten sposób udało nam się skonfigurować kubectl-ai do interakcji z bieżącym klastrem GKE.

Właśnie wykonaliśmy kilka poleceń i pokazaliśmy sposób pracy z kubectl-ai. Możesz przekazywać dane wyjściowe do innych narzędzi, analizować błędy, sprawdzać trwałość między różnymi sesjami kubectl-ai i wykonywać inne czynności. Zapoznaj się z sekcją Użycie w dokumentacji narzędzia.

6. (Opcjonalnie) Interfejs czatu kubectl-ai

W niektórych sytuacjach możesz woleć korzystać z kubectl-ai za pomocą standardowego interfejsu Google Chat. Kubectl-ai ma własny interfejs, który możesz uruchomić za pomocą polecenia pokazanego poniżej w Cloud Shell:

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

Spowoduje to uruchomienie narzędzia w interfejsie czatu. Powinny się wyświetlić dane wyjściowe podobne do tych:

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

W Cloud Shell kliknij Podgląd w przeglądarce, jak pokazano poniżej:

f990712162e8e924.png

Następnie kliknij Podejrzyj na porcie 8080. Spowoduje to uruchomienie przeglądarki i udostępnienie interfejsu czatu w przeglądarce, jak pokazano poniżej:

90fce57ad7f16842.png

Oto przykładowe zapytanie, które wykonaliśmy w interfejsie czatu:

6a304d227d3fa5a6.png

Wypróbuj inne zapytania w tym interfejsie. Podpowiada też, jakie inne zapytania w języku naturalnym możesz uruchomić.

7. Czyszczenie danych

Aby uniknąć obciążania konta Google Cloud bieżącymi opłatami, usuń zasoby utworzone podczas tych warsztatów.

Jeśli nie potrzebujesz klastra GKE utworzonego w poprzedniej części tego laboratorium, możesz go usunąć za pomocą tego polecenia:

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

8. Gratulacje

Gratulacje! Udało Ci się użyć kubectl-ai, asystenta Kubernetes opartego na AI, do zarządzania klastrem Kubernetes za pomocą zapytań w języku naturalnym. Więcej informacji znajdziesz w materiałach wymienionych w następnej sekcji.

9. Zasoby