Codelab — Управление Kubernetes с помощью kubectl-ai, помощника Kubernetes на базе искусственного интеллекта

1. Введение

kubectl-ai — это интеллектуальный интерфейс на базе искусственного интеллекта, который преобразует намерения пользователя в точные операции Kubernetes, делая управление Kubernetes более доступным и эффективным.

d62a763b2dba5ba7.png

Что ты будешь делать?

  • Вы будете работать с kubectl-ai — инструментом Kubernetes Assistant на базе искусственного интеллекта для управления кластером GKE.

Чему вы научитесь

  • Вам предстоит создать кластер GKE и настроить kubectl-ai.
  • Вы будете выполнять такие задачи Kubernetes, как управление, создание и исправление ресурсов, а также устранение неполадок в кластерах и ресурсах.

Что вам понадобится

  • веб-браузер Chrome
  • Аккаунт Gmail
  • Облачный проект с включенным биллингом
  • API-ключ Gemini

В этой лабораторной работе предполагается, что пользователь знаком с базовыми знаниями Kubernetes.

2. Прежде чем начать

Создать проект

  1. В консоли Google Cloud на странице выбора проекта выберите или создайте проект Google Cloud.
  2. Убедитесь, что для вашего облачного проекта включена функция выставления счетов. Узнайте, как проверить, включена ли функция выставления счетов для проекта .
  3. Вы будете использовать Cloud Shell — среду командной строки, работающую в Google Cloud и предустановленную вместе с bq. Нажмите «Активировать Cloud Shell» в верхней части консоли Google Cloud.

Изображение кнопки «Активировать Cloud Shell»

  1. После подключения к Cloud Shell вы проверяете, что вы уже прошли аутентификацию и что проекту присвоен ваш идентификатор проекта, с помощью следующей команды:
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.

Создать кластер 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 . В нашем случае мы будем использовать Gemini (Google) и для этого нам потребуется получить API-ключ через Google AI Studio . После генерации ключа и получения готового значения используйте следующую команду в 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.      

>>>

Обратите внимание, как он преобразовал наш запрос на естественном языке для перечисления модулей в эквивалентную команду 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

В определённых ситуациях вам может быть удобнее работать с 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, как показано ниже:

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, помощник Kubernetes на базе искусственного интеллекта для управления кластером Kubernetes с помощью запросов на естественном языке. Подробнее см. в ресурсах, перечисленных в следующем разделе.

9. Ресурсы