התקנה של kubectl והגדרת גישה לאשכול

בדף הזה מוסבר איך להתקין את כלי שורת הפקודה kubectl שמשמש לניהול אשכולות של Google Kubernetes Engine ‏ (GKE) ולגישה אליהם. ההגדרה kubectl נדרשת אם מריצים כמה אשכולות ב- Google Cloud.

תלמדו את הנושאים הבאים:

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

לפני שקוראים את הדף הזה, חשוב לוודא שמכירים את 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

  1. מתקינים את הרכיב kubectl:

    gcloud components install kubectl
    
  2. כדי לוודא ש-kubectl מותקן, בודקים אם מותקנת הגרסה העדכנית:

    kubectl version --client
    

apt

  1. מוודאים שיש לכם את מאגר 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
    
  2. אם מאגר cloud-sdk לא מופיע ברשימה, מתקינים את ה-CLI של gcloud.

  3. מתקינים את הרכיב kubectl:

    apt-get update
    apt-get install -y kubectl
  4. כדי לוודא ש-kubectl מותקן, בודקים אם מותקנת הגרסה העדכנית:

    kubectl version --client

yum

  1. מוודאים שיש לכם את מאגר google-cloud-cli:

    yum repolist | grep "google-cloud-cli"

    הפלט אמור להיראות כך:

    google-cloud-cli    Google Cloud CLI    2,205
    
  2. מתקינים את הרכיב kubectl:

    yum install -y kubectl
  3. כדי לוודא ש-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-cli-gke-gcloud-auth-plugin

yum

מתקינים את הקובץ הבינארי של gke-gcloud-auth-plugin:

  yum install google-cloud-cli-gke-gcloud-auth-plugin

מאמתים את ההתקנה של קובץ ה-gke-gcloud-auth-plugin הבינארי:

  1. בודקים את הגרסה הבינארית של gke-gcloud-auth-plugin:

    gke-gcloud-auth-plugin --version
    
  2. כדי להשתמש בפלאגין, צריך לעדכן את ההגדרות של kubectl:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫CLUSTER_NAME: השם של האשכול.
    • ‫CONTROL_PLANE_LOCATION: המיקום של מישור הבקרה של האשכול ב-Compute Engine. מציינים אזור לאשכולות אזוריים או אזור לאשכולות אזוריים.
  3. מריצים את הפקודה הבאה כדי לוודא שההגדרה תקינה:

    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 כוללת את אחד מהערכים הבאים:

כדי ליצור הקשר של 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 מציג אישור שנחתם על ידי רשות אישורים בסיסית של האשכול, הרשומה 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

המאמרים הבאים

נסו בעצמכם

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

אני רוצה לנסות את GKE בחינם