הצפנת נתונים בשימוש בעומסי עבודה של GPU באמצעות Confidential GKE Nodes

אתם יכולים להצפין נתונים של עומסי עבודה של GPU בשימוש על ידי הפעלת עומסי העבודה ב-Confidential Google Kubernetes Engine Nodes מוצפנים. בדף הזה מוסבר למהנדסי אבטחה ולמפעילים איך לשפר את האבטחה של הנתונים בעומסי עבודה מואצים, כמו משימות של AI/ML. כדאי להכיר את המושגים הבאים:

מידע על הרצת עומסי עבודה ב-GPU בצמתים של Confidential GKE

אפשר לבקש Confidential GKE Nodes לעומסי עבודה של GPU באחת מהדרכים הבאות:

מגבלות

מצב Autopilot תומך רק במעבדי GPU‏ NVIDIA H100‏ (80 GB) עם Confidential GKE Nodes.

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

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

  • מפעילים את ממשק Google Kubernetes Engine API.
  • הפעלת Google Kubernetes Engine API
  • כדי להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את gcloud CLI. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה gcloud components update כדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.

דרישות

לא משנה באיזו שיטה תבחרו להגדיר את Confidential GKE Nodes, אתם צריכים לעמוד בכל הדרישות הבאות:

  • הצמתים צריכים להיות באזור שתומך ב-NVIDIA Confidential Computing. מידע נוסף זמין במאמר בנושא צפייה באזורים נתמכים.
  • הצמתים צריכים להשתמש בסוג מכונה נתמך, בטכנולוגיית Confidential Computing וב-GPU. מידע נוסף זמין במאמר בנושא תצורות נתמכות.
  • צריך להקצות מכסת שימוש במעבדי GPU שניתן להפסיק את השימוש בהם, כדי להשתמש בהם במיקומי הצמתים. לדוגמה, אם אתם משתמשים ב-GPU מסוג NVIDIA H100 (80 GB), אתם צריכים מכסה ל-compute.googleapis.com/preemptible_nvidia_h100_gpus. מידע נוסף על ניהול המכסות זמין במאמר איך רואים ומנהלים את המכסות.

בנוסף לדרישות האלה, אתם צריכים לעמוד בתנאים ספציפיים בהתאם לשיטת ההגדרה של צמתים סודיים ב-GKE שתבחרו, כפי שמתואר בטבלה הבאה:

שיטת ההגדרה דרישות מגבלות
ComputeClasses
  • אי אפשר להשתמש ב-flex-start עם הקצאת משאבים בתור באמצעות ComputeClasses.
  • אי אפשר להשתמש בתכונות שיתוף של GPU כמו שיתוף זמן או GPU עם כמה מופעים.
הגדרה ידנית במצב רגיל
  • שימוש במכונות וירטואליות מסוג Spot, במכונות וירטואליות זמניות, ב-flex-start (תצוגה מקדימה) או ב-flex-start עם הקצאת משאבים בתור.
  • משתמשים באחת מגרסאות GKE הבאות:
    • התקנה ידנית של מנהל ההתקן של GPU: ‫1.32.2-gke.1297000 ואילך.
    • התקנה אוטומטית של מנהל התקן של GPU: ‫1.33.3-gke.1392000 ואילך.
    • התחלה גמישה עם הקצאת משאבים בתור: גרסה 1.32.2-gke.1652000 ואילך.
  • אי אפשר להשתמש ב-flex-start (תצוגה מקדימה) אם מפעילים Confidential GKE Nodes (צמתים חסויים של GKE) לכל האשכול.
  • אי אפשר להשתמש בתכונות שיתוף של GPU כמו שיתוף זמן או GPU עם כמה מופעים.

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות ליצירת צמתים סודיים של GKE, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט Cloud de Confiance :

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

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

שימוש ב-ComputeClasses להרצת עומסי עבודה של GPU סודיים

אפשר להגדיר את התצורה של Confidential GKE Nodes ב-ComputeClass. ‫ComputeClasses הם משאבים מותאמים אישית של Kubernetes שמאפשרים להגדיר הצהרות של תצורות צמתים לצורך התאמה אוטומטית לעומס ותזמון ב-GKE. אפשר לפעול לפי השלבים שבקטע הזה בכל אשכול במצב Autopilot או Standard שמופעלת בו גרסה GKE 1.33.3-gke.1392000 ואילך.

כדי להשתמש ב-ComputeClass להרצת עומסי עבודה של GPU ב-Confidential GKE Nodes, מבצעים את השלבים הבאים:

  1. שומרים את מניפסט ComputeClass הבא כקובץ YAML:

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTECLASS_NAME
    spec:
      nodePoolConfig:
        confidentialNodeType: CONFIDENTIAL_COMPUTE_TECHNOLOGY
      priorityDefaults:
        location:
          zones: ['ZONE1','ZONE2']
      priorities:
      - gpu:
          type: GPU_TYPE
          count: GPU_COUNT
          driverVersion: default
        spot: true
      activeMigration:
        optimizeRulePriority: true
      nodePoolAutoCreation:
        enabled: true
      whenUnsatisfiable: DoNotScaleUp
    

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

    • COMPUTECLASS_NAME: שם ל-ComputeClass.
    • CONFIDENTIAL_COMPUTE_TECHNOLOGY: טכנולוגיית Confidential Computing לשימוש, כמו TDX. בוחרים טכנולוגיה שנתמכת על ידי ה-GPU שבו רוצים להשתמש.

    • ZONE1,ZONE2: רשימה מופרדת בפסיקים של אזורים שבהם ייצרו צמתים, למשל ['us-central1-a','us-central1-b']. מציינים אזורים שתומכים בטכנולוגיית Confidential Computing ובסוג המכונה שרוצים להשתמש בהם. מידע נוסף זמין במאמר בנושא צפייה באזורים נתמכים.

    • GPU_TYPE: סוג ה-GPU לשימוש, למשל nvidia-h100-80gb.

    • GPU_COUNT: מספר יחידות ה-GPU לצירוף לכל צומת. מציינים ערך שנתמך על ידי מכונה וירטואלית חסויה עבור סוג ה-GPU. לדוגמה, אם בוחרים את סוג ה-GPU‏ nvidia-h100-80gb, צריך לציין בשדה הזה את הערך 1.

  2. יוצרים את ComputeClass:

    kubectl apply -f PATH_TO_MANIFEST
    

    מחליפים את הערך PATH_TO_MANIFEST בנתיב לקובץ המניפסט של ComputeClass.

  3. כדי להריץ את עומס העבודה של ה-GPU בצמתי GKE סודיים, בוחרים את ComputeClass במניפסט של עומס העבודה. לדוגמה, שומרים את מניפסט הפריסה הבא, שבו נבחרים ComputeClass ו-GPU, כקובץ YAML:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: confidential-gpu-deployment
      labels:
        app: conf-gpu
    spec:
      selector:
        matchLabels:
          app: conf-gpu
      replicas: 1
      template:
        metadata:
          labels:
            app: conf-gpu
        spec:
          nodeSelector:
            cloud.google.com/compute-class: COMPUTECLASS_NAME
          containers:
          - name: example-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            resources:
              limits:
                cpu: "4"
                memory: "16Gi"
                nvidia.com/gpu: GPU_REQUEST
              requests:
                cpu: "4"
                memory: "16Gi"
    

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

    • COMPUTECLASS_NAME: השם של ComputeClass שיצרתם.
    • GPU_REQUEST: מספר יחידות ה-GPU לשימוש בקונטיינר. מציינים ערך שקטן מהערך שציינתם בשדה gpu.count של ComputeClass או שווה לו.
  4. יוצרים את הפריסה:

    kubectl apply -f PATH_TO_DEPLOYMENT_MANIFEST
    

    מחליפים את PATH_TO_DEPLOYMENT_MANIFEST בנתיב אל מניפסט הפריסה.

כשיוצרים את עומס העבודה של ה-GPU, ‏ GKE משתמש בהגדרה ב-ComputeClass כדי ליצור Confidential GKE Nodes עם יחידות GPU מצורפות.

הגדרה ידנית של Confidential GKE Nodes ב-GKE Standard

אפשר להריץ עומסי עבודה של GPU בצומתי Confidential GKE באשכולות או במאגרי צמתים במצב רגיל.

הפעלת Confidential GKE Nodes באשכולות רגילים חדשים

אתם יכולים להפעיל Confidential GKE Nodes לכל אשכול Standard, כך שכל מאגר צמתים של GPU שתיצרו ישתמש באותה טכנולוגיית Confidential Computing. כשיוצרים אשכול חדש במצב Standard שמשתמש בצמתים של GKE Confidential לעומסי עבודה של GPU, צריך לוודא שמציינים את הגדרות האשכול הבאות:

  • מיקום: אזור או אזור משנה שתומכים ב-NVIDIA Confidential Computing. מידע נוסף זמין במאמר בנושא צפייה באזורים נתמכים.
  • סוג Confidential Computing: טכנולוגיית Confidential Computing שתומכת ב-GPU. מידע נוסף זמין במאמר בנושא תצורות נתמכות.
  • גרסת האשכול: אחת מהגרסאות הבאות, בהתאם לאופן שבו רוצים להתקין את מנהלי ההתקן של GPU:

    • התקנה ידנית של מנהל ההתקן של GPU: גרסה ‎1.32.2-gke.1297000 ואילך.
    • התקנה אוטומטית של מנהל התקן של GPU: גרסה 1.33.3-gke.1392000 ואילך.

אפשר גם להגדיר יחידות GPU למאגר הצמתים שמוגדר כברירת מחדל ש-GKE יוצר באשכול. עם זאת, מומלץ להשתמש במאגר צמתים נפרד עבור יחידות ה-GPU, כדי שלפחות מאגר צמתים אחד באשכול יוכל להריץ כל עומס עבודה.

מידע נוסף מופיע במאמר בנושא הפעלת צמתים של GKE Confidential באשכולות רגילים.

שימוש ב-Confidential GKE Nodes עם מעבדי GPU במאגרי צמתים רגילים

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

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

    המסוף

    1. נכנסים לדף Kubernetes clusters במסוף Cloud de Confiance .

      מעבר אל Kubernetes clusters

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

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

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

    5. בחלונית Node pool details:

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

    7. בחלונית Configure node settings, מבצעים את הפעולות הבאות:

      1. בקטע Machine configuration, לוחצים על GPUs.
      2. בתפריט GPU type (סוג ה-GPU), בוחרים סוג GPU שנתמך על ידי Confidential Computing (מחשוב חסוי).
      3. בתפריט Number of GPUs, בוחרים את מספר ה-GPU שרוצים לצרף לכל צומת. בוחרים ערך שנתמך על ידי סוג ה-GPU שבחרתם. לדוגמה, אם בחרתם מעבדי GPU מסוג NVIDIA H100 (80 GB), בוחרים באפשרות 1.
      4. מוודאים שהאפשרות הפעלת שיתוף GPU לא מסומנת.
      5. בקטע GPU Driver installation, בוחרים באחת מהאפשרויות הבאות:

        • בניהול Google: GKE מתקין מנהל התקן באופן אוטומטי. אם בוחרים באפשרות הזו, בתפריט הנפתח Version (גרסה), בוחרים באחת מגרסאות הדרייבר הבאות:

          • ברירת מחדל: התקנת גרסת ברירת המחדל של מנהל ההתקן עבור גרסת הצומת של GKE. נדרשת גרסת GKE‏ 1.33.3-gke.1392000 ואילך.
          • הגרסה האחרונה: התקנת הגרסה האחרונה של מנהל ההתקן עבור גרסת הצומת של GKE. נדרשת גרסה ‎1.33.3-gke.1392000 ואילך של GKE.
        • בניהול המשתמש: דילוג על התקנה אוטומטית של מנהל התקן. אם בוחרים באפשרות הזו, חובה להתקין באופן ידני מנהל התקן תואם ל-GPU. נדרשת גרסה 1.32.2-gke.1297000 ואילך.

      6. בקטע Machine type מוודאים שסוג המכונה הוא סוג מכונת GPU שנתמך על ידי Confidential VM עבור סוג ה-GPU שנבחר.

      7. בוחרים באפשרות Enable nodes on spot VMs או באפשרות configure Flex-start VMs with queued provisioning.

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

    gcloud

    אתם יכולים ליצור מאגרי צמתים של GPU שמריצים צמתים של GKE Confidential על מכונות וירטואליות מסוג Spot או באמצעות מכונות וירטואליות עם הקצאת משאבים בתור.

    • יוצרים מאגר צמתים של GPU שמריץ Confidential GKE Nodes במכונות וירטואליות מסוג Spot:

      gcloud container node-pools create NODE_POOL_NAME \
          --cluster=CLUSTER_NAME \
          --confidential-node-type=CONFIDENTIAL_COMPUTE_TECHNOLOGY \
          --location=LOCATION \
          --node-locations=NODE_LOCATION1,NODE_LOCATION2,... \
          --spot \
          --accelerator=type=GPU_TYPE,count=GPU_COUNT,gpu-driver-version=DRIVER_VERSION \
          --machine-type=MACHINE_TYPE
      

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

      • NODE_POOL_NAME: שם למאגר הצמתים החדש.
      • CLUSTER_NAME: השם של האשכול הקיים.
      • CONFIDENTIAL_COMPUTE_TECHNOLOGY: טכנולוגיית Confidential Computing לשימוש, כמו TDX. בוחרים טכנולוגיה שנתמכת על ידי ה-GPU שבו רוצים להשתמש.
      • LOCATION: המיקום של מאגר הצמתים החדש. המיקום צריך לתמוך בשימוש ב-GPU בצמתים של Confidential GKE.
      • NODE_LOCATION1,NODE_LOCATION2,...: רשימה מופרדת בפסיקים של אזורים להרצת הצמתים. מציינים את התחומים (zones) שתומכים בטכנולוגיית Confidential Computing ואת סוג המכונה שרוצים להשתמש בה. מידע נוסף זמין במאמר בנושא צפייה באזורים נתמכים.
      • GPU_TYPE: סוג ה-GPU לשימוש, למשל nvidia-h100-80gb.
      • GPU_COUNT: מספר יחידות ה-GPU לצירוף לכל צומת. מציינים ערך שנתמך על ידי מכונה וירטואלית חסויה עבור סוג ה-GPU. לדוגמה, אם בוחרים את סוג ה-GPU‏ nvidia-h100-80gb, צריך לציין ערך של 1 בשדה הזה.

      • DRIVER_VERSION: גרסת מנהל ההתקן של GPU להתקנה. מציינים אחד מהערכים הבאים:

        • default: התקנת גרסת ברירת המחדל של מנהל ההתקן עבור גרסת GKE של הצומת. נדרשת גרסה ‎1.33.3-gke.1392000 ואילך של GKE.
        • latest: התקנת הגרסה האחרונה של מנהל ההתקן עבור גרסת הצומת של GKE. נדרשת גרסה ‎1.33.3-gke.1392000 ואילך של GKE.
        • disabled: דילוג על התקנה אוטומטית של מנהל התקן. אם מציינים את הערך הזה, חובה להתקין ידנית מנהל התקן תואם ל-GPU. נדרשת גרסה 1.32.2-gke.1297000 ואילך.
      • MACHINE_TYPE: סוג המכונה שבה יש להשתמש עבור הצמתים. מציינים סוג מכונת GPU שנתמך על ידי מכונת VM חסויה עבור סוג ה-GPU שנבחר.
    • כדי ליצור מאגר צמתים של GPU שמריץ Confidential GKE Nodes, משתמשים במכונות וירטואליות עם הפעלה גמישה (Flex-start) עם הקצאת משאבים בתור:

      gcloud container node-pools create NODE_POOL_NAME \
          --cluster=CLUSTER_NAME \
          --node-locations=NODE_LOCATION1,NODE_LOCATION2,... \
          --machine-type=MACHINE_TYPE \
          --confidential-node-type=CONFIDENTIAL_COMPUTE_TECHNOLOGY \
          --location=LOCATION \
          --flex-start --enable-queued-provisioning \
          --enable-autoscaling --num-nodes=0 --total-max-nodes=TOTAL_MAX_NODES \
          --location-policy=ANY --reservation-affinity=none --no-enable-autorepair \
          --accelerator=type=GPU_TYPE,count=GPU_COUNT,gpu-driver-version=DRIVER_VERSION
      

      מחליפים את TOTAL_MAX_NODES במספר המקסימלי של הצמתים שאליהם מאגר הצמתים יכול להתרחב באופן אוטומטי.

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

  • כדי לעדכן את מאגרי הצמתים הקיימים כך שישתמשו ב-Confidential Computing, אפשר לעיין במאמר בנושא עדכון של מאגר צמתים קיים.

התקנה ידנית של מנהלי התקנים (דרייברים) של GPU שתומכים ב-Confidential GKE Nodes

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

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

הוראות מפורטות מופיעות בכרטיסייה COS במאמר התקנה ידנית של מנהלי התקנים (דרייברים) של NVIDIA GPU.

פתרון בעיות

מידע לפתרון בעיות זמין במאמר פתרון בעיות ב-GPU ב-GKE.

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