1. מבוא
kubectl-ai
הוא ממשק חכם מבוסס-AI שמתרגם את כוונת המשתמש לפעולות מדויקות ב-Kubernetes, וכך הופך את הניהול של Kubernetes לנגיש ויעיל יותר.
מה עושים
- תעבדו עם
kubectl-ai
, כלי מבוסס-AI לניהול אשכול GKE.
מה תלמדו
- תצרו אשכול GKE ותגדירו את
kubectl-ai.
- תבצעו משימות ב-Kubernetes כמו ניהול, יצירה ותיקון של משאבים באמצעות פתרון בעיות באשכולות ובמשאבים.
מה צריך
- דפדפן האינטרנט Chrome
- חשבון Gmail
- פרויקט ב-Cloud עם חיוב מופעל
- מפתח Gemini API
ב-codelab הזה אנחנו מניחים שהמשתמש מכיר את היסודות של Kubernetes.
2. לפני שמתחילים
יצירת פרויקט
- ב-Google Cloud Console, בדף לבחירת הפרויקט, בוחרים או יוצרים פרויקט ב-Google Cloud.
- הקפידו לוודא שהחיוב מופעל בפרויקט שלכם ב-Cloud. כך בודקים אם החיוב מופעל בפרויקט
- תשתמשו ב-Cloud Shell, סביבת שורת פקודה שפועלת ב-Google Cloud ומגיעה עם bq שנטען מראש. לוחצים על 'הפעלת Cloud Shell' בחלק העליון של מסוף Google Cloud.
- אחרי שמתחברים ל-Cloud Shell, בודקים שכבר בוצע אימות ושהפרויקט מוגדר למזהה הפרויקט באמצעות הפקודה הבאה:
gcloud auth list
- מריצים את הפקודה הבאה ב-Cloud Shell כדי לוודא שפקודת gcloud מכירה את הפרויקט.
gcloud config list project
- אם הפרויקט לא מוגדר, משתמשים בפקודה הבאה כדי להגדיר אותו:
gcloud config set project <YOUR_PROJECT_ID>
- מפעילים את ממשקי ה-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 כמו שמוצג למטה:
לוחצים על תצוגה מקדימה ביציאה 8080. ייפתח דפדפן ויוצג ממשק הצ'אט באינטרנט כמו שמוצג בהמשך:
הנה דוגמה לשאילתה שהרצנו בממשק הצ'אט:
אפשר לנסות שאילתות אחרות בממשק הזה. הוא גם מספק רמזים לגבי שאילתות אחרות בשפה טבעית שאפשר להריץ.
7. הסרת המשאבים
כדי להימנע מחיובים שוטפים בחשבון Google Cloud, חשוב למחוק את המשאבים שיצרנו במהלך הסדנה הזו.
אם אתם לא צריכים את אשכול GKE שיצרנו בחלק הקודם של המעבדה הזו, אתם יכולים למחוק אותו באמצעות הפקודה הבאה:
gcloud container clusters delete my-gke-cluster --zone=us-central1-a
8. מזל טוב
הצלחתם להשתמש ב-kubectl-ai, עוזר Kubernetes מבוסס-AI, כדי לנהל את אשכול Kubernetes באמצעות שאילתות בשפה טבעית. מידע נוסף זמין במקורות המידע שמפורטים בקטע הבא.