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

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

אשכולות GKE Autopilot הם תמיד אזוריים.

סקירה כללית

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

באשכולות אזוריים, המשאבים משוכפלים בכמה אזורים וצורכים מכסות נוספות.

מידע על סוגי הזמינות השונים של אשכולות זמין במאמר מידע על אפשרויות ההגדרה של אשכולות.

בקטעים הבאים מוסבר איך:

אחרי שיוצרים אשכול אזורי, אי אפשר להמיר אותו לאשכול מבוסס-אזור.

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

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

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

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

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

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

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

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

המסוף

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

    לדף Welcome

  2. בשדה מספר הפרויקט, לוחצים על העתקה ללוח.
  3. נכנסים לדף IAM:

    כניסה לדף IAM

  4. לוחצים על Grant access.
  5. בשדה New principals, מציינים את הערך הבא:
    ‫
    PROJECT_NUMBER-compute@developer.gserviceaccount.com
    מחליפים את 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@developer.gserviceaccount.com" \
        --role="roles/container.defaultNodeServiceAccount"

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

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

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

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

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

gcloud

לפני שמריצים את הפקודות של ה-CLI של gcloud כדי ליצור את האשכול, צריך להגדיר את הפרויקט הנכון באמצעות הפקודה הבאה:

gcloud config set project PROJECT_ID
# gcloud config set billing/quota_project PROJECT_ID

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

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

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

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

--service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

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

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

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

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

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

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

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

דוגמה

הפקודה הבאה יוצרת אשכול אזורי שרשום לערוץ ההפצה regular (ברירת מחדל), עם שלושה צמתים (ברירת מחדל) באזור us-west1-c:

gcloud container clusters create my-regional-cluster \
    --location us-west1 \
    --node-locations us-west1-c

דוגמה

הפקודה הבאה יוצרת אשכול אזורי שרשום לערוץ ההפצה regular (ברירת מחדל), עם שני צמתים שממוקמים באזור us-west1-c:

gcloud container clusters create my-regional-cluster \
    --location us-west1 \
    --node-locations us-west1-c \
    --num-nodes 2

המסוף

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

    מעבר אל יצירת אשכול Kubernetes

  2. בקטע Cluster basics (הגדרות בסיסיות של האשכול), משלימים את הפעולות הבאות:

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

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

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

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

  4. אופציונלי: אם רוצים לרשום את האשכול החדש לFleet, עוברים לקטע הגדרות מתקדמות ופועלים לפי Google Cloud ההוראות במסוף בנושא יצירה ורישום של אשכול חדש כדי להשלים את רישום האשכול.

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

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

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

  8. בתפריט הנפתח סוג התמונה, בוחרים באפשרות תמונה של הצומת.

  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-regional-single-zone"
  location           = "us-west1"
  node_locations     = ["us-west1-c"]
  initial_node_count = 2
}

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

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

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

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

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

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

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

gcloud

לפני שמריצים את הפקודות של ה-CLI של gcloud כדי ליצור את האשכול, צריך להגדיר את הפרויקט הנכון באמצעות הפקודה הבאה:

gcloud config set project PROJECT_ID
# The project set above is used for quota and billing by default.
# To use a different project for quota and billing, run the following command:
# gcloud config set billing/quota_project PROJECT_ID

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

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

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

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

--service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

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

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

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

gcloud container clusters create CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --release-channel CHANNEL

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

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

gcloud container clusters create CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --cluster-version VERSION

דוגמה

הפקודה הבאה יוצרת אשכול אזורי שרשום לערוץ ההפצה regular, עם תשעה צמתים ב-us-west1 (שלושה אזורים עם שלושה צמתים בכל אחד, שזו ברירת המחדל):

gcloud container clusters create my-regional-cluster --location us-west1

דוגמה

הפקודה הבאה יוצרת אשכול אזורי שרשום לערוץ ההפצה regular, עם שישה צמתים (שלושה אזורים עם שני צמתים בכל אחד, שצוינו על ידי --num-nodes):

gcloud container clusters create my-regional-cluster \
    --location us-west1 \
    --num-nodes 2

דוגמה

הפקודה הבאה יוצרת אשכול אזורי שרשום לערוץ ההפצה regular, עם שישה צמתים בשני אזורים (שני אזורים, שצוינו על ידי --node-locations, עם שלושה צמתים בכל אחד):

gcloud container clusters create my-regional-cluster \
    --location us-central1 \
    --node-locations us-central1-b,us-central1-c

המסוף

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

    יצירת אשכול Kubernetes

  2. בקטע Cluster basics (הגדרות בסיסיות של האשכול), משלימים את הפעולות הבאות:

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

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

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

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

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

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

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

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

  8. בתפריט הנפתח סוג התמונה, בוחרים באפשרות תמונה של הצומת.

  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-regional-multi-zone"
  location           = "us-central1"
  node_locations     = ["us-central1-b", "us-central1-c"]
  initial_node_count = 2
}

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

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

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

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