הגדרת דיסק אתחול בהתאמה אישית

בדף הזה מוסבר איך להתאים אישית דיסק אתחול של צומת באשכולות ובמאגרי צמתים של Google Kubernetes Engine ‏ (GKE).

סקירה כללית

כשיוצרים אשכול GKE או מאגר צמתים, אפשר לבחור את סוג הדיסק הקשיח שעליו מותקנת מערכת הקבצים של צומת Kubernetes לכל צומת. כברירת מחדל, ב-GKE נעשה שימוש בדיסקים קשיחים מאוזנים בגרסה 1.24 ואילך. אפשר גם לציין סוגים אחרים של Persistent Disk, כמו standard או SSD. מידע נוסף זמין במאמר בנושא אפשרויות אחסון.

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

היתרונות בשימוש בדיסק אתחול מסוג SSD

שימוש בדיסק מתמיד שמבוסס על SSD כדיסק אתחול לצמתים מספק כמה יתרונות מבחינת ביצועים:

  • לצמתים יש זמני אתחול מהירים יותר.
  • הקבצים הבינאריים והקבצים שמוגשים מהקונטיינרים זמינים לצומת מהר יותר. השימוש ב-NVMe יכול לשפר את הביצועים של עומסי עבודה שדורשים הרבה פעולות קלט/פלט, כמו אפליקציות להצגת אתרים שמארחות קבצים סטטיים או משימות אצווה קצרות שדורשות הרבה פעולות קלט/פלט.
  • הביצועים של קלט/פלט של קבצים שמאוחסנים במדיה המקומית של הצומת (שנחשפת דרך hostPath או emptyDirvolumes) יכולים להשתפר.

ציון סוג דיסק אתחול של הצומת

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

gcloud

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

הערך [DISK-TYPE] יכול להיות אחד מהערכים הבאים:

  • pd-balanced (ברירת המחדל בגרסה 1.24 ואילך)
  • pd-standard (ברירת המחדל בגרסה 1.23 או בגרסה ישנה יותר)
  • pd-ssd
  • hyperdisk-balanced

מידע נוסף זמין במאמר בנושא סוגי Persistent Disk.

gcloud container clusters create [CLUSTER_NAME] --disk-type [DISK_TYPE]

כדי ליצור מאגר צמתים באשכול קיים:

gcloud container node-pools create [POOL_NAME] --disk-type [DISK_TYPE]

לדוגמה, הפקודה הבאה יוצרת אשכול, example-cluster, עם סוג הדיסק המתמיד שמבוסס על SSD, ‏ pd-ssd:

gcloud container clusters create example-cluster --disk-type pd-ssd

המסוף

כדי לבחור את דיסק האתחול כשיוצרים את האשכול באמצעות Google Cloud המסוף:

  1. נכנסים לדף Create a Kubernetes cluster במסוף Google Cloud .

    מעבר אל יצירת אשכול Kubernetes

  2. מגדירים את האשכול לפי הצורך.

  3. בתפריט הניווט, מרחיבים את default-pool ולוחצים על Nodes (צמתים).

  4. ברשימה הנפתחת Boot disk type בוחרים סוג של Persistent Disk.

  5. לוחצים על יצירה.

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

  1. נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .

    מעבר אל Google Kubernetes Engine

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

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

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

  5. מגדירים את מאגר הצמתים לפי הצורך.

  6. בתפריט הניווט, לוחצים על צמתים.

  7. ברשימה הנפתחת Boot disk type בוחרים סוג של Persistent Disk.

  8. לוחצים על יצירה.

הגנה על דיסקים להפעלה של צמתים

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

אם עומסי העבודה שלכם משתמשים בנפחי אחסון מסוג configMap,‏ emptyDir או hostPath, יכול להיות שרכיבי ה-Pod יכתבו נתונים נוספים לדיסקים של אתחול הצמתים. כדי למנוע את זה, אפשר להגדיר את emptyDir כך שהוא יגובה על ידי tmpfs. הוראות מפורטות מופיעות במאמרי העזרה של Kubernetes. מכיוון שנפחי secret, ‏ downwardAPI ו-projected מגובים על ידי tmpfs, ‏ ה-Pods שמשתמשים בהם לא כותבים נתונים לדיסק האתחול של הצומת.

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

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

מניעת כתיבה של Pods לדיסקים של אתחול

כדי למנוע מ-Pods לכתוב נתונים ישירות לדיסק האתחול של הצומת, משתמשים באחת מהשיטות הבאות.

Policy Controller

‫Policy Controller היא תכונה של GKE Enterprise שמאפשרת להצהיר על מדיניות מותאמת אישית ולאכוף אותה בקנה מידה גדול באשכולות GKE בציים.

  1. התקנה של Policy Controller
  2. מגדירים אילוץ שמגביל את סוגי נפחי האחסון הבאים באמצעות תבנית האילוץ k8sPspVolumeTypes:

ההגבלה בדוגמה הבאה מגבילה את סוגי נפחי האחסון האלה בכל ה-Pods באשכול:

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sPSPVolumeTypes
metadata:
  name: deny-boot-disk-writes
spec:
  match:
    kinds:
    - apiGroups: [""]
      kinds: ["Pod"]
  parameters:
    volumes:
    - configMap
    - emptyDir
    - hostPath

בקרת כניסה של PodSecurity

בקרת הכניסה המובנית של Kubernetes PodSecurity מאפשרת לאכוף רמות שונות של תקני אבטחת ה-Pod במרחבי שמות ספציפיים או באשכול. המדיניות המוגבלת מונעת מ-Pods לכתוב לדיסק האתחול של הצומת.

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

הצפנה בניהול הלקוח

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

מגבלה של CMEK לדיסקים של אתחול צמתים היא שלא ניתן לשנות אותו אחרי יצירת מאגר הצמתים. כלומר:

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

מגבלות

לפני שמגדירים דיסק אתחול בהתאמה אישית, כדאי להביא בחשבון את המגבלות הבאות:

  • סדרות המכונות C3,‏ G2 ו-G4 לא תומכות בסוג דיסק האתחול של הצומת pd-standard.

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