בדף הזה מוסבר איך להתקין את כלי שורת הפקודה kubectl שמשמש לניהול אשכולות Google Kubernetes Engine (GKE) ולגישה אליהם. ההגדרה נדרשת אם מפעילים כמה אשכולות ב-kubectl. Cloud de Confiance by S3NS
תלמדו את הנושאים הבאים:
- איך
kubectlעובד - איך מתקינים את
kubectlורכיבים תלויים נדרשים. - איך מגדירים אשכול ברירת מחדל ל-
kubectl - איך מריצים פקודות
kubectlמול אשכול ספציפי.
הדף הזה מיועד לאדמינים של IT, למפעילים ולמפתחים שמגדירים, מנטרים ומנהלים תשתית ענן, כולל הקצאה והגדרה של משאבי ענן. מידע נוסף על תפקידים נפוצים ומשימות לדוגמה שמוזכרים במסמכי התיעוד זמין במאמר תפקידי משתמשים נפוצים ומשימות ב-GKE. Cloud de Confiance by S3NS
לפני שקוראים את הדף הזה, חשוב לוודא שמכירים את 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
כשיוצרים אשכול באמצעות מסוף Cloud de Confiance או באמצעות gcloud CLI ממחשב אחר, קובץ 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 מושבתת)
כדי ליצור רשומה של kubeconfig עבור אשכול, מריצים אחת מהפקודות הבאות:
כדי להשתמש בנקודת הקצה הקנונית כברירת מחדל, מריצים את הפקודה
gcloud container clusters get-credentials. הפקודה הזו משתמשת בכתובת ה-IP בשדהendpointשל הגדרות האשכול.כדי להשתמש בנקודת הקצה הפנימית מבוססת ה-IP של האשכול, מריצים את הפקודה הבאה:
gcloud container clusters get-credentials CLUSTER_NAME \ --internal-ipמחליפים את
CLUSTER_NAMEבשם האשכול.כדי להשתמש בנקודת הקצה מבוססת ה-DNS עבור האשכול, מריצים את הפקודה הבאה:
gcloud container clusters get-credentials CLUSTER_NAME \ --dns-endpoint
התוכן של קובץ התצורה שנוצר משתנה בהתאם לנקודת הקצה שבה אתם משתמשים כדי להתחבר לאשכול:
- נקודת קצה מבוססת DNS: מכיוון ששירות ממשק הקצה של Google (GFE) שמארח את נקודת הקצה מבוססת ה-DNS מציג את האישור שנחתם על ידי רשות אישורים ציבורית (CA), הערך
kubeconfigלא כולל את השדהcertificate-authority-data. - נקודות קצה מבוססות IP: שרת ה-API מציג אישור שחתום על ידי CA בסיסי של האשכול, ולכן הרשומה
kubeconfigכוללת את השדהcertificate-authority-data. השדה הזה מכיל את האישור הציבורי של ה-CA הבסיסי של האשכול בקידוד base-64. הלקוחות יכולים להשתמש בו כדי לאמת את אישור שרת ה-API.
מידע נוסף על האישורים האלה זמין במאמר אבטחת התעבורה לחיבורים של מישור הבקרה.
הגדרת אשכול ברירת מחדל לפקודות של 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
- אימות מול Cloud de Confiance שירותים מעומסי עבודה ב-GKE.
- כדאי לקרוא את
kubectlתקציר המידע. - פתרון בעיות בכלי שורת הפקודה
kubectl