סקירה כללית
אם כבר יש לכם נפח Elastic Block Store (EBS) של AWS שאתם רוצים לייבא ל-GKE ב-AWS, אתם יכולים ליצור אובייקט PersistentVolume (PV) ולשמור אותו ל-PersistentVolumeClaim (PVC) ספציפי.
בדף הזה מוסבר איך ליצור PV באמצעות נפח EBS קיים שמלא בנתונים, ואיך להשתמש ב-PV ב-Pod. הדף הזה מיועד לאופרטורים ולמומחי אחסון שרוצים להגדיר ולנהל אחסון. מידע נוסף על תפקידים נפוצים ומשימות לדוגמה שאנחנו מתייחסים אליהם ב Google Cloud תוכן, זמין במאמר תפקידים נפוצים של משתמשים ומשימות ב-GKE.
לפני שמתחילים
לפני שמבצעים את השלבים האלה, צריך:
- יוצרים אשכול GKE ב-AWS ומגדירים גישה אליו באמצעות
kubectl. - התחברות לאשכול ואימות שלו
שימוש בכרכים מוצפנים של EBS
אם אמצעי האחסון של EBS מוצפן באמצעות AWS Key Management Service (KMS), צריך להעניק לתפקיד AWS IAM של מישור הבקרה של GKE on AWS גישה למפתח KMS.
כדי להעניק למישור הבקרה גישה למפתח:
מחפשים את השם של תפקיד מישור הבקרה באשכול.
בוחרים את מפתח ה-AWS KMS שמשמש להצפנת נפח ה-EBS, ומוסיפים את תפקיד מישור הבקרה כמשתמש מפתח לפי ההוראות במאמר מתן הרשאה למשתמשי מפתח להשתמש במפתח ה-KMS.
יצירת PersistentVolume עבור נפח EBS קיים
אפשר לייבא נפח EBS קיים על ידי ציון PV חדש והוספתו לאשכול.
מעתיקים את קוד ה-YAML הבא לקובץ בשם
existing-volume.yaml:apiVersion: v1 kind: PersistentVolume metadata: name: VOLUME_NAME annotations: pv.kubernetes.io/provisioned-by: ebs.csi.aws.com spec: capacity: storage: VOLUME_CAPACITY accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: STORAGE_CLASS_NAME claimRef: name: my-pvc namespace: default csi: driver: ebs.csi.aws.com volumeHandle: EBS_VOLUME_ID fsType: FILE_SYSTEM_TYPE nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: topology.ebs.csi.aws.com/zone operator: In values: - ZONEReplace the following:-
VOLUME_NAME: השם של אמצעי האחסון. -
VOLUME_CAPACITY: גודל הכרך – לדוגמה,30G. מידע נוסף על הגדרת נפח אחסון ב-Kubernetes זמין במאמר בנושא משמעות הזיכרון.
STORAGE_CLASS_NAME: השם של StorageClass שמקצה את נפח האחסון – לדוגמה,standard-rwo.
EBS_VOLUME_ID: מזהה הנפח של EBS. לדוגמה,vol-05786ec9ec9526b67.
FS_TYPE: מערכת הקבצים של אמצעי האחסון. לדוגמה,ext4.
ZONE: אזור הזמינות ב-AWS שמארח את נפח ה-EBS – לדוגמה,us-east-1c.
-
החלת ה-YAML על האשכול
kubectl apply -f existing-volume.yamlאישור יצירת ה-PV
kubectl describe pv volume-nameהפלט של הפקודה הזו כולל את הסטטוס של ה-PV.
שימוש בנפח אחסון עם PersistentVolumeClaim ו-Pod
אחרי שמייבאים את אמצעי האחסון, אפשר ליצור PVC ו-Pod שמצורף ל-PVC.
קובץ ה-YAML שבהמשך יוצר PVC ומצרף אותו ל-Pod שמריץ את שרת האינטרנט Nginx. מעתיקים אותו לקובץ בשם
nginx.yaml:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: storageClassName: STORAGE_CLASS_NAME volumeName: VOLUME_NAME accessModes: - ReadWriteOnce resources: requests: storage: VOLUME_CAPACITY --- apiVersion: v1 kind: Pod metadata: name: web-server spec: containers: - name: web-server image: nginx volumeMounts: - mountPath: /var/lib/www/html name: data volumes: - name: data persistentVolumeClaim: claimName: PVC_NAMEמחליפים את מה שכתוב בשדות הבאים:
-
STORAGE_CLASS: השם של StorageClass מ-PersistentVolume שיצרתם קודם – לדוגמה,standard-rwo. VOLUME_NAMEVOLUME_CAPACITY-
PVC_NAME: השם של ה-PVC – לדוגמה,my-pvc.
-
החלת ה-YAML על האשכול
kubectl apply -f nginx.yamlבודקים את הסטטוס של מופע Nginx עם
kubectl describe. הפלט צריך לכלול את הערךRunningשלSTATUS.kubectl describe pod web-server
המאמרים הבאים
- אפשר להשתמש במנהלי התקנים נוספים לאחסון עם GKE ב-AWS.