הפעלת עומסי עבודה של Arm ב-GKE ב-AWS

‫GKE ב-AWS מאפשר להריץ עומסי עבודה של Arm שנוצרו עבור מעבדי AWS Graviton מבוססי-Arm.

מגבלות

  • במאגרי צמתים של Arm שמופעלות בהם גרסאות Kubernetes מוקדמות יותר מ-1.24.8-gke.1300, מתווסף באופן אוטומטי taint במהלך יצירת מאגר הצמתים כדי למנוע תזמון של עומסי עבודה של Arm בצמתים שאינם של Arm. מאגרי צמתים של ARM באשכולות בגרסה 1.24.8-gke.1300 ואילך לא מוסיפים יותר את ה-taint הזה. אם אתם משדרגים מאשכול בגרסה מוקדמת יותר מ-1.24.8-gke.1300, אתם צריכים ליצור את ה-taint הזה בעצמכם או לקחת אותו בחשבון במהלך השדרוג.

  • מאגרי צמתים של Arm ב-GKE ב-AWS לא תומכים ב-Cloud Service Mesh, בסנכרון תצורות או ב-Policy Controller. צריך להפעיל את המוצרים האלה במאגר צמתים מסוג x86.

  • באשכולות שמופעלת בהם גרסה 1.24 של Kubernetes, צריך מאגר צמתים מסוג x86 כדי להפעיל את Connect Agent. אם האשכול שלכם מריץ את Kubernetes בגרסה 1.25 ומעלה, אתם לא צריכים מאגר צמתים מסוג x86.

בדף הזה מוסבר איך ליצור מאגר צמתים של Arm, למה מומלץ לפרוס עומסי עבודה של Arm באמצעות קובצי אימג' מרובי-ארכיטקטורה ואיך לתזמן עומסי עבודה של Arm.

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

לפני שיוצרים מאגרי צמתים לעומסי העבודה של Arm, צריך את המשאבים הבאים:

  • קלאסטר קיים ב-AWS שבו רוצים ליצור את מאגר הצמתים. בקטע הזה, צריך להריץ את Kubernetes בגרסה 1.24 ואילך.
  • פרופיל של מכונת VM ב-IAM עבור מכונות ה-VM במאגר הצמתים.
  • רשת משנה שבה יפעלו מכונות ה-VM של מאגר הצמתים.
  • אם האשכול שלכם מריץ את Kubernetes בגרסה 1.24, צריך מאגר צמתים מסוג x86 כדי להריץ את Connect Agent.

    פרטים על יצירת מאגר צמתים ב-GKE ב-AWS זמינים במאמר יצירת מאגר צמתים.

יצירת מאגר צמתים של Arm

‫GKE ב-AWS תומך במאגרי צמתים שמבוססים על תמונת הצומת המינימלית של Canonical Ubuntu arm64 ועל זמן הריצה containerd.

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

gcloud container aws node-pools create NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --instance-type INSTANCE_TYPE \
    --root-volume-size ROOT_VOLUME_SIZE \
    --iam-instance-profile NODEPOOL_PROFILE \
    --node-version NODE_VERSION \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES \
    --max-pods-per-node MAX_PODS_PER_NODE \
    --location GOOGLE_CLOUD_LOCATION \
    --subnet-id NODEPOOL_SUBNET \
    --ssh-ec2-key-pair SSH_KEY_PAIR_NAME \
    --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN

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

  • NODE_POOL_NAME: השם שבחרתם למאגר הצמתים
  • CLUSTER_NAME: השם של האשכול שאליו רוצים לצרף את מאגר הצמתים
  • INSTANCE_TYPE: אחד מסוגי המכונות הבאים:

    • m6g
    • m6gd
    • t4g
    • r6g
    • r6gd
    • c6g
    • c6gd
    • c6gn
    • x2gd
    • c7g
    • im4gn
    • g5g

      סוגי המכונות האלה מבוססים על מעבדי AWS Graviton מבוססי-Arm. צריך גם לציין את גודל המופע הרצוי. לדוגמה, m6g.medium. רשימה מלאה זמינה במאמר סוגי מופעים נתמכים ב-AWS.

  • ROOT_VOLUME_SIZE: הגודל הרצוי של נפח האחסון הבסיסי של כל צומת, בגיגה-בייט

  • NODEPOOL_PROFILE: פרופיל המופע של IAM למכונות וירטואליות במאגר הצמתים

  • NODE_VERSION: גרסת Kubernetes להתקנה בכל צומת במאגר הצמתים, שצריכה להיות גרסה 1.24 ואילך. לדוגמה, 1.24.3-gke.200.

  • MIN_NODES: המספר המינימלי של צמתים שיכולים להיות במאגר הצמתים

  • MAX_NODES: המספר המקסימלי של הצמתים שיכולים להיות במאגר הצמתים

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

  • GOOGLE_CLOUD_LOCATION: השם של Google Cloud

    המיקום שממנו ינוהל מאגר הצמתים הזה

  • NODEPOOL_SUBNET: המזהה של רשת המשנה שבה יפעל מאגר הצמתים. אם רשת המשנה הזו נמצאת מחוץ לבלוק ה-CIDR הראשי של ה-VPC, צריך לבצע שלבים נוספים. מידע נוסף זמין במאמר בנושא קבוצות אבטחה.

  • SSH_KEY_PAIR_NAME: השם של זוג מפתחות ה-SSH ב-AWS שנוצר לגישת SSH (אופציונלי)

  • CONFIG_KMS_KEY_ARN: שם משאב Amazon‏ (ARN) של מפתח AWS KMS שמצפין את נתוני המשתמש

הסבר על תמונות מרובות ארכיטקטורות

קובצי אימג' של קונטיינרים צריכים להיות תואמים לארכיטקטורה של הצומת שבו אתם מתכוונים להפעיל את עומסי העבודה של Arm. כדי לוודא שקובץ האימג' של הקונטיינר תואם ל-Arm, מומלץ להשתמש בקובצי אימג' מרובי-ארכיטקטורה (multi-arch).

תמונה מרובת ארכיטקטורות היא תמונה שיכולה לתמוך בכמה ארכיטקטורות. התמונה נראית כמו תמונה אחת עם תג אחד, אבל היא מכילה קבוצה של תמונות שמופעלות בארכיטקטורות שונות של מכונות. תמונות מרובות ארכיטקטורות תואמות ל-Docker Image Manifest V2 Scheme 2 או למפרטים של OCI Image Index.

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

מידע נוסף על השימוש בתמונות מרובות ארכיטקטורות עם עומסי עבודה של Arm זמין במאמר יצירת תמונות מרובות ארכיטקטורות לעומסי עבודה של Arm במסמכי Google Kubernetes Engine‏ (GKE).

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