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

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

סקירה כללית

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

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

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

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

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

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

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

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. לוחצים על הוספת מאגר צמתים.

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

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

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

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

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

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

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

כברירת מחדל, 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

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

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

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

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

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

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

מגבלות

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

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

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