יצירת אשכול אזורי

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

שיטה מומלצת: כדי להריץ את עומסי העבודה בסביבת הייצור, כדאי להשתמש באשכולות אזוריים כי הם מציעים זמינות גבוהה יותר מאשכולות של אזורים. באשכול אזורי, מישור הבקרה משוכפל בכמה אזורים באותו מחוז.

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

לפני שאתם קוראים את הדף הזה, ודאו שאתם מכירים את אפשרויות ההגדרה של האשכול.

לפני שמתחילים

לפני שמתחילים, חשוב לוודא שביצעתם את המשימות הבאות:

  • מפעילים את Google Kubernetes Engine API.
  • הפעלת Google Kubernetes Engine API
  • כדי להשתמש ב-Google Cloud CLI למשימה הזו, מתקינים ואז מאתחלים את ה-CLI של gcloud. אם כבר התקנתם את ה-CLI של gcloud, הריצו את הפקודה gcloud components update כדי להוריד את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא תומכות בהרצת הפקודות שבמסמך הזה.

הגדרת חשבונות שירות של IAM ל-GKE

כדי להריץ משימות מערכת כמו רישום ביומן ומעקב, GKE משתמש בחשבונות שירות של IAM שמקושרים לצמתים. לכל הפחות, חשבונות השירות של הצמתים האלה צריכים לקבל את התפקיד חשבון השירות של צומת ברירת המחדל של Kubernetes Engine (roles/container.defaultNodeServiceAccount) בפרויקט. כברירת מחדל, GKE משתמש בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine, שנוצר באופן אוטומטי בפרויקט, כחשבון השירות של הצומת.

כדי להקצות את התפקיד roles/container.defaultNodeServiceAccount לחשבון השירות שמוגדר כברירת המחדל של Compute Engine:

המסוף

  1. נכנסים לדף Welcome:

    לדף Welcome

  2. בשדה Project number, לוחצים על Copy to clipboard.
  3. נכנסים לדף IAM:

    כניסה לדף IAM

  4. לוחצים על Grant access.
  5. בשדה New principals, מציינים את הערך הבא:
    PROJECT_NUMBER-compute@
    מחליפים את הערך PROJECT_NUMBER במספר הפרויקט שהעתקתם.
  6. בתפריט Select a role, בוחרים את התפקיד Kubernetes Engine Default Node Service Account.
  7. לוחצים על Save.

gcloud

  1. מאתרים את מספר הפרויקט ב- Google Cloud :
    gcloud projects describe PROJECT_ID \
        --format="value(projectNumber)"

    מחליפים את PROJECT_ID במזהה הפרויקט.

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

    12345678901
    
  2. מקצים את התפקיד roles/container.defaultNodeServiceAccount לחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine:
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_NUMBER-compute@" \
        --role="roles/container.defaultNodeServiceAccount"

    מחליפים את PROJECT_NUMBER במספר הפרויקט מהשלב הקודם.

יצירת אשכול אזורי

המידע המינימלי שצריך לציין כשיוצרים אשכול אזורי חדש הוא שם, פרויקט (בדרך כלל הפרויקט הנוכחי) ואזור (בדרך כלל מיקום ברירת המחדל של כלי שורת הפקודה), תוך שימוש בהגדרות ברירת המחדל לכל שאר הערכים. עם זאת, יש עוד הגדרות אפשריות, שרק חלק מהן מתוארות בקטע הזה, וחלק מהן אי אפשר לשנות אחרי שיוצרים את האשכול. חשוב להבין אילו הגדרות אי אפשר לשנות אחרי שיוצרים את האשכול, ולבחור את ההגדרה הנכונה כשיוצרים אשכול כדי שלא תצטרכו ליצור אותו מחדש.

סקירה כללית של אפשרויות ההגדרה של אשכולות מופיעה במאמר מידע על אפשרויות ההגדרה של אשכולות, ורשימה מלאה של האפשרויות האפשריות מופיעה במדריכי העזר של gcloud container clusters create ו-Terraform google_container_cluster.

אפשר ליצור אשכול אזורי באמצעות ה-CLI של gcloud, מסוףGoogle Cloud או Terraform.

אם אתם מפתחים אפליקציות GKE באמצעות Cloud Code ל-VS Code, נסו ליצור אשכולות באמצעות Cloud Code.

gcloud

כדי ליצור אשכול אזורי באמצעות ה-CLI של gcloud, משתמשים באחת מהפקודות הבאות.

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

  • ‫CLUSTER_NAME: השם של האשכול החדש.
  • ‫CHANNEL: סוג ערוץ ההפצה, שיכול להיות אחד מהבאים: rapid,‏ regular,‏ stable או None (הוצא משימוש). כברירת מחדל, האשכול רשום לערוץ ההפצה regular.
  • ‫CONTROL_PLANE_LOCATION: האזור ב-Compute Engine של מישור הבקרה של האשכול.
  • ‫VERSION: הגרסה שרוצים לציין לאשכול.
  • ‫COMPUTE_ZONE,COMPUTE_ZONE1,[...]: האזורים שבהם נוצרים הצמתים. אפשר לציין כמה אזורים שרוצים לאשכול. כל האזורים צריכים להיות באותו אזור שבו נמצא מישור הבקרה של האשכול, שצוין בדגל --location. באשכולות אזוריים, --node-locations חייב להכיל את האזור הראשי של האשכול.

מומלץ מאוד לציין חשבון שירות IAM עם הרשאות מינימליות שהצמתים יוכלו להשתמש בו במקום בחשבון השירות שמוגדר כברירת מחדל של Compute Engine. במאמר שימוש בחשבון שירות עם הרשאות מינימליות מוסבר איך יוצרים חשבון שירות עם הרשאות מינימליות.

כדי לציין חשבון שירות בהתאמה אישית ב-CLI של gcloud, מוסיפים את הדגל הבא לפקודה:

--service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.

מחליפים את SERVICE_ACCOUNT_NAME בשם של חשבון השירות עם ההרשאות המינימליות.

שימוש בערוץ הפצה ספציפי:

כדי ליצור אשכול חדש באמצעות ערוץ הפצה ספציפי, מריצים את הפקודה הבאה:

gcloud container clusters create CLUSTER_NAME \
    --release-channel CHANNEL \
    --location CONTROL_PLANE_LOCATION \
    --node-locations COMPUTE_ZONE,COMPUTE_ZONE1

שימוש בגרסה ספציפית:

כדי ליצור אשכול חדש באמצעות גרסת אשכול ספציפית, מריצים את הפקודה הבאה:

gcloud container clusters create CLUSTER_NAME \
    --cluster-version VERSION \
    --location CONTROL_PLANE_LOCATION \
    --node-locations COMPUTE_ZONE,COMPUTE_ZONE1

דוגמה

הפקודה הבאה יוצרת אשכול מרובה-אזורים בשם example-cluster, שבו מישור הבקרה של האשכול נמצא באזור us-east4-a, ויש שלושה מיקומי צמתים. האשכול רשום לערוץ ההפצה regular.

אם משמיטים את הדגל --num-nodes, מספר ברירת המחדל של הצמתים לכל אזור שנוצרים על ידי האשכול הוא שלושה. מכיוון שצוינו שלושה אזורים, הפקודה הזו יוצרת אשכול של תשעה צמתים, עם שלושה צמתים בכל אחד מהאזורים us-east4-a,‏ us-east4-b ו-us-east4-c.

gcloud container clusters create example-cluster \
    --location us-east4-a \
    --node-locations us-east4-a,us-east4-b,us-east4-c

המסוף

כדי ליצור אשכול אזורי באמצעות מסוף Google Cloud , מבצעים את הפעולות הבאות:

  1. נכנסים לדף Create a Kubernetes cluster במסוף Google Cloud .

    מעבר לדף Create a Kubernetes cluster

  2. בקטע Cluster basics, מבצעים את הפעולות הבאות:

    1. מזינים את השם (Name) של האשכול.
    2. בשדה Location type, בוחרים באפשרות Zonal ואז בוחרים את האזור של האשכול.
    3. אם אתם יוצרים אשכול בכמה אזורים, סמנו את התיבה Specify default node locations ובחרו אזורים נוספים שבהם אתם רוצים להריץ את מאגרי הצמתים.

    4. בוחרים ערוץ הפצה. אפשר גם לבחור באפשרות No channel, אבל היא הוצאה משימוש ותוסר. למידע נוסף, קראו את המאמר אשכולות שלא רשומים לערוץ הפצה.

    5. אופציונלי: מציינים גרסה של מישור הבקרה מהרשימה הנפתחת Version.

  3. אופציונלי: קובעים הגדרות אחרות לאשכול החדש.

  4. אופציונלי: אם רוצים לרשום את האשכול החדש לצי, עוברים לקטע Advanced settings ופועלים לפי ההוראות במסוף בקטע Create and register a new cluster כדי להשלים את רישום האשכול. Google Cloud

  5. בחלונית הניווט, בקטע מאגרי צמתים, לוחצים על default-pool.

  6. בקטע פרטי מאגר הצמתים, מבצעים את הפעולות הבאות:

    1. מזינים Name עבור מאגר הצמתים שמוגדר כברירת מחדל.
    2. אופציונלי: בוחרים את גרסת הצומת.
    3. מזינים את מספר הצמתים שרוצים ליצור באשכול. צריכה להיות לכם מכסת משאבים זמינה לצמתים ולמשאבים שלהם (כמו מסלולים של חומת אש).
    4. אופציונלי: אתם יכולים להשבית את השדרוגים האוטומטיים של הצמתים, אבל מומלץ לעיין בשיקולים לפני השבתת השדרוגים האוטומטיים של הצמתים לפני שבוחרים באפשרות הזו.
  7. בחלונית הניווט, בקטע מאגרי צמתים, לוחצים על צמתים.

  8. ברשימה הנפתחת Image type, בוחרים באפשרות node image.

  9. בוחרים את Machine configuration שיוגדר כברירת המחדל של המכונות. כל סוג מכונה מחויב באופן שונה. סוג המכונה שמוגדר כברירת מחדל הוא e2-medium. למידע על מחירי סוגי המכונות, עיינו בגיליון המחירים של סוגי המכונות.

  10. ברשימה הנפתחת Boot disk type, בוחרים את סוג הדיסק.

  11. מזינים את גודל דיסק האתחול.

  12. אופציונלי: בחלונית הניווט, בקטע מאגרי צמתים, לוחצים על Security.

  13. אופציונלי: מציינים חשבון שירות מותאם אישית של IAM לצמתים:
    1. בדף הגדרות מתקדמות, מרחיבים את הקטע אבטחה.
    2. בתפריט Service account, בוחרים את חשבון השירות הרצוי.

    מומלץ מאוד לציין חשבון שירות IAM עם הרשאות מינימליות שהצמתים יוכלו להשתמש בו במקום בחשבון השירות שמוגדר כברירת מחדל של Compute Engine. במאמר שימוש בחשבון שירות עם הרשאות מינימליות מוסבר איך יוצרים חשבון שירות עם הרשאות מינימליות.

  14. לוחצים על יצירה.

Terraform

כדי ליצור אשכול אזורי עם מאגר צמתים של אזור יחיד באמצעות Terraform, תוכלו להיעזר בדוגמה הבאה:

resource "google_container_cluster" "default" {
  name               = "gke-standard-zonal-single-zone"
  location           = "us-central1-a"
  initial_node_count = 1
}

כדי ליצור אשכול אזורי עם מאגר של צמתים בכמה אזורים באמצעות Terraform, תוכלו להיעזר בדוגמה הבאה:

resource "google_container_cluster" "default" {
  name               = "gke-standard-zonal-multi-zone"
  location           = "us-central1-a"
  node_locations     = ["us-central1-b", "us-central1-c"]
  initial_node_count = 2
}

מידע נוסף על השימוש ב-Terraform זמין במאמר תמיכה של Terraform ב-GKE.

אינטראקציה עם אשכול באמצעות kubectl

אחרי שיוצרים אשכול, צריך להגדיר את kubectl כדי שתוכלו לבצע פעולות באשכול משורת הפקודה.

תבניות של אשכולות

בעבר, GKE תמך בתבניות לאשכולות. התבניות האלה הוסרו ממסוף Google Cloud , אבל עדיין אפשר לגשת אליהן דרך הקישורים הבאים:

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