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

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

אפשר ליצור אשכולות עם צמתי Arm באמצעות סדרות המכונות C4A,‏ N4A או Tau T2A. מידע נוסף על היתרונות של Arm ועל בחירת סדרת המכונות המתאימה ביותר לעומסי העבודה שלכם זמין במאמר מכונות וירטואליות של Arm ב-Compute.

באמצעות GKE, אתם יכולים ליצור אשכול עם מאגרי צמתים מסוג ארכיטקטורה אחד (לדוגמה, Arm) או עם כמה סוגי ארכיטקטורה (לדוגמה, Arm ו-x86). כשמריצים צמתים עם כמה סוגי ארכיטקטורה, אפשר לפרוס עומסי עבודה בארכיטקטורות שונות לאותו אשכול.

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

לפני שקוראים את המסמך הזה, כדאי להכיר את עומסי העבודה של Arm ב-GKE.

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

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

  • מפעילים את ממשק 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 במספר הפרויקט מהשלב הקודם.

יצירת אשכול עם מאגר צמתים של Arm

בהוראות הבאות מוסבר איך ליצור אשכול חדש עם מאגר צמתים שמריץ צמתי Arm מסדרות המכונות C4A,‏ N4A או Tau T2A.

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

gcloud

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

gcloud container clusters create CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --node-locations NODE_LOCATIONS \
    --machine-type ARM_MACHINE_TYPE \
    --num-nodes NUM_NODES

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

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

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

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

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

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

המסוף

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

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

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

  3. בוחרים מיקום שבו צמתי Arm זמינים.

    1. בקטע Cluster basics, באפשרות Location type, בוחרים באפשרות Zonal או Regional:
    2. בתפריט הנפתח, בוחרים אזור או אזור שבו צמתי Arm זמינים.
    3. מסמנים את התיבה Specify default node locations (ציון מיקומי צמתים כברירת מחדל). בוחרים את האזורים שבהם צמתים של Arm זמינים.
  4. כדי לבחור סוג מכונת Arm, בקטע המשנה Nodes, מתחת לאפשרות Configure node settings > Machine configuration > Machine family, בוחרים באפשרות GENERAL-PURPOSE. בתפריט הנפתח סדרה, בוחרים באפשרות C4A,‏ N4A או T2A. בתפריט הנפתח סוג המכונה, בוחרים מבין האפשרויות הזמינות.

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

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

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

Terraform

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

resource "google_container_cluster" "default" {
  name               = "gke-standard-zonal-arm-cluster"
  location           = "us-central1-a"
  node_locations     = ["us-central1-b", "us-central1-f"]
  initial_node_count = 2

  node_config {
    machine_type    = "t2a-standard-1"
    service_account = google_service_account.default.email
  }
}

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

הוספה של מאגר צמתים מסוג Arm לאשכול GKE

אפשר להוסיף מאגר צמתים חדש לאשכול GKE Standard באמצעות gcloud CLI, Google Cloud המסוף או Terraform.

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

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

gcloud

כדי להוסיף מאגר צמתים של Arm לאשכול קיים:

gcloud container node-pools create NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --node-locations NODE_LOCATIONS \
    --machine-type ARM_MACHINE_TYPE \
    --num-nodes NUM_NODES \
    --service-account SERVICE_ACCOUNT

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

  • NODE_POOL_NAME: השם של מאגר הצמתים החדש של Arm באשכול הקיים.
  • CONTROL_PLANE_LOCATION: המיקום של מישור הבקרה של האשכול ב-Compute Engine. מציינים אזור לאשכולות אזוריים או אזור זמין לאשכולות אזוריים.
  • CLUSTER_NAME: השם של האשכול שרוצים להוסיף לו מאגר צמתים של Arm.
  • NODE_LOCATIONS: האזורים של מאגר הצמתים, למשל us-central1-a. צריך לבחור מתוך האזורים הזמינים כדי ליצור את סדרת מכונות Arm או את מאגר הצמתים, אחרת יכול להיות שהיצירה תיכשל.
  • ARM_MACHINE_TYPE: אחת מצורות המכונה הזמינות של C4A, צורות המכונה הזמינות של N4A או צורות המכונה הזמינות של T2A, כמו c4a-standard-8, n4a-standard-4 או t2a-standard-16.
  • NUM_NODES: מספר הצמתים במאגר הצמתים של Arm.

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

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

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

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

אם רוצים להגדיר הגדרות נוספות למאגר הצמתים, אפשר לעיין במאמר בנושא gcloud container node-pools create כדי לראות רשימה מלאה של ההגדרות שזמינות כשיוצרים מאגר צמתים.

המסוף

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

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

    מעבר אל Google Kubernetes Engine

  2. ברשימת האשכולות, לוחצים על שם האשכול שרוצים לשנות.

  3. לוחצים על הכרטיסייה Nodes.

  4. לוחצים על Create user-managed node pool (יצירת מאגר צמתים בניהול המשתמש).

  5. מגדירים את מאגר הצמתים.

  6. בוחרים מיקומי צמתים שבהם צמתי Arm זמינים.

    1. בקטע פרטים של מאגר הצמתים, מסמנים את התיבה ציון מיקומי צמתים.
    2. בוחרים את האזורים שבהם צמתים של Arm זמינים.
  7. כדי לבחור סוג מכונת Arm, בקטע המשנה Nodes, בקטע Configure node settings > Machine configuration > Machine family, בוחרים באפשרות GENERAL-PURPOSE. בתפריט הנפתח סדרה, בוחרים באפשרות C4A,‏ N4A או T2A. בתפריט הנפתח סוג המכונה, בוחרים מבין האפשרויות הזמינות.

  8. בתפריט הניווט, לוחצים על אבטחה.

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

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

  10. לוחצים על יצירה כדי להוסיף את מאגר הצמתים.

Terraform

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

resource "google_container_node_pool" "default" {
  name           = "gke-standard-zonal-arm-node-pool"
  cluster        = google_container_cluster.default.id
  node_locations = ["us-central1-a"]
  node_count     = 1

  node_config {
    machine_type = "t2a-standard-1"

    service_account = google_service_account.default.email
  }
}

מחליפים את google_container_cluster.default.id בשם האשכול.

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

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