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. Ресурсы