יצירת נפחים ב-Kubernetes

במאמר הזה מוסבר איך ליצור משאבי נפח באשכול Google Kubernetes Engine ‏ (GKE).

אתם יכולים ליצור Kubernetes Volumes ולהגדיר אותם ב-Deployments כדי לנהל את האופן שבו האפליקציות המאורזות מאחסנות ומשתפות נתונים באשכול Kubernetes. אפשר ליצור נפחים ב-Kubernetes כדי לפרוס מיקרו-שירותים (microservices) עם שמירת מצב. בנוסף, זה מגדיל את מהירות הפיתוח כי אתם מנהלים את נתוני האפליקציה באופן עקבי.

המסמך הזה מיועד למפתחים ולאדמינים שמנהלים אחסון של קונטיינרים ב-GKE. כדי לקבל מידע נוסף על תפקידים נפוצים ועל משימות לדוגמה שאנחנו מתייחסים אליהן ב Cloud de Confiance by S3NS תוכן, אפשר לעיין במאמר תפקידים נפוצים של משתמשי GKE ומשימות.

שימוש ב-Volumes עם Deployments

אפשר ליצור פריסת Pods שבה כל Pod מכיל נפח אחסון אחד או יותר. מניפסט הפריסה הבא מתאר פריסה של שלושה Pods שלכל אחד מהם יש emptyDir Volume. מידע נוסף מופיע במאמר יצירת פריסה.

בדוגמה הזו:

  • השדה metadata: name מציין פריסה בשם volumes-example-deployment.
  • מפרט תבנית ה-Pod כולל שדה volumes שמתאר נפח מסוג emptyDir בשם cache-volume.
  • מפרט המאגר כולל שדה volumeMounts: שמציין שהנפח שנקרא cache-volume מותקן בנתיב /cache.
  • קובץ המניפסט נקרא volumes-demo.yaml.
apiVersion: apps/v1
kind: Deployment
metadata:
 name: volumes-example-deployment
spec:
 replicas: 3
 selector:
  matchLabels:
   app: demo
 template:
  metadata:
   labels:
    app: demo
  spec:
   containers:
   - name: test-container
    image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
    volumeMounts:
    - mountPath: /cache
     name: cache-volume
   volumes:
    - name: cache-volume
     emptyDir: {}

כדי ליצור פריסה מקובץ המניפסט הזה, מריצים את הפקודה הבאה:

kubectl apply -f volumes-demo.yaml

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

kubectl describe pods volumes-example-deployment

הפקודה הזו מדפיסה מידע על כל אחד משלושת ה-Pods ב-Deployment. בפלט אפשר לראות שלכל Pod יש קונטיינר, test-container, עם הנתיב /cachemount:

Mounts:
  /cache from cache-volume (rw)

בפלט אפשר לראות שכל Pod מכיל נפח אחסון בשם cache-volume:

Volumes:
  cache-volume:
    Type:    EmptyDir (a temporary directory that shares a pod's lifetime)

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