1. 简介
kubectl-ai
是一款 AI 赋能的智能界面,可将用户意图转化为精确的 Kubernetes 操作,从而使 Kubernetes 管理更加便捷高效。
实践内容
- 您将使用
kubectl-ai
(一款由 AI 提供支持的 Kubernetes 助理工具)来管理 GKE 集群。
学习内容
- 您将创建一个 GKE 集群并设置
kubectl-ai.
- 您将执行 Kubernetes 任务,例如管理、创建、修补资源,并排查集群和资源方面的问题。
所需条件
- Chrome 网络浏览器
- Gmail 账号
- 启用了结算功能的 Cloud 项目
- Gemini API 密钥
此 Codelab 假定用户熟悉 Kubernetes 的基本知识。
2. 准备工作
创建项目
- 在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。
- 确保您的 Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能。
- 您将使用 Cloud Shell,这是一个在 Google Cloud 中运行的命令行环境,它预加载了 bq。点击 Google Cloud 控制台顶部的“激活 Cloud Shell”。
- 连接到 Cloud Shell 后,您可以使用以下命令检查自己是否已通过身份验证,以及项目是否已设置为您的项目 ID:
gcloud auth list
- 在 Cloud Shell 中运行以下命令,以确认 gcloud 命令了解您的项目。
gcloud config list project
- 如果项目未设置,请使用以下命令进行设置:
gcloud config set project <YOUR_PROJECT_ID>
- 通过以下命令启用必需的 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 集群,用于运行命令。确保您已按照前面的步骤操作,并且已设置正确的项目 ID,并在 Google Cloud 项目中启用了所需的服务。
创建 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 支持来自 gemini
、vertexai
、azopenai
、openai
、grok
、bedrock
和本地 LLM 提供商(例如 ollama
和 llama.cpp
)的 AI 模型。在本例中,我们将使用 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
您可以输入 quit
退出 kubectl-ai
终端。
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 界面
在某些情况下,您可能更喜欢通过标准聊天界面与 kubectl-ai
互动。Kubectl-ai
附带自己的界面,您可以在 Cloud Shell 中通过以下命令启动该界面:
kubectl-ai --llm-provider=gemini \ --ui-type=web \ --ui-listen-address=0.0.0.0:8080
这将在界面聊天界面中启动该实用程序,您应该会看到类似于以下内容的输出:
listening on http://[::]:8080
点击 Cloud Shell 中的“网页预览”,如下所示:
然后点击在端口 8080 上预览。此操作会启动浏览器,并显示如下所示的网络聊天界面:
以下是我们通过聊天界面执行的查询示例:
在此界面中尝试其他查询。它还会提供提示,告知您可以运行哪些其他自然语言查询。
7. 清理
为避免系统向您的 Google Cloud 账号持续收取费用,请务必删除我们在本次研讨会期间创建的资源。
如果您不需要在本实验前面部分中创建的 GKE 集群,可以使用以下命令将其删除:
gcloud container clusters delete my-gke-cluster --zone=us-central1-a
8. 恭喜
恭喜!您已成功使用 kubectl-ai(一款由 AI 提供支持的 Kubernetes 助理)通过自然语言查询来管理 Kubernetes 集群。如需了解详情,请参阅下一部分中列出的资源。