Codelab - Managing Kubernetes with kubectl-ai, an AI powered Kubernetes Assistant (使用 kubectl-ai 管理 Kubernetes,這項 Kubernetes 助理採用 AI 技術)

1. 簡介

kubectl-ai 是一項 AI 輔助的智慧介面,可將使用者意圖轉換為精確的 Kubernetes 作業,讓 Kubernetes 管理更輕鬆有效率。

d62a763b2dba5ba7.png

執行步驟

  • 您將使用 kubectl-ai,這項 AI 輔助 Kubernetes 助理工具可管理 GKE 叢集。

課程內容

  • 您將建立 GKE 叢集並設定 kubectl-ai.
  • 您將執行 Kubernetes 工作,例如管理、建立及修補資源,同時排解叢集和資源問題。

軟硬體需求

  • Chrome 網路瀏覽器
  • Gmail 帳戶
  • 已啟用計費功能的 Cloud 專案
  • Gemini API 金鑰

本程式碼研究室假設使用者具備 Kubernetes 的基本知識。

2. 事前準備

建立專案

  1. Google Cloud 控制台的專案選取器頁面中,選取或建立 Google Cloud 專案
  2. 確認 Cloud 專案已啟用計費功能。瞭解如何檢查專案是否已啟用計費功能
  3. 您將使用 Cloud Shell,這是 Google Cloud 中執行的指令列環境,已預先載入 bq。按一下 Google Cloud 控制台上方的「啟用 Cloud Shell」。

「啟用 Cloud Shell」按鈕圖片

  1. 連線至 Cloud Shell 後,請使用下列指令檢查您是否已通過驗證,且專案已設為您的專案 ID:
gcloud auth list
  1. 在 Cloud Shell 中執行下列指令,確認 gcloud 指令知道您的專案。
gcloud config list project
  1. 如果未設定專案,請使用下列指令來設定:
gcloud config set project <YOUR_PROJECT_ID>
  1. 透過下列指令啟用必要的 API。這項作業可能需要幾分鐘才能完成,請耐心等候。
gcloud services enable cloudresourcemanager.googleapis.com \
                       servicenetworking.googleapis.com \
                       compute.googleapis.com \
                       container.googleapis.com

成功執行指令後,您應該會看到類似下方的訊息:

Operation "operations/..." finished successfully.

如果遺漏任何 API,您隨時可以在導入過程中啟用。

如要瞭解 gcloud 指令和用法,請參閱說明文件

3. 設定 GKE 叢集

在這個步驟中,我們將設定 GKE 叢集,並在其中執行指令。請確認您已按照先前的步驟操作,並在 Google Cloud 專案中設定正確的專案 ID,以及啟用必要服務。

建立 GKE 叢集

在 Cloud Shell 中執行下列指令。如要在其他區域建立叢集,請將 --zone 值變更為該區域。

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

這可能需要一段時間才能完成,請耐心等候。完成後,您應該會看到類似下方的輸出內容:

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 叢集詳細資料

首先,請擷取叢集憑證:

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

輸出內容應如下所示:

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

接著,請驗證叢集詳細資料:

kubectl get nodes

畫面會顯示類似如下的輸出:

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

最後,請驗證叢集命名空間:

kubectl get namespaces

畫面會顯示類似如下的輸出:

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 CLI

我們將使用「快速安裝 (建議)」方式安裝 kubectl-ai CLI

在 Cloud Shell 中提供下列指令:

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

這會下載並安裝 kubectl-ai CLI,安裝完成後,您應該會看到以下訊息:

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

我們可以執行下列指令,驗證 kubectl-ai 指令是否正常運作:

kubectl-ai

注意:上述指令會傳回錯誤,指出

creating llm client: GEMINI_API_KEY environment variable not set

請注意,kubectl-ai 支援 geminivertexaiazopenaiopenaigrokbedrock 的 AI 模型,以及 ollamallama.cpp 等本機 LLM 供應商。在本例中,我們將使用 Gemini (Google),因此需要透過 Google AI Studio 取得 API 金鑰。產生金鑰並取得值後,請在 Cloud Shell 中使用下列指令,設定指向金鑰的 GEMINI_API_KEY 環境變數。

export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"

注意:請只將「GEMINI_API_KEY」做為鍵值

再次啟動 kubectl-ai,這次您會看到它啟動並在互動式終端機中等待您的指令。

$ kubectl-ai

  Hey there, what can I help you with today?                                  

>>>  

在提示中嘗試輸入幾個與 kubectl 指令相關的查詢。以下提供幾個範例:

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

如要退出 kubectl-ai 終端機,請輸入 quit

5. 使用 kubectl-ai

您已成功設定 kubectl-ai,現在可以使用自然語言查詢與叢集互動。我們來試試其他幾個指令:

請執行下列指令:

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

這會產生下列輸出內容:

Running: kubectl get pods -n default

There are no resources found in the default namespace.      

>>>

請注意,這項工具已將我們的自然語言查詢 (列出 Pod) 翻譯成對應的 kubectl 指令。

此外,請注意我們現在位於 kubectl-ai 互動式終端機 (>>>) 內,可以繼續與其互動。

輸入下列指令:

how many pods are there in kube-system namespace

輸出內容如下所示:

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

單次拍攝指令

上一節說明如何啟動 kubectl-ai 並留在互動式終端機中,以便提供後續指令。如果您想以自主方式執行指令,且不希望系統顯示互動式提示,等待您輸入下一個指令,就不適合使用這項功能。

輸入單次指令方法,並搭配使用 --quiet 參數。

以下是建立部署作業的指令範例。

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

這會導致系統執行 create deployment 指令,如下所示:

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 .

這樣一來,我們就能設定 kubectl-ai 與目前的 GKE 叢集互動。

我們剛執行了幾個指令,並示範了 kubectl-ai 的運作模式。您可以將輸出內容傳送至其他工具、瞭解錯誤、在 kubectl-ai 的不同工作階段執行之間保持持續性等。請參閱工具說明文件的「使用方式」一節。

6. (選用) kubectl-ai Chat 介面

在某些情況下,您可能偏好透過標準的 Chat 介面使用 kubectl-aiKubectl-ai 隨附專屬的 UI 介面,您可以在 Cloud Shell 中透過下列指令啟動:

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

這會在介面聊天介面中啟動公用程式,您應該會看到類似以下的輸出內容:

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

在 Cloud Shell 中按一下「網頁預覽」,如下所示:

f990712162e8e924.png

然後按一下「透過以下通訊埠預覽:8080」。系統會啟動瀏覽器,並顯示如下所示的網頁即時通訊介面:

90fce57ad7f16842.png

以下是我們在即時通訊介面中執行的範例查詢:

6a304d227d3fa5a6.png

請在這個介面中嘗試其他查詢。此外,系統還會提示您可以執行的其他自然語言查詢。

7. 清除

為避免系統持續向您的 Google Cloud 帳戶收費,請務必刪除我們在研討會期間建立的資源。

如果您不需要在本實驗室前一節中建立的 GKE 叢集,可以透過下列指令刪除:

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

8. 恭喜

恭喜!您已成功使用 kubectl-ai,這項 AI 輔助 Kubernetes 管理工具可透過自然語言查詢管理 Kubernetes 叢集。詳情請參閱下一節列出的資源。

9. 資源