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

۱. مقدمه

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

d62a763b2dba5ba7.png

کاری که انجام خواهید داد

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

آنچه یاد خواهید گرفت

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

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

  • مرورگر وب کروم
  • یک حساب جیمیل
  • یک پروژه ابری با قابلیت پرداخت صورتحساب
  • یک کلید API جمینی

این آزمایشگاه کد انتظار دارد که کاربر با دانش پایه Kubernetes آشنا باشد.

۲. قبل از شروع

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

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

۳. راه‌اندازی کلاستر 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

۴. نصب رابط خط فرمان kubectl-ai

ما از روش نصب سریع (توصیه شده) برای نصب 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 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 را در prompt امتحان کنید. چند نمونه در زیر آورده شده است:

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

می‌توانید با تایپ کردن quit از ترمینال kubectl-ai خارج شوید.

۵. استفاده از 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 وارد کنید.

در اینجا یک دستور نمونه برای ایجاد یک استقرار (deployment) آورده شده است.

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

۶. (اختیاری) رابط چت 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

سپس روی پیش‌نمایش روی پورت ۸۰۸۰ کلیک کنید. این کار یک مرورگر را اجرا می‌کند و رابط چت وب را مطابق شکل زیر در دسترس قرار می‌دهد:

90fce57ad7f16842.png

در اینجا یک نمونه کوئری که در رابط چت اجرا کردیم، آورده شده است:

6a304d227d3fa5a6.png

پرس‌وجوهای دیگر را در این رابط امتحان کنید. همچنین نکاتی در مورد سایر پرس‌وجوهای زبان طبیعی که می‌توانید اجرا کنید، ارائه می‌دهد.

۷. تمیز کردن

برای جلوگیری از هزینه‌های مداوم برای حساب Google Cloud خود، مهم است که منابعی را که در طول این کارگاه ایجاد کرده‌ایم حذف کنید.

اگر به کلاستر GKE که در بخش قبلی این تمرین ایجاد کردیم نیازی ندارید، می‌توانید آن را از طریق دستور زیر حذف کنید:

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

۸. تبریک

تبریک می‌گویم، شما با موفقیت از kubectl-ai، یک دستیار Kubernetes مبتنی بر هوش مصنوعی برای مدیریت خوشه Kubernetes خود از طریق پرس‌وجوهای زبان طبیعی، استفاده کردید. برای اطلاعات بیشتر، به منابع ذکر شده در بخش بعدی مراجعه کنید.

۹. منابع