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

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

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

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

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

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

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

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

  • מפעילים את ממשק ה-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‏ (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

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

  • ‫CLUSTER_NAME: השם של האשכול החדש עם מאגר צמתים של Arm.
  • ‫CONTROL_PLANE_LOCATION: המיקום של מישור הבקרה של האשכול ב-Compute Engine. מציינים אזור לאשכולות אזוריים או אזור לאשכולות אזוריים. האזור או תחום הזמינות שנבחרו צריכים להיות אחד מהמיקומים הזמינים לסדרת מכונות 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 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 באמצעות ה-CLI של gcloud,‏ 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.

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