Codelab – ניהול Kubernetes באמצעות kubectl-ai, עוזר Kubernetes מבוסס-AI

1. מבוא

kubectl-ai הוא ממשק חכם מבוסס-AI שמתרגם את כוונת המשתמש לפעולות מדויקות ב-Kubernetes, וכך הופך את הניהול של Kubernetes לנגיש ויעיל יותר.

d62a763b2dba5ba7.png

מה עושים

  • תעבדו עם kubectl-ai, כלי מבוסס-AI לניהול אשכול GKE.

מה תלמדו

  • תצרו אשכול GKE ותגדירו את kubectl-ai.
  • תבצעו משימות ב-Kubernetes כמו ניהול, יצירה ותיקון של משאבים באמצעות פתרון בעיות באשכולות ובמשאבים.

מה צריך

  • דפדפן האינטרנט Chrome
  • חשבון Gmail
  • פרויקט ב-Cloud עם חיוב מופעל
  • מפתח Gemini API

ב-codelab הזה אנחנו מניחים שהמשתמש מכיר את היסודות של Kubernetes.

‫2. לפני שמתחילים

יצירת פרויקט

  1. ב-Google Cloud Console, בדף לבחירת הפרויקט, בוחרים או יוצרים פרויקט ב-Google Cloud.
  2. הקפידו לוודא שהחיוב מופעל בפרויקט שלכם ב-Cloud. כך בודקים אם החיוב מופעל בפרויקט
  3. תשתמשו ב-Cloud Shell, סביבת שורת פקודה שפועלת ב-Google Cloud ומגיעה עם bq שנטען מראש. לוחצים על 'הפעלת Cloud Shell' בחלק העליון של מסוף Google Cloud.

תמונה של לחצן Activate 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 תומך במודלים של 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 דרך ממשק Chat רגיל. ל-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

לוחצים על תצוגה מקדימה ביציאה 8080. ייפתח דפדפן ויוצג ממשק הצ'אט באינטרנט כמו שמוצג בהמשך:

90fce57ad7f16842.png

הנה דוגמה לשאילתה שהרצנו בממשק הצ'אט:

6a304d227d3fa5a6.png

אפשר לנסות שאילתות אחרות בממשק הזה. הוא גם מספק רמזים לגבי שאילתות אחרות בשפה טבעית שאפשר להריץ.

7. הסרת המשאבים

כדי להימנע מחיובים שוטפים בחשבון Google Cloud, חשוב למחוק את המשאבים שיצרנו במהלך הסדנה הזו.

אם אתם לא צריכים את אשכול GKE שיצרנו בחלק הקודם של המעבדה הזו, אתם יכולים למחוק אותו באמצעות הפקודה הבאה:

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

8. מזל טוב

הצלחתם להשתמש ב-kubectl-ai, עוזר Kubernetes מבוסס-AI, כדי לנהל את אשכול Kubernetes באמצעות שאילתות בשפה טבעית. מידע נוסף זמין במקורות המידע שמפורטים בקטע הבא.

9. משאבים