בדף הזה נסביר איך להשתמש ב-GKE Sandbox כדי להגן על ליבת המארח בצמתים כשמאגרי מידע ב-Pod מריצים קוד לא מוכר או לא מהימן, או כשצריך בידוד נוסף מהצומת. בדף הזה מוסבר איך אפשר להפעיל את GKE Sandbox ולנטר את האשכולות כש-GKE Sandbox פועל.
הדף הזה מיועד למומחי אבטחה שצריכים לבודד את עומסי העבודה שלהם כדי לקבל הגנה נוספת מפני קוד לא ידוע או לא מהימן. כדי לקבל מידע נוסף על תפקידים נפוצים ומשימות לדוגמה שאנחנו מתייחסים אליהם ב Cloud de Confiance by S3NS תוכן, אפשר לעיין במאמר תפקידים נפוצים של משתמשים ב-GKE ומשימות.
לפני שקוראים את הדף הזה, חשוב להכיר את הסקירה הכללית על GKE Sandbox.
הפעלת GKE Sandbox
אפשר להשתמש ב-GKE Sandbox באשכולות Autopilot שמריצים GKE בגרסה 1.27.4-gke.800 ואילך. כדי להתחיל לפרוס עומסי עבודה של Autopilot בסביבת Sandbox, אפשר לדלג אל עבודה עם GKE Sandbox.
כדי להשתמש ב-GKE Sandbox באשכולות GKE Standard חדשים או קיימים, צריך להפעיל את GKE Sandbox באשכול באופן ידני.
למידע נוסף על גרסאות של GPU, אפשר לעיין בתמיכה במודלים של GPU.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את ממשק Google Kubernetes Engine API. הפעלת Google Kubernetes Engine API
- כדי להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את gcloud CLI. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
הפעלת GKE Sandbox באשכול Standard חדש
אי אפשר להשתמש ב-GKE Sandbox במאגר הצמתים שמוגדר כברירת מחדל, שנוצר כשיוצרים אשכול חדש, אם זה מאגר הצמתים היחיד באשכול. הסיבה לכך היא שעומסי עבודה של מערכת שמנוהלים על ידי GKE צריכים לפעול בנפרד מעומסי עבודה של ארגז חול לא מהימנים. כדי להפעיל את GKE Sandbox במהלך יצירת האשכול, צריך להוסיף לאשכול לפחות מאגר צמתים אחד נוסף.
המסוף
כדי לראות את האשכולות, נכנסים לתפריט Google Kubernetes Engine בCloud de Confiance מסוף.
נכנסים לדף Create a Kubernetes cluster במסוף Cloud de Confiance .
אופציונלי, אבל מומלץ: בתפריט הניווט, בקטע Cluster, לוחצים על Features ומסמנים את תיבות הסימון הבאות כדי שהודעות gVisor יתועדו:
- Cloud Logging
- Cloud Monitoring
- השירות המנוהל ל-Prometheus
לוחצים על add_box הוספת מאגר צמתים.
בתפריט הניווט, בקטע Node Pools (מאגרי צמתים), מרחיבים את מאגר הצמתים החדש ולוחצים על Nodes (צמתים).
מגדירים את ההגדרות הבאות למאגר הצמתים:
- ברשימה הנפתחת סוג התמונה בוחרים באפשרות מערכת הפעלה שעברה אופטימיזציה לשימוש בקונטיינרים עם Containerd (cos_containerd). זהו סוג התמונה היחיד שנתמך בארגז חול של GKE.
- בקטע Machine Configuration (הגדרת מכונה), בוחרים Series (סדרה) וMachine type (סוג מכונה).
אם אתם מריצים גרסה נתמכת של GKE , אתם יכולים לבחור סוג GPU או TPU. הערך הזה חייב להיות אחד מסוגי ה-GPU הבאים:
-
nvidia-gb200: NVIDIA GB200 NVL72 (תצוגה מקדימה) -
nvidia-b200: NVIDIA B200 (180GB) (תצוגה מקדימה) -
nvidia-h200-141gb: NVIDIA H200 (141GB) (תצוגה מקדימה) -
nvidia-h100-mega-80gb: NVIDIA H100 Mega (80GB) -
nvidia-h100-80gb: NVIDIA H100 (80GB) -
nvidia-a100-80gb: NVIDIA A100 (80GB) -
nvidia-tesla-a100: NVIDIA A100 (40GB) -
nvidia-rtx-pro-6000: NVIDIA RTX PRO 6000 (תצוגה מקדימה) (למעט סוגי מכונות G4 עם פחות מ-GPU אחד) -
nvidia-l4: NVIDIA L4 -
nvidia-tesla-t4: NVIDIA T4
או סוגי ה-TPU הבאים:
v4v5ev5pv6etpu7x
-
בתפריט הניווט, מתחת לשם של מאגר הצמתים שאתם מגדירים, לוחצים על Security (אבטחה) ומסמנים את התיבה Enable sandbox with gVisor (הפעלת ארגז חול עם gVisor).
ממשיכים להגדיר את האשכולות ואת מאגרי הצמתים לפי הצורך.
לוחצים על יצירה.
gcloud
אי אפשר להפעיל את GKE Sandbox במאגר הצמתים שמוגדר כברירת מחדל, ואי אפשר ליצור מאגרי צמתים נוספים בזמן שיוצרים אשכול חדש באמצעות הפקודה gcloud. במקום זאת, יוצרים את האשכול כרגיל. מומלץ להפעיל את Logging and Monitoring כדי שהודעות gVisor יתועדו ביומן, למרות שזה לא חובה.
לאחר מכן, משתמשים בפקודה gcloud container node-pools create ומגדירים את הדגל --
sandbox לערך type=gvisor. סוג תמונת הצומת צריך להיות cos_containerdבשביל GKE Sandbox.
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--node-version=NODE_VERSION \
--machine-type=MACHINE_TYPE \
--image-type=cos_containerd \
--sandbox type=gvisor
מחליפים את המשתנים הבאים:
-
NODE_POOL_NAME: השם של מאגר הצמתים החדש. -
CLUSTER_NAME: השם של האשכול. -
NODE_VERSION: הגרסה שבה ייעשה שימוש במאגר הצמתים. -
MACHINE_TYPE: סוג המכונה שבה רוצים להשתמש לצמתים.
כדי ליצור מאגר צמתים של GPU עם GKE Sandbox, מריצים את הפקודה הבאה:
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--node-version=NODE_VERSION \
--machine-type=MACHINE_TYPE \
--accelerator=type=GPU_TYPE,gpu-driver-version=DRIVER_VERSION \
--image-type=cos_containerd \
--sandbox type=gvisor
מחליפים את מה שכתוב בשדות הבאים:
GPU_TYPE: סוג GPU נתמך. פרטים נוספים זמינים במאמר בנושא GKE Sandbox.
MACHINE_TYPE: מכונה שתואמת לסוג ה-GPU המבוקש. פרטים נוספים זמינים במאמר בנושא דרישות GPU ב-Google Kubernetes Engine.
DRIVER_VERSION: גרסת הדרייבר של NVIDIA להתקנה. יכול להיות אחד מהערכים הבאים:-
default: התקנת גרסת ברירת המחדל של הדרייבר לגרסת GKE. -
latest: התקנת הגרסה האחרונה של מנהל ההתקן שזמינה לגרסת GKE שלכם. האפשרות זמינה רק לצמתים שמשתמשים במערכת הפעלה שמותאמת לקונטיינרים.
-
כדי ליצור מאגר של צמתי TPU עם GKE Sandbox, מריצים את הפקודה הבאה:
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--node-version=NODE_VERSION \
--num-nodes=NUM_NODES \
--tpu-topology=TPU_TOPOLOGY \
--machine-type=MACHINE_TYPE \
--image-type=cos_containerd \
--sandbox type=gvisor
-
MACHINE_TYPE: סוג TPU נתמך. פרטים נוספים זמינים במאמר בנושא GKE Sandbox.
הפעלת GKE Sandbox באשכול Standard קיים
אתם יכולים להפעיל את ארגז החול של GKE באשכול קיים רגיל על ידי הוספה של מאגר צמתים חדש והפעלת התכונה למאגר הצמתים הזה.
המסוף
כדי ליצור מאגר צמתים חדש עם GKE Sandbox מופעל:
נכנסים לדף Google Kubernetes Engine במסוף Cloud de Confiance .
לוחצים על השם של האשכול שרוצים לשנות.
לוחצים על add_box הוספת מאגר צמתים.
מגדירים את הדף Node pool details לפי הצורך.
בתפריט הניווט, לוחצים על Nodes ומגדירים את ההגדרות הבאות:
- ברשימה הנפתחת סוג התמונה בוחרים באפשרות מערכת הפעלה שעברה אופטימיזציה לשימוש בקונטיינרים עם Containerd (cos_containerd). זהו סוג התמונה היחיד שנתמך בארגז חול של GKE.
- בקטע Machine Configuration (הגדרת מכונה), בוחרים Series (סדרה) וMachine type (סוג מכונה).
אם אתם מריצים גרסה נתמכת של GKE , אתם יכולים לבחור סוג GPU או TPU. הערך צריך להיות אחד מסוגי ה-GPU הבאים:
-
nvidia-gb200: NVIDIA GB200 NVL72 (תצוגה מקדימה) -
nvidia-b200: NVIDIA B200 (180GB) (תצוגה מקדימה) -
nvidia-h200-141gb: NVIDIA H200 (141GB) (תצוגה מקדימה) -
nvidia-h100-mega-80gb: NVIDIA H100 Mega (80GB) -
nvidia-h100-80gb: NVIDIA H100 (80GB) -
nvidia-a100-80gb: NVIDIA A100 (80GB) -
nvidia-tesla-a100: NVIDIA A100 (40GB) -
nvidia-rtx-pro-6000: NVIDIA RTX PRO 6000 (תצוגה מקדימה) (למעט סוגי מכונות G4 עם פחות מ-GPU אחד) -
nvidia-l4: NVIDIA L4 -
nvidia-tesla-t4: NVIDIA T4
או סוגי ה-TPU הבאים:
v4v5ev5pv6etpu7x
-
בתפריט הניווט, לוחצים על אבטחה ומסמנים את התיבה הפעלת ארגז חול עם gVisor.
לוחצים על יצירה.
gcloud
כדי ליצור מאגר צמתים חדש עם GKE Sandbox מופעל, משתמשים בפקודה כמו זו שבהמשך:
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--machine-type=MACHINE_TYPE \
--image-type=cos_containerd \
--sandbox type=gvisor
סוג תמונת הצומת צריך להיות cos_containerd בשביל GKE Sandbox.
כדי ליצור מאגר צמתים של GPU עם GKE Sandbox, מריצים את הפקודה הבאה:
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--node-version=NODE_VERSION \
--machine-type=MACHINE_TYPE \
--accelerator=type=GPU_TYPE,gpu-driver-version=DRIVER_VERSION \
--image-type=cos_containerd \
--sandbox type=gvisor
מחליפים את מה שכתוב בשדות הבאים:
GPU_TYPE: סוג GPU נתמך. פרטים נוספים זמינים במאמר בנושא GKE Sandbox.
MACHINE_TYPE: מכונה שתואמת לסוג ה-GPU המבוקש. פרטים נוספים זמינים במאמר בנושא דרישות GPU ב-Google Kubernetes Engine.
DRIVER_VERSION: גרסת הדרייבר של NVIDIA להתקנה. יכול להיות אחד מהערכים הבאים:-
default: התקנת גרסת ברירת המחדל של הדרייבר לגרסת GKE. -
latest: התקנת הגרסה האחרונה של מנהל ההתקן שזמינה לגרסת GKE שלכם. האפשרות זמינה רק לצמתים שמשתמשים במערכת הפעלה שמותאמת לקונטיינרים.
-
כדי ליצור מאגר של צמתי TPU עם GKE Sandbox, מריצים את הפקודה הבאה:
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--node-version=NODE_VERSION \
--num-nodes=NUM_NODES \
--tpu-topology=TPU_TOPOLOGY \
--machine-type=MACHINE_TYPE \
--image-type=cos_containerd \
--sandbox type=gvisor
-
MACHINE_TYPE: סוג TPU נתמך. פרטים נוספים זמינים במאמר בנושא GKE Sandbox.
אופציונלי: הפעלת מעקב ורישום ביומן
מומלץ להפעיל את Cloud Logging ואת Cloud Monitoring באשכול, כדי שההודעות של gVisor יירשמו ביומן. השירותים האלה מופעלים כברירת מחדל באשכולות חדשים.
אתם יכולים להשתמש במסוף Cloud de Confiance כדי להפעיל את התכונות האלה באשכול קיים.
נכנסים לדף Google Kubernetes Engine במסוף Cloud de Confiance .
לוחצים על השם של האשכול שרוצים לשנות.
בקטע Features (מאפיינים), בשדה Cloud Logging (רישום ביומן ב-Cloud), לוחצים על edit ואז על Edit Cloud Logging (עריכת רישום ביומן ב-Cloud).
מסמנים את תיבת הסימון Enable Cloud Logging (הפעלת Cloud Logging).
לוחצים על שמירת השינויים.
חוזרים על אותם השלבים בשדות Cloud Monitoring וManaged Service for Prometheus כדי להפעיל את התכונות האלה.
שימוש ב-GKE Sandbox במצבי Autopilot ו-Standard
באשכולות Autopilot ובאשכולות Standard שבהם מופעל GKE Sandbox, כדי לבקש סביבת ארגז חול עבור Pod, צריך לציין את gvisor RuntimeClass במפרט של ה-Pod.
במקרים של אשכולות Autopilot, צריך לוודא שפועלת גרסת GKE 1.27.4-gke.800 ואילך.
הפעלת אפליקציה בארגז חול
כדי להפעיל פריסה בצומת עם GKE Sandbox מופעל, מגדירים את הערך של spec.template.spec.runtimeClassName ל-gvisor, כמו בדוגמה הבאה:
# httpd.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: httpd
labels:
app: httpd
spec:
replicas: 1
selector:
matchLabels:
app: httpd
template:
metadata:
labels:
app: httpd
spec:
runtimeClassName: gvisor
containers:
- name: httpd
image: httpd
יוצרים את הפריסה:
kubectl apply -f httpd.yaml
ה-Pod נפרס לצומת עם GKE Sandbox מופעל. כדי לאמת את הפריסה, מאתרים את הצומת שבו ה-Pod נפרס:
kubectl get pods
הפלט אמור להיראות כך:
NAME READY STATUS RESTARTS AGE
httpd-db5899bc9-dk7lk 1/1 Running 0 24s
בפלט, מחפשים את שם ה-Pod בפלט ואז בודקים את הערך של RuntimeClass:
kubectl get pods POD_NAME -o jsonpath='{.spec.runtimeClassName}'
הפלט הוא gvisor.
אפשר גם להציג את RuntimeClass של כל Pod ולחפש את ה-Pods שבהם הוא מוגדר ל-gvisor:
kubectl get pods -o jsonpath=$'{range .items[*]}{.metadata.name}: {.spec.runtimeClassName}\n{end}'
הפלט שיתקבל:
POD_NAME: gvisor
השיטה הזו לאימות הפעלת ה-Pod בארגז חול היא מהימנה, כי היא לא מסתמכת על נתונים בתוך ארגז החול עצמו. כל מה שמדווח מתוך ארגז החול לא מהימן, כי יכול להיות שהוא פגום או זדוני.
הפעלת Pod עם מאיצים ב-GKE Sandbox
כדי להריץ עומס עבודה של GPU או TPU ב-GKE Sandbox, מוסיפים את השדה runtimeClassName: gvisor למניפסט כמו בדוגמאות הבאות:
קובץ מניפסט לדוגמה של GPU Pods במצב רגיל:
apiVersion: v1 kind: Pod metadata: name: my-gpu-pod spec: runtimeClassName: gvisor containers: - name: my-gpu-container image: nvidia/samples:vectoradd-cuda10.2 resources: limits: nvidia.com/gpu: 1דוגמה למניפסט של Pods של GPU במצב Autopilot:
apiVersion: v1 kind: Pod metadata: name: my-gpu-pod spec: runtimeClassName: gvisor nodeSelector: cloud.google.com/gke-gpu-driver-version: "latest" cloud.google.com/gke-accelerator: nvidia-tesla-t4 containers: - name: my-gpu-container image: nvidia/samples:vectoradd-cuda10.2 resources: limits: nvidia.com/gpu: 1דוגמה לקובץ מניפסט עבור TPU Pods במצב רגיל או במצב טייס אוטומטי:
apiVersion: v1 kind: Pod metadata: name: my-tpu-pod spec: runtimeClassName: gvisor nodeSelector: cloud.google.com/gke-tpu-accelerator: tpu-v5-lite-podslice cloud.google.com/gke-tpu-topology: 1x1 containers: - name: my-tpu-container image: us-docker.pkg.dev/cloud-tpu-images/jax-ai-image/tpu:latest command: - bash - -c - | python -c 'import jax; print("TPU cores:", jax.device_count())' resources: limits: google.com/tpu: 1 requests: google.com/tpu: 1
אפשר להריץ ב-GKE Sandbox כל Pod של מאיץ במצב Autopilot או Standard שעומד בדרישות לגבי הגרסה וסוג המאיץ, על ידי הוספת השדה runtimeClassName: gvisor למניפסט. כדי להפעיל GPU Pods ב-GKE, אפשר לעיין במאמרים הבאים:
כדי להריץ TPU Pods ב-GKE, אפשר לעיין במאמרים הבאים:
אלה סוגי ה-GPU שנתמכים ב-Autopilot:
-
nvidia-gb200: NVIDIA GB200 NVL72 (תצוגה מקדימה) -
nvidia-b200: NVIDIA B200 (180GB) (תצוגה מקדימה) -
nvidia-h200-141gb: NVIDIA H200 (141GB) (תצוגה מקדימה) -
nvidia-h100-mega-80gb: NVIDIA H100 Mega (80GB) -
nvidia-h100-80gb: NVIDIA H100 (80GB) -
nvidia-a100-80gb: NVIDIA A100 (80GB) -
nvidia-tesla-a100: NVIDIA A100 (40GB) -
nvidia-rtx-pro-6000: NVIDIA RTX PRO 6000 (תצוגה מקדימה) (למעט סוגי מכונות G4 עם פחות מ-GPU אחד) -
nvidia-l4: NVIDIA L4 -
nvidia-tesla-t4: NVIDIA T4
הפעלת Pod רגיל לצד Pods בארגז חול
השלבים בקטע הזה רלוונטיים לעומסי עבודה במצב רגיל. אין צורך להריץ Pods רגילים לצד Pods של ארגז חול במצב Autopilot, כי מודל התמחור של Autopilot מבטל את הצורך לבצע אופטימיזציה ידנית של מספר ה-Pods שמתוזמנים בצמתים.
אחרי שמפעילים את GKE Sandbox במאגר צמתים, אפשר להריץ צמתים מהימנים בלי להשתמש בארגז חול, באמצעות taints ו-tolerations של צמתים. ה-Pods האלה נקראים 'Pods רגילים' כדי להבדיל אותם מ-Pods בסביבת ארגז חול.
ל-Pods רגילים, בדיוק כמו ל-Pods עם ארגז חול, אין גישה לCloud de Confiance שירותים אחרים או למטא-נתונים של האשכול. המניעה הזו היא חלק מההגדרה של הצומת. אם קבוצות ה-Pod הרגילות או קבוצות ה-Pod בסביבת ארגז חול צריכות גישה לשירותים שלCloud de Confiance , צריך להשתמש ב-Workload Identity Federation for GKE.
GKE Sandbox מוסיף את התווית והכתם הבאים לצמתים שיכולים להריץ Pods ב-Sandbox:
labels:
sandbox.gke.io/runtime: gvisor
taints:
- effect: NoSchedule
key: sandbox.gke.io/runtime
value: gvisor
בנוסף להגדרות של זיקה לצומת וסובלנות במניפסט של ה-Pod, GKE Sandbox מחיל את ההגדרות הבאות של זיקה לצומת וסובלנות על כל ה-Pods עם RuntimeClass שמוגדר ל-gvisor:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: sandbox.gke.io/runtime
operator: In
values:
- gvisor
tolerations:
- effect: NoSchedule
key: sandbox.gke.io/runtime
operator: Equal
value: gvisor
כדי לתזמן Pod רגיל בצומת עם GKE Sandbox מופעל, צריך להחיל באופן ידני את ההעדפה לצומת ואת ההרשאה שמתוארות קודם במניפסט של ה-Pod.
- אם ה-Pod שלכם יכול לפעול בצמתים עם GKE Sandbox מופעל, מוסיפים את ה-toleration.
- אם ה-Pod שלכם חייב לפעול בצמתים שבהם מופעל GKE Sandbox, צריך להוסיף גם את ההגדרה node affinity וגם את ההגדרה toleration.
לדוגמה, המניפסט הבא משנה את המניפסט שבו נעשה שימוש בהרצת אפליקציה בארגז חול כך שהאפליקציה תפעל כ-Pod רגיל בצומת עם Pods בארגז חול. השינוי מתבצע על ידי הסרת runtimeClass והוספה של ה-taint וה-toleration שתוארו קודם.
# httpd-no-sandbox.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: httpd-no-sandbox
labels:
app: httpd
spec:
replicas: 1
selector:
matchLabels:
app: httpd
template:
metadata:
labels:
app: httpd
spec:
containers:
- name: httpd
image: httpd
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: sandbox.gke.io/runtime
operator: In
values:
- gvisor
tolerations:
- effect: NoSchedule
key: sandbox.gke.io/runtime
operator: Equal
value: gvisor
קודם כל, מוודאים שהפריסה לא פועלת בארגז חול:
kubectl get pods -o jsonpath=$'{range .items[*]}{.metadata.name}: {.spec.runtimeClassName}\n{end}'
הפלט אמור להיראות כך:
httpd-db5899bc9-dk7lk: gvisor
httpd-no-sandbox-5bf87996c6-cfmmd:
פריסת httpd שנוצרה קודם פועלת בסביבת sandbox, כי runtimeClass שלה הוא gvisor. לפריסת httpd-no-sandbox אין ערך ל-runtimeClass, ולכן היא לא פועלת בסביבת ארגז חול.
לאחר מכן, מריצים את הפקודה הבאה כדי לוודא שפריסת ה-Deployment שלא מוגבלת לארגז חול פועלת בצומת עם ארגז חול של GKE:
kubectl get pod -o jsonpath=$'{range .items[*]}{.metadata.name}: {.spec.nodeName}\n{end}'
השם של מאגר הצמתים מוטמע בערך של nodeName. מוודאים ש-Pod פועל בצומת במאגר צמתים עם GKE Sandbox מופעל.
אימות של הגנה על מטא-נתונים
כדי לאמת את הטענה שהמטא-נתונים מוגנים מפני צמתים שיכולים להריץ Pods בארגז חול, אפשר להריץ בדיקה:
יוצרים פריסה בסביבת ארגז חול מהמניפסט הבא באמצעות
kubectl apply -f. הוא משתמש בתמונהfedora, שכוללת את הפקודהcurl. ה-Pod מריץ את הפקודה/bin/sleepכדי לוודא שהפריסה תפעל למשך 10,000 שניות.# sandbox-metadata-test.yaml apiVersion: apps/v1 kind: Deployment metadata: name: fedora labels: app: fedora spec: replicas: 1 selector: matchLabels: app: fedora template: metadata: labels: app: fedora spec: runtimeClassName: gvisor containers: - name: fedora image: fedora command: ["/bin/sleep","10000"]כדי לקבל את שם ה-Pod, משתמשים בפקודה
kubectl get pods, ואז משתמשים בפקודהkubectl execכדי להתחבר ל-Pod באופן אינטראקטיבי.kubectl exec -it POD_NAME /bin/shאתם מחוברים למאגר שפועל ב-Pod, בסשן
/bin/sh.בסשן האינטראקטיבי, מנסים לגשת לכתובת URL שמחזירה מטא-נתונים של האשכול:
curl -s "http://169.254.169.254/computeMetadata/v1/instance/attributes/kube-env" -H "Metadata-Flavor: Google"הפקודה נתקעת ובסופו של דבר מגיעה לזמן קצוב לתפוגה, כי המנות מושמטות בשקט.
מקישים על Ctrl+C כדי להפסיק את הפקודה
curl, ומקלידיםexitכדי להתנתק מה-Pod.מסירים את השורה
RuntimeClassממניפסט ה-YAML ומבצעים פריסה מחדש של ה-Pod באמצעותkubectl apply -f FILENAME. ה-Pod ב-Sandbox מופסק ונוצר מחדש בצומת ללא GKE Sandbox.מקבלים את השם החדש של ה-Pod, מתחברים אליו באמצעות
kubectl execומריצים שוב את הפקודהcurl. הפעם, התוצאות מוחזרות. הפלט של הדוגמה הזו קוצר.ALLOCATE_NODE_CIDRS: "true" API_SERVER_TEST_LOG_LEVEL: --v=3 AUTOSCALER_ENV_VARS: kube_reserved=cpu=60m,memory=960Mi,ephemeral-storage=41Gi;... ...מקלידים
exitכדי להתנתק מה-Pod.מסירים את הפריסה:
kubectl delete deployment fedora
השבתת GKE Sandbox
אי אפשר להשבית את GKE Sandbox באשכולות GKE Autopilot או במאגרי צמתים של GKE Standard. אם רוצים להפסיק להשתמש ב-GKE Sandbox, צריך למחוק את מאגר הצמתים.