בדף הזה מוסבר איך להתקין את כלי שורת הפקודה kubectl שמשמש לניהול אשכולות Google Kubernetes Engine (GKE) ולגישה אליהם. ההגדרה kubectl
נדרשת אם מפעילים כמה אשכולות ב- Google Cloud.
תלמדו את הנושאים הבאים:
- איך
kubectlעובד. - איך מתקינים את
kubectlורכיבים תלויים נדרשים. - איך מגדירים אשכול ברירת מחדל ל-
kubectl - איך מריצים פקודות
kubectlמול אשכול ספציפי
הדף הזה מיועד לאדמינים של IT, למפעילים ולמפתחים שמגדירים, מנטרים ומנהלים תשתית ענן, כולל הקצאה והגדרה של משאבי ענן. מידע נוסף על תפקידים נפוצים ועל משימות לדוגמה שמוזכרות במסמכי התיעוד זמין במאמר תפקידי משתמשים נפוצים ומשימות ב-GKE. Google Cloud
לפני שקוראים את הדף הזה, חשוב לוודא שמכירים את Kubernetes kubectl.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את ממשק ה-API של Google Kubernetes Engine. הפעלת Google Kubernetes Engine API
- אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
- מוודאים שיש לכם אשכול קיים של Autopilot או Standard. כדי ליצור אשכול חדש, אפשר לעיין במאמר בנושא יצירת אשכול Autopilot.
התקנת kubectl
אפשר להתקין את kubectl באמצעות Google Cloud CLI או מנהל חבילות חיצוני, כמו apt או yum.
gcloud
מתקינים את הרכיב
kubectl:gcloud components install kubectlכדי לוודא ש-
kubectlמותקן, בודקים אם מותקנת הגרסה העדכנית ביותר:kubectl version --client
apt
מוודאים שמאגר
cloud-sdkקיים:grep -rhE ^deb /etc/apt/sources.list* | grep "cloud-sdk"הפלט אמור להיראות כך:
deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk mainאם מאגר
cloud-sdkלא מופיע ברשימה, צריך להתקין את ה-CLI של gcloud.מתקינים את הרכיב
kubectl:apt-get update apt-get install -y kubectlכדי לוודא ש-
kubectlמותקן, בודקים אם מותקנת הגרסה העדכנית:kubectl version --client
yum
מוודאים שמאגר
cloud-sdkקיים:yum repolist | grep "google-cloud-sdk"הפלט אמור להיראות כך:
google-cloud-sdk Google Cloud SDK 2,205מתקינים את הרכיב
kubectl:yum install -y kubectlכדי לוודא ש-
kubectlמותקן, בודקים אם מותקנת הגרסה העדכנית ביותר:kubectl version --client
התקנת פלאגינים נדרשים
kubectl ולקוחות אחרים של Kubernetes דורשים פלאגין אימות, gke-gcloud-auth-plugin, שמשתמש במסגרת Client-go Credential Plugins כדי לספק אסימוני אימות לתקשורת עם אשכולות GKE.
לפני שגרסה 1.26 של Kubernetes תופץ, ה-CLI של gcloud יתחיל לדרוש שהקובץ הבינארי gke-gcloud-auth-plugin יהיה מותקן. אם הפלאגין לא מותקן, התקנות קיימות של kubectl או של לקוחות Kubernetes מותאמים אישית אחרים מפסיקות לפעול.
חובה להתקין את הפלאגין הזה כדי להשתמש ב-kubectl ובקליינטים אחרים ליצירת אינטראקציה עם GKE.
אם התוסף לא מותקן, לקוחות קיימים יראו הודעת שגיאה.
לפני שמתחילים, בודקים אם הפלאגין כבר מותקן:
gke-gcloud-auth-plugin --version
אם בפלט מוצג מידע על הגרסה, דלגו על הקטע הזה.
אפשר להתקין את תוסף האימות באמצעות ה-CLI של gcloud או מנהל חבילות חיצוני כמו apt או yum.
gcloud
מתקינים את הקובץ הבינארי gke-gcloud-auth-plugin:
gcloud components install gke-gcloud-auth-plugin
apt
מתקינים את הקובץ הבינארי gke-gcloud-auth-plugin:
apt-get install google-cloud-sdk-gke-gcloud-auth-pluginyum
מתקינים את הקובץ הבינארי gke-gcloud-auth-plugin:
yum install google-cloud-sdk-gke-gcloud-auth-pluginמאמתים את ההתקנה של הקובץ הבינארי gke-gcloud-auth-plugin:
בודקים את הגרסה הבינארית של
gke-gcloud-auth-plugin:gke-gcloud-auth-plugin --versionמעדכנים את ההגדרה של
kubectlכדי להשתמש בפלאגין:gcloud container clusters get-credentials CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATIONמחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של האשכול. -
CONTROL_PLANE_LOCATION: המיקום של מישור הבקרה של האשכול ב-Compute Engine. מציינים אזור לאשכולות אזוריים או אזור זמין לאשכולות אזוריים.
-
מריצים את הפקודה הבאה כדי לוודא שההגדרה תקינה:
kubectl get namespacesהפלט אמור להיראות כך:
NAME STATUS AGE default Active 51d kube-node-lease Active 51d kube-public Active 51d kube-system Active 51d
מידע נוסף על הפלאגין הזה זמין ב-Kubernetes KEP.
אינטראקציה עם kubectl
Kubernetes משתמש בקובץ YAML שנקרא
kubeconfig
כדי לאחסן את פרטי האימות של האשכול עבור kubectl. כברירת מחדל, הקובץ נשמר במיקום $HOME/.kube/config.
kubeconfig מכיל קבוצה של פרמטרים של גישה שנקראים contexts. כל הקשר מכיל אשכול Kubernetes, משתמש ומרחב שמות אופציונלי שמוגדר כברירת מחדל. kubectl מתייחס להקשרים כשמריצים פקודות.
אופציונלי, אתם יכולים להגדיר את kubectl באמצעות המשימות הבאות:
- בוחרים את האשכול שאליו
kubectlמתקשר. - מגדירים את האשכול שמוגדר כברירת מחדל ל-
kubectlעל ידי הגדרת ההקשר הנוכחי בקובץkubeconfig. - כדי להריץ פקודות
kubectlמול אשכול ספציפי, משתמשים בדגל--cluster.
הצגת kubeconfig
כדי להציג את kubeconfig של הסביבה, מריצים את הפקודה הבאה:
kubectl config view
הפקודה מחזירה רשימה של כל האשכולות שעבורם נוצרו רשומות kubeconfig. אם רשום אשכול GKE, אפשר להריץ פקודות kubectl
נגדו בסביבה הנוכחית. אחרת, צריך לאחסן את פרטי האשכול עבור kubectl.
הצגת ההקשר הנוכחי של kubectl
ההקשר הנוכחי הוא האשכול שמוגדר כרגע כברירת מחדל עבור kubectl. כל הפקודות של kubectl מופעלות מול האשכול הזה.
כשיוצרים אשכול באמצעות gcloud container clusters create-auto, נוסף באופן אוטומטי רשומה לקובץ kubeconfig בסביבה שלכם, וההקשר הנוכחי משתנה לאשכול הזה. לדוגמה:
gcloud container clusters create-auto my-cluster
Creating my-cluster...done
Fetching cluster endpoint and auth data.
kubeconfig entry generated for my-cluster
כדי להציג את ההקשר הנוכחי של kubectl, מריצים את הפקודה הבאה:
kubectl config current-context
פרטי מקבץ החנויות של kubectl
כשיוצרים אשכול באמצעות מסוף Google Cloud או באמצעות ה-CLI של gcloud ממחשב אחר, קובץ kubeconfig של הסביבה לא מתעדכן.
בנוסף, אם חבר בצוות הפרויקט משתמש ב-CLI של gcloud כדי ליצור אשכול מהמחשב שלו, ה-kubeconfig שלו מתעדכן אבל ה-kubeconfig שלכם לא. הרשומה kubeconfig
כוללת את אחד מהערכים הבאים:
- פרטי הכניסה שלך כפי שמופיעים ב-
gcloud auth list, או - פרטי הכניסה שמוגדרים כברירת מחדל לאפליקציה, אם הם הוגדרו.
כדי ליצור הקשר kubeconfig בסביבה שלכם, צריך לוודא שיש לכם הרשאה מסוג container.clusters.get. תפקיד ה-IAM עם ההרשאות המינימליות שכולל את ההרשאה הזו הוא container.clusterViewer.
כדי ליצור הקשר kubeconfig עבור אשכול ספציפי, מריצים את הפקודה הבאה:
gcloud container clusters get-credentials CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של האשכול. -
CONTROL_PLANE_LOCATION: המיקום של מישור הבקרה של האשכול ב-Compute Engine. מציינים אזור לאשכולות אזוריים או אזור זמין לאשכולות אזוריים.
יצירת רשומה של kubeconfig באמצעות כתובת IP פנימית של אשכול
לכל אשכול יש כמה כתובות של נקודות קצה, שלכל אחת מהן מאפיינים שונים. אחת מנקודות הקצה האלה משמשת כנקודת הקצה הקנונית שמשמשת את kubectl ושירותים אחרים לתקשורת עם מישור הבקרה של האשכול.
GKE בוחר באופן אוטומטי את נקודת הקצה על סמך הסדר הבא:
- כתובת ה-IP החיצונית (אם הפעלתם את נקודת הקצה החיצונית)
- כתובת ה-IP הפנימית
- כתובת ה-DNS (אם הגישה באמצעות כתובת IP מושבתת)
כדי להשתמש בנקודת הקצה הקנונית כברירת מחדל, מריצים את הפקודה
get-credentials. כדי לשלוט טוב יותר בנקודת הקצה שבה משתמשים ב-kubectl, אפשר להשתמש בדגל--internal-ipאו--dns-endpoint. כדי לעדכן את קובץkubeconfigכך שישתמש בכתובת ה-IP הפנימית, מריצים את הפקודה הבאה:
gcloud container clusters get-credentials CLUSTER_NAME --internal-ip
כדי לעדכן את קובץ kubeconfig כך שישתמש בכתובת ה-DNS, מריצים את הפקודה הבאה:
gcloud container clusters get-credentials CLUSTER_NAME --dns-endpoint
מחליפים את CLUSTER_NAME בשם האשכול.
כברירת מחדל, כשמריצים את get-credentials, נעשה שימוש בכתובת ה-IP שצוינה בשדה endpoint.
הגדרת אשכול ברירת מחדל לפקודות של kubectl
אם יצרתם בעבר רשומה של kubeconfig לאשכולות, אתם יכולים להחליף את ההקשר הנוכחי של kubectl לאשכול הזה על ידי הפעלת הפקודה הבאה:
gcloud container clusters get-credentials CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של האשכול. -
CONTROL_PLANE_LOCATION: המיקום של מישור הבקרה של האשכול ב-Compute Engine. מציינים אזור לאשכולות אזוריים או אזור זמין לאשכולות אזוריים.
לדוגמה, נניח שיש פרויקט עם שני אשכולות, my-cluster ו-my-new-cluster. ההקשר הנוכחי הוא my-new-cluster, אבל רוצים להריץ את כל הפקודות kubectl מול my-cluster. כדי להחליף את ההקשר הנוכחי מ-my-new-cluster ל-my-cluster, מריצים את הפקודה הבאה:
gcloud container clusters get-credentials CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION
הפעלת פקודות kubectl ספציפיות באשכול מסוים
כדי להריץ פקודות נפרדות של kubectl מול אשכול ספציפי, משתמשים ב---cluster=CLUSTER_NAME.
לדוגמה, נניח שיש סביבה עם שני אשכולות, my-cluster ו-my-new-cluster, וההקשר הנוכחי הוא my-cluster. רוצים לפרוס אפליקציה ב-my-new-cluster, אבל לא רוצים לשנות את ההקשר הנוכחי. כדי לפרוס את האפליקציה ב-my-new-cluster בלי לשנות את ההקשר הנוכחי, מריצים את הפקודה הבאה:
kubectl run my-app --image us-docker.pkg.dev/my-project/my-repo/my-app:1.0 --cluster my-new-cluster
המאמרים הבאים
- איך נותנים הרשאה לגישה למשאבים באשכולות GKE
- אימות מול שירותים Google Cloud מעומסי עבודה ב-GKE.
- מומלץ לקרוא את
kubectlתקציר. - פתרון בעיות בכלי שורת הפקודה
kubectl
נסו בעצמכם
אנחנו ממליצים למשתמשים חדשים ב-Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של GKE בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300 $להרצה, לבדיקה ולפריסה של עומסי העבודה.
אני רוצה לנסות את GKE בחינם