בדף הזה מוסבר איך לשפר את זמן האחזור של הפעלת עומסי עבודה באמצעות דיסקים משניים לאתחול ב-Google Kubernetes Engine (GKE) כדי לטעון מראש נתונים או תמונות של קונטיינרים בצמתים חדשים. כך עומסי העבודה יכולים להשיג הפעלה מהירה במצב התחלתי ולשפר את הניצול הכולל של המשאבים שהוקצו.
לפני שקוראים את הדף הזה, חשוב לוודא שמכירים את Google Cloud, Kubernetes, קונטיינרים, YAML, container runtime ו-Google Cloud CLI.
סקירה כללית
אפשר להגדיר מאגרי צמתים עם דיסקים משניים לאתחול, שזמינים בגרסאות עדכניות של GKE. אתם יכולים להגדיר ב-GKE הקצאה של הצמתים וטעינה מראש של נתונים, כמו מודל למידת מכונה (ML) או קובץ אימג' של קונטיינר. שימוש בתמונות קונטיינר או בנתונים שנטענו מראש בדיסק משני מועיל לעומסי העבודה שלכם מהסיבות הבאות:
- זמן האחזור קצר יותר כששולפים תמונות גדולות של מאגרי תגים או כשמורידים נתונים
- התאמה מהירה יותר לעומס (autoscaling)
- התאוששות מהירה יותר משיבושים כמו אירועי תחזוקה ושגיאות מערכת
בקטעים הבאים מוסבר איך להגדיר את דיסק האתחול המשני באשכולות GKE Autopilot ובאשכולות רגילים.
איך פועלים דיסקים משניים לאתחול
כדי שעומס העבודה יתחיל לפעול מהר יותר, אפשר להשתמש בתמונת מאגר טעונה מראש או בנתונים בדיסקים משניים של אתחול. לדיסקים משניים של אתחול יש את המאפיינים הבאים:
- דיסקי אתחול משניים הם דיסקים לאחסון מתמיד שמגובים על ידי אחסון בלוקים מבוזר.
- הדיסק של אחסון מתמיד (persistent disk) נוצר מתמונות דיסק שיוצרים מראש.
- מטעמי יכולת הרחבה, לכל צומת נוצר מופע משלו של Persistent Disk מתוך תמונת הדיסק. המופעים של Persistent Disk האלה נמחקים כשמחקקים את הצומת.
- אם תמונת הדיסק כבר נמצאת בשימוש באזור, זמן היצירה של כל הדיסקים הבאים שייווצרו מאותה תמונת דיסק יהיה נמוך יותר.
- סוג דיסק האתחול המשני זהה לדיסק האתחול של הצומת.
- גודל דיסק האתחול המשני נקבע לפי גודל תמונת הדיסק.
בדרך כלל, הוספה של דיסקים משניים לאתחול למאגרי הצמתים לא מגדילה את זמן הקצאת הצמתים. GKE מקצה דיסקים משניים לאתחול מתוך תמונת הדיסק במקביל לתהליך הקצאת הצמתים.
כדי לתמוך בקובצי אימג' של קונטיינרים שנטענו מראש, GKE מרחיב את זמן הריצה של containerd באמצעות תוספים שקוראים את קובצי האימג' של הקונטיינרים מדיסקי אתחול משניים. שכבות הבסיס משתמשות מחדש בתמונות של קונטיינרים.
טוענים מראש שכבות בסיס גדולות לדיסק האתחול המשני, בעוד שאפשר לשלוף את השכבות העליונות הקטנות ממאגר התמונות של הקונטיינר.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את ממשק Google Kubernetes Engine API. הפעלת Google Kubernetes Engine API
- אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
מפעילים את Container File System API.
דרישות
אלו הדרישות שחלות על שימוש בדיסק אתחול משני:
- משתמשים בסוג תמונה נתמך של צומת ובגרסת GKE נתמכת:
- מערכת הפעלה שמותאמת לקונטיינרים עם containerd (
COS_CONTAINERD):- GKE Standard ו-Autopilot: גרסה 1.30.1-gke.1329000 ואילך.
- Ubuntu עם containerd (
UBUNTU_CONTAINERD):- GKE Standard ו-Autopilot: גרסה 1.35.0-gke.1403000 ואילך.
- מערכת הפעלה שמותאמת לקונטיינרים עם containerd (
- כשמשנים את תמונת הדיסק, צריך ליצור מאגר חדש של צמתים. עדכון קובץ האימג' בצמתים קיימים אינו נתמך.
- מגדירים את הזרמת התמונות כדי להשתמש בתכונה של דיסק האתחול המשני.
מכינים את קובץ האימג' עם נתונים מוכנים במהלך משך זמן של תהליך build או עם קובצי אימג' של קונטיינר שנטענו מראש. מוודאים שיש לאשכול גישה לתמונת הדיסק כדי לטעון אותה לצמתים.
שיטה מומלצת: אוטומציה של תמונת הדיסק בצינור עיבוד נתונים של CI/CD.
מגבלות
אי אפשר לעדכן דיסקים משניים של אתחול לצמתים קיימים. כדי לצרף תמונת דיסק חדשה, יוצרים מאגר צמתים חדש.
תמחור
כשיוצרים מאגרי צמתים עם דיסקים משניים לאתחול, מערכת GKE מצרפת Persistent Disk לכל צומת במאגר הצמתים. החיוב על דיסקים לאחסון מתמיד מבוסס על תמחור הדיסקים ב-Compute Engine.
הכנת תמונת דיסק האתחול המשני
כדי להכין את תמונת דיסק האתחול המשני, בוחרים בכרטיסייה Images (תמונות) כדי לטעון מראש תמונות של קונטיינרים, או בכרטיסייה Data (נתונים) כדי לטעון מראש נתונים, ואז מבצעים את ההוראות הבאות:
תמונות
GKE מספק כלי שנקרא
gke-disk-image-builder
ליצירת מכונה וירטואלית (VM), שליפת תמונות של קונטיינרים בדיסק, ואז יצירת תמונת דיסק מהדיסק הזה.
כדי ליצור קובץ אימג' של דיסק עם כמה קובצי אימג' של קונטיינרים שנטענו מראש, מבצעים את השלבים הבאים:
- יוצרים קטגוריה של Cloud Storage כדי לאחסן את יומני ההפעלה של
gke-disk-image-builder. - יצירת תמונת דיסק באמצעות
gke-disk-image-builder.
go run ./cli \
--project-name=PROJECT_ID \
--image-name=DISK_IMAGE_NAME \
--zone=LOCATION \
--gcs-path=gs://LOG_BUCKET_NAME \
--disk-size-gb=10 \
--container-image=docker.io/library/python:latest \
--container-image=docker.io/library/nginx:latest
מחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: השם של Google Cloud הפרויקט.
- DISK_IMAGE_NAME: השם של תמונת הדיסק. לדוגמה,
nginx-python-image. - LOCATION: המיקום של האשכול.
- LOG_BUCKET_NAME: השם של קטגוריית Cloud Storage שבה יאוחסנו יומני הביצוע. לדוגמה,
gke-secondary-disk-image-logs/
כשיוצרים תמונת דיסק באמצעות gke-disk-image-builder,Google Cloud יוצר כמה משאבים כדי להשלים את התהליך (לדוגמה, מכונת VM, דיסק זמני ודיסק אחסון מתמיד). אחרי ההרצה, הכלי ליצירת תמונות מנקה את כל המשאבים, חוץ מתמונת הדיסק שיצרתם.
נתונים
כדי ליצור קובץ אימג' של דיסק בהתאמה אישית כמקור הנתונים, מבצעים את השלבים הבאים:
הגדרת דיסק האתחול המשני
אפשר להגדיר את דיסק האתחול המשני באשכול GKE Autopilot או באשכול רגיל.
כדי ליהנות מחוויית Kubernetes מנוהלת לחלוטין, אפשר להשתמש באשכול Autopilot. כדי לבחור את מצב הפעולה של GKE שהכי מתאים לעומסי העבודה שלכם, אפשר לעיין במאמר בחירת מצב פעולה של GKE.
שימוש ב-GKE Autopilot
בקטע הזה, יוצרים רשימת היתרים של תמונות דיסק כדי לאפשר את תמונת הדיסק באשכול GKE Autopilot קיים. לאחר מכן משנים את בורר הצמתים של ה-Pod כדי להשתמש בדיסק אתחול משני.
אישור השימוש בקובצי תמונות דיסק בפרויקט
בקטע הזה יוצרים GCPResourceAllowlist כדי לאפשר ל-GKE ליצור צמתים עם דיסקים משניים לאתחול מתוך תמונות הדיסק בפרויקטGoogle Cloud .
שומרים את קובץ המניפסט הבא בשם
allowlist-disk.yaml:apiVersion: "node.gke.io/v1" kind: GCPResourceAllowlist metadata: name: gke-secondary-boot-disk-allowlist spec: allowedResourcePatterns: - "projects/PROJECT_ID/global/images/.*"מחליפים את PROJECT_ID במזהה הפרויקט כדי לארח את קובץ האימג' של הדיסק.
החלת המניפסט:
kubectl apply -f allowlist-disk.yamlGKE יוצר צמתים עם דיסקים משניים לאתחול מכל תמונות הדיסקים בפרויקט.
עדכון של בורר הצמתים של ה-Pod כדי להשתמש בדיסק אתחול משני
בקטע הזה משנים את מפרט ה-Pod כך ש-GKE ייצור את הצמתים עם דיסק האתחול המשני.
מוסיפים
nodeSelectorלתבנית ה-Pod:nodeSelector: cloud.google.com.node-restriction.kubernetes.io/gke-secondary-boot-disk-DISK_IMAGE_NAME: CONTAINER_IMAGE_CACHE.PROJECT_IDמחליפים את מה שכתוב בשדות הבאים:
- DISK_IMAGE_NAME: השם של תמונת הדיסק.
- PROJECT_ID: מזהה הפרויקט שבו מאוחסנת תמונת הדיסק.
משתמשים בפקודה
kubectl applyכדי להחיל את מפרט Kubernetes עם תבנית ה-Pod.מאשרים שמטמון הדיסק של דיסק האתחול המשני נמצא בשימוש:
kubectl get events --all-namespacesהפלט אמור להיראות כך:
75s Normal SecondaryDiskCachin node/gke-pd-cache-demo-default-pool-75e78709-zjfm Image gcr.io/k8s-staging-jobsejt/pytorch-mnist:latest is backed by secondary disk cacheהדרך המהימנה יותר לוודא שמטמון הדיסק של דיסק האתחול המשני נמצא בשימוש:
מריצים שאילתה ביומן מהצומת שרוצים להשתמש בו באמצעות שם היומן הזה:
logName="projects/PROJECT_ID/logs/gcfs-snapshotter"מחליפים את
PROJECT_IDבמזהה הפרויקט ב- Google Cloud .היומן שדומה ל:
Image gcr.io/k8s-staging-jobsejt/pytorch-mnist:latest is backed by secondary boot disk caching by 100.0%...מצביע על כך שמטמון הדיסק של דיסק האתחול המשני היה בשימוש.בודקים את זמן האחזור של משיכת התמונה:
kubectl describe pod POD_NAMEמחליפים את POD_NAME בשם של ה-Pod.
הפלט אמור להיראות כך:
… Normal Pulled 15m kubelet Successfully pulled image "docker.io/library/nginx:latest" in 0.879149587s …
החביון הצפוי של שליפת קובץ אימג' עבור קובץ אימג' של קונטיינר שנשמר במטמון צריך להיות נמוך משמעותית, ללא קשר לגודל התמונה.
שימוש ב-GKE Standard
כדי ליצור אשכול GKE Standard ומאגר צמתים, צריך לבצע את ההוראות הבאות ולבחור בכרטיסייה Images (תמונות) או בכרטיסייה Data (נתונים) בהתאם לרצון לטעון מראש תמונות של קונטיינרים או לטעון מראש נתונים לדיסק האתחול המשני:
תמונות
כדי להגדיר דיסק אתחול משני, משתמשים ב-Google Cloud CLI או ב-Terraform:
gcloud
יוצרים אשכול GKE Standard עם הזרמת תמונות מופעלת:
gcloud container clusters create CLUSTER_NAME \ --location=LOCATION \ --cluster-version=VERSION \ --enable-image-streamingמחליפים את מה שכתוב בשדות הבאים:
- CLUSTER_NAME: השם של האשכול.
- LOCATION: מיקום האשכול.
- VERSION: גרסת GKE שבה ייעשה שימוש. גרסת GKE צריכה להיות
1.28.3-gke.1067000ואילך.
יוצרים מאגר צמתים עם דיסק אתחול משני באותו פרויקט:
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --location LOCATION \ --enable-image-streaming \ --secondary-boot-disk=disk-image=global/images/DISK_IMAGE_NAME,mode=CONTAINER_IMAGE_CACHEמחליפים את מה שכתוב בשדות הבאים:
- NODE_POOL_NAME: השם של מאגר הצמתים.
- CLUSTER_NAME: השם של האשכול הקיים.
- LOCATION: אזור או אזורים של מחשוב, מופרדים בפסיקים, של האשכול.
- DISK_IMAGE_NAME: השם של תמונת הדיסק.
כדי ליצור מאגר צמתים עם דיסק אתחול משני מתמונת הדיסק בפרויקט אחר, צריך לבצע את השלבים במאמר שימוש בדיסק אתחול משני בפרויקט אחר.
מוסיפים
nodeSelectorלתבנית ה-Pod:nodeSelector: cloud.google.com/gke-nodepool: NODE_POOL_NAMEמאשרים שמטמון הדיסק של דיסק האתחול המשני נמצא בשימוש:
kubectl get events --all-namespacesהפלט אמור להיראות כך:
75s Normal SecondaryDiskCachin node/gke-pd-cache-demo-default-pool-75e78709-zjfm Image gcr.io/k8s-staging-jobsejt/pytorch-mnist:latest is backed by secondary disk cacheהדרך המהימנה יותר לוודא שמטמון הדיסק של דיסק האתחול המשני נמצא בשימוש:
מריצים שאילתה ביומן מהצומת שרוצים להשתמש בו באמצעות שם היומן הזה:
logName="projects/PROJECT_ID/logs/gcfs-snapshotter"מחליפים את
PROJECT_IDבמזהה הפרויקט ב- Google Cloud .היומן שדומה ל:
Image gcr.io/k8s-staging-jobsejt/pytorch-mnist:latest is backed by secondary boot disk caching by 100.0%...מצביע על כך שמטמון הדיסק של דיסק האתחול המשני היה בשימוש.מריצים את הפקודה הבאה כדי לבדוק את זמן האחזור של משיכת האימג':
kubectl describe pod POD_NAMEמחליפים את
POD_NAMEבשם של ה-Pod.הפלט אמור להיראות כך:
… Normal Pulled 15m kubelet Successfully pulled image "docker.io/library/nginx:latest" in 0.879149587s …
החביון הצפוי של שליפת קובץ אימג' של קונטיינר מהמטמון צריך להיות כמה שניות לכל היותר, ללא קשר לגודל התמונה.
Terraform
כדי ליצור אשכול עם מאגר הצמתים שמוגדר כברירת מחדל באמצעות Terraform, אפשר להיעזר בדוגמה הבאה:
יוצרים מאגר צמתים עם דיסק אתחול משני באותו פרויקט:
מידע נוסף על שימוש ב-Terraform זמין במאמר תמיכה ב-Terraform ל-GKE.
מוסיפים
nodeSelectorלתבנית ה-Pod:nodeSelector: cloud.google.com/gke-nodepool: NODE_POOL_NAMEמאשרים שמטמון הדיסק של דיסק האתחול המשני נמצא בשימוש:
kubectl get events --all-namespacesהפלט אמור להיראות כך:
75s Normal SecondaryDiskCachin node/gke-pd-cache-demo-default-pool-75e78709-zjfm Image gcr.io/k8s-staging-jobsejt/pytorch-mnist:latest is backed by secondary disk cacheמריצים את הפקודה הבאה כדי לבדוק את זמן האחזור של משיכת האימג':
kubectl describe pod POD_NAMEמחליפים את POD_NAME בשם של ה-Pod.
הפלט אמור להיראות כך:
… Normal Pulled 15m kubelet Successfully pulled image "docker.io/library/nginx:latest" in 0.879149587s …
החביון הצפוי של שליפת קובץ אימג' של קונטיינר שנשמר במטמון לא צריך להיות יותר מכמה שניות, ללא קשר לגודל התמונה.
מידע נוסף על שימוש ב-Terraform זמין במאמר תמיכה ב-Terraform ב-GKE.
נתונים
אפשר להגדיר דיסק אתחול משני ולטעון מראש נתונים באמצעות Google Cloud CLI או Terraform:
gcloud
יוצרים אשכול GKE Standard עם הזרמת תמונות מופעלת:
gcloud container clusters create CLUSTER_NAME \ --location=LOCATION \ --cluster-version=VERSION \ --enable-image-streamingמחליפים את מה שכתוב בשדות הבאים:
- CLUSTER_NAME: השם של האשכול.
- LOCATION: מיקום האשכול.
- VERSION: גרסת GKE שבה ייעשה שימוש. גרסת GKE צריכה להיות 1.28.3-gke.1067000 ואילך.
כדי ליצור מאגר צמתים עם דיסק אתחול משני, משתמשים בדגל
--secondary-boot-disk:gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --location LOCATION \ --enable-image-streaming \ --secondary-boot-disk=disk-image=global/images/DISK_IMAGE_NAMEמחליפים את מה שכתוב בשדות הבאים:
- NODE_POOL_NAME: השם של מאגר הצמתים.
- CLUSTER_NAME: השם של האשכול הקיים.
- LOCATION: אזור או אזורים של מחשוב, מופרדים בפסיקים, של האשכול.
- DISK_IMAGE_NAME: השם של תמונת הדיסק.
כדי ליצור מאגר צמתים עם דיסק אתחול משני מתמונת הדיסק בפרויקט אחר, צריך לבצע את השלבים במאמר שימוש בדיסק אתחול משני בפרויקט אחר.
GKE יוצר מאגר צמתים שבו לכל צומת יש דיסק משני עם נתונים שנטענו מראש. מערכת GKE מצרפת ומפעילה את דיסק האתחול המשני בצומת.
כדי לגשת לנתונים, צריך לטעון את קובץ האימג' של דיסק האתחול המשני בקונטיינרים של ה-Pod באמצעות טעינת נפח מסוג hostPath. מגדירים את
/usr/local/data_path_sbdלנתיב במאגר שבו רוצים שהנתונים יהיו:apiVersion: v1 kind: Pod metadata: name: pod-name spec: containers: ... volumeMounts: - mountPath: /usr/local/data_path_sbd name: data-path-sbd ... volumes: - name: data-path-sbd hostPath: path: /mnt/disks/gke-secondary-disks/gke-DISK_IMAGE_NAME-diskמחליפים את DISK_IMAGE_NAME בשם של קובץ האימג' של הדיסק.
Terraform
כדי ליצור אשכול עם מאגר הצמתים שמוגדר כברירת מחדל באמצעות Terraform, אפשר להיעזר בדוגמה הבאה:
יוצרים מאגר צמתים עם דיסק אתחול משני באותו פרויקט:
מידע נוסף על שימוש ב-Terraform זמין במאמר תמיכה ב-Terraform ל-GKE.
כדי לגשת לנתונים, צריך לטעון את קובץ האימג' של דיסק האתחול המשני בקונטיינרים של ה-Pod באמצעות טעינת נפח מסוג hostPath. מגדירים את
/usr/local/data_path_sbdלנתיב במאגר שבו רוצים שהנתונים יהיו:apiVersion: v1 kind: Pod metadata: name: pod-name spec: containers: ... volumeMounts: - mountPath: /usr/local/data_path_sbd name: data-path-sbd ... volumes: - name: data-path-sbd hostPath: path: /mnt/disks/gke-secondary-disks/gke-DISK_IMAGE_NAME-diskמחליפים את DISK_IMAGE_NAME בשם של קובץ האימג' של הדיסק.
התאמה לעומס (autoscaling) באשכול עם דיסקים משניים להפעלה
כדי ליצור מאגר צמתים ולהגדיר שינוי גודל אוטומטי של האשכול בדיסק אתחול משני, משתמשים ב-Google Cloud CLI:
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location LOCATION \
--enable-image-streaming \
--secondary-boot-disk=disk-image=global/images/DISK_IMAGE_NAME,mode=CONTAINER_IMAGE_CACHE \
--enable-autoscaling \
--num-nodes NUM_NODES \
--min-nodes MIN_NODES \
--max-nodes MAX_NODES
מחליפים את מה שכתוב בשדות הבאים:
- NODE_POOL_NAME: השם של מאגר הצמתים.
- CLUSTER_NAME: השם של האשכול הקיים.
- LOCATION: אזור או אזורים של מחשוב, מופרדים בפסיקים, של האשכול.
- DISK_IMAGE_NAME: השם של תמונת הדיסק.
- MIN_NODES: המספר המינימלי של הצמתים שניתן להגדיל אוטומטית עבור מאגר הצמתים שצוין בכל אזור. כדי לציין את המספר המינימלי של צמתים לכל מאגר הצמתים ב-GKE מגרסה 1.24 ואילך, משתמשים ב-
--total-min-nodes. הסימונים--total-min-nodesו---total-max-nodesהם בלעדיים לסימונים--min-nodesו---max-nodes. - MAX_NODES: המספר המקסימלי של הצמתים שניתן להרחיב באופן אוטומטי עבור מאגר הצמתים שצוין לכל אזור. כדי לציין את המספר המקסימלי של צמתים עבור מאגר הצמתים כולו ב-GKE מגרסה 1.24 ואילך, משתמשים ב-
--total-max-nodes. הסימונים--total-min-nodesו---total-max-nodesהם בלעדיים לסימונים--min-nodesו---max-nodes.
הקצאת צמתים אוטומטית (NAP) עם דיסקים משניים לאתחול
ב-GKE 1.30.1-gke.1329000 ואילך, אפשר להגדיר הקצאת צמתים אוטומטית (NAP) כדי ליצור ולמחוק באופן אוטומטי מאגרי צמתים בהתאם לדרישות המשאבים של עומסי העבודה.
יוצרים משאב מותאם אישית של רשימת היתרים של קובץ אימג' של דיסק לאתחול משני עבור הקצאת צמתים אוטומטית ב-GKE, בדומה לדוגמה הבאה:
apiVersion: "node.gke.io/v1" kind: GCPResourceAllowlist metadata: name: gke-secondary-boot-disk-allowlist spec: allowedResourcePatterns: - "projects/<PROJECT_ID>/global/images/.*"מחליפים את PROJECT_ID במזהה הפרויקט כדי לארח את קובץ האימג' של הדיסק.
כדי לפרוס את המשאב המותאם אישית של רשימת ההיתרים באשכול, מריצים את הפקודה הבאה:
kubectl apply -f ALLOWLIST_FILEמחליפים את ALLOWLIST_FILE בשם הקובץ של המניפסט.
מעדכנים את בורר הצמתים של ה-Pod כדי להשתמש בדיסק האתחול המשני:
nodeSelector: cloud.google.com.node-restriction.kubernetes.io/gke-secondary-boot-disk-DISK_IMAGE_NAME:CONTAINER_IMAGE_CACHE.PROJECT_IDמחליפים את מה שכתוב בשדות הבאים:
- DISK_IMAGE_NAME: השם של תמונת הדיסק.
- PROJECT_ID: מזהה הפרויקט שבו מאוחסנת תמונת הדיסק.
שימוש בדיסק אתחול משני בפרויקט אחר
כשיוצרים מאגר צמתים עם דיסק אתחול משני, אפשר להגדיר ל-GKE להשתמש בתמונת הדיסק בפרויקט אחר באמצעות הדגל --secondary-boot-disk.
כדי ליצור מאגר צמתים עם דיסק אתחול משני מתמונת הדיסק בפרויקט אחר, משתמשים בדגל
--secondary-boot-disk. לדוגמה:gcloud beta container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --location LOCATION \ --enable-image-streaming \ --secondary-boot-disk=disk-image=projects/IMAGE_PROJECT_ID/global/images/DISK_IMAGE_NAME,mode=CONTAINER_IMAGE_CACHEמחליפים את מה שכתוב בשדות הבאים:
- DISK_IMAGE_NAME: השם של תמונת הדיסק.
- IMAGE_PROJECT_ID: השם של הפרויקט שאליו שייכת תמונת הדיסק.
GKE יוצר מאגר צמתים שבו לכל צומת יש דיסק משני עם נתונים שנטענו מראש. מערכת GKE מצרפת ומטמיעה את דיסק האתחול המשני בצומת.
כדי לתת גישה לתמונות דיסק ששייכות לפרויקט אחר, מוסיפים את התפקידים Compute Image User לחשבונות השירות של האשכול:
- חשבון שירות ברירת המחדל של שירות המחשוב: CLUSTER_PROJECT_NUMBER@cloudservices.gserviceaccount.com
- חשבון שירות ב-GKE: service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com
gcloud projects add-iam-policy-binding IMAGE_PROJECT_ID \ --member serviceAccount:CLUSTER_PROJECT_NUMBER@cloudservices.gserviceaccount.com \ --role roles/compute.imageUser gcloud projects add-iam-policy-binding IMAGE_PROJECT_ID \ --member serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role roles/compute.imageUser
המאמרים הבאים
- אפשר להשתמש באפשרות Use Image streaming to pull container images כדי לשלוף קובצי אימג' של קונטיינרים על ידי סטרימינג של נתוני התמונה לפי הצורך של עומסי העבודה.
- במאמר שיפור היעילות של עומסי עבודה באמצעות NCCL Fast Socket מוסבר איך להשתמש בפלאגין NVIDIA Collective Communication Library (NCCL) Fast Socket.