Codelab - مدیریت Kubernetes با kubectl-ai، دستیار Kubernetes مجهز به هوش مصنوعی

1. مقدمه

kubectl-ai یک رابط هوشمند مبتنی بر هوش مصنوعی است که قصد کاربر را به عملیات دقیق Kubernetes تبدیل می‌کند و مدیریت Kubernetes را در دسترس‌تر و کارآمدتر می‌کند.

d62a763b2dba5ba7.png

کاری که خواهی کرد

  • شما با kubectl-ai ، یک ابزار مجهز به دستیار Kubernetes با هوش مصنوعی برای مدیریت یک خوشه GKE کار خواهید کرد.

چیزی که یاد خواهید گرفت

  • شما یک کلاستر GKE ایجاد می کنید و kubectl-ai.
  • شما وظایف Kubernetes مانند مدیریت، ایجاد، وصله منابع با عیب یابی کلاسترها و منابع را انجام خواهید داد.

آنچه شما نیاز دارید

  • مرورگر وب کروم
  • یک اکانت جیمیل
  • یک پروژه Cloud با فعال کردن صورت‌حساب
  • یک کلید API Gemini

این کد لبه انتظار دارد که کاربر با دانش اولیه Kubernetes آشنا باشد.

2. قبل از شروع

یک پروژه ایجاد کنید

  1. در Google Cloud Console ، در صفحه انتخاب پروژه، یک پروژه Google Cloud را انتخاب یا ایجاد کنید.
  2. مطمئن شوید که صورتحساب برای پروژه Cloud شما فعال است. با نحوه بررسی فعال بودن صورت‌حساب در پروژه آشنا شوید.
  3. شما از Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان در حال اجرا در Google Cloud که با bq از قبل بارگذاری شده است. روی Activate Cloud Shell در بالای کنسول Google Cloud کلیک کنید.

تصویر دکمه 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 خود فعال کرده‌اید.

خوشه 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 از مدل‌های 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

با تایپ کردن 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.      

>>>

توجه کنید که چگونه پرس و جوی زبان طبیعی ما را برای فهرست کردن پادها به دستور 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

مطابق شکل زیر روی Web Preview در Cloud Shell کلیک کنید:

f990712162e8e924.png

سپس روی Preview در پورت 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. منابع