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

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

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

הדף הזה מיועד לאדמינים של 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

  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. מוודאים שמאגר cloud-sdk קיים:

    yum repolist | grep "google-cloud-sdk"

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

    google-cloud-sdk    Google Cloud SDK    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-sdk-gke-gcloud-auth-plugin

yum

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

  yum install google-cloud-sdk-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 מושבתת) כדי להשתמש בנקודת הקצה הקנונית כברירת מחדל, מריצים את הפקודה 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

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

נסו בעצמכם

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

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