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

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

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

סקירה כללית

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

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

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

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

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

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

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

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

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

  • מפעילים את ממשק Google Kubernetes Engine API.
  • הפעלת Google Kubernetes Engine API
  • כדי להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את gcloud CLI. אם התקנתם בעבר את ה-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

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

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. אופציונלי: אם רוצים לרשום את האשכול החדש לצי, עוברים לקטע רישום צי ופועלים לפי ההוראות במסוף Google Cloud בנושא יצירה ורישום של אשכול חדש כדי להשלים את רישום האשכול.

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

  6. בקטע Node pool details, ממלאים את הפרטים הבאים:

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

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

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

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

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

  12. אופציונלי: בחלונית הניווט, בקטע Node Pools, לוחצים על 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

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

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. אופציונלי: אם רוצים לרשום את האשכול החדש לצי, עוברים לקטע רישום צי ופועלים לפי ההוראות במסוף Google Cloud בנושא יצירה ורישום של אשכול חדש כדי להשלים את רישום האשכול.

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

  6. בקטע Node pool details, ממלאים את הפרטים הבאים:

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

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

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

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

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

  12. אופציונלי: בחלונית הניווט, בקטע Node Pools, לוחצים על 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 לפני שאפשר ליצור אינטראקציה עם האשכול משורת הפקודה.

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