ייבוא נפח EBS קיים

סקירה כללית

אם כבר יש לכם נפח Elastic Block Store‏ (EBS) של AWS שאתם רוצים לייבא ל-GKE ב-AWS, אתם יכולים ליצור אובייקט PersistentVolume‏ (PV) ולשמור אותו ל-PersistentVolumeClaim‏ (PVC) ספציפי.

בדף הזה מוסבר איך ליצור PV באמצעות נפח EBS קיים שמלא בנתונים, ואיך להשתמש ב-PV ב-Pod. הדף הזה מיועד לאופרטורים ולמומחי אחסון שרוצים להגדיר ולנהל אחסון. מידע נוסף על תפקידים נפוצים ומשימות לדוגמה שאנחנו מתייחסים אליהם ב Google Cloud תוכן, זמין במאמר תפקידים נפוצים של משתמשים ומשימות ב-GKE.

לפני שמתחילים

לפני שמבצעים את השלבים האלה, צריך:

שימוש בכרכים מוצפנים של EBS

אם אמצעי האחסון של EBS מוצפן באמצעות AWS Key Management Service‏ (KMS), צריך להעניק לתפקיד AWS IAM של מישור הבקרה של GKE on AWS גישה למפתח KMS.

כדי להעניק למישור הבקרה גישה למפתח:

  1. מחפשים את השם של תפקיד מישור הבקרה באשכול.

  2. בוחרים את מפתח ה-AWS KMS שמשמש להצפנת נפח ה-EBS, ומוסיפים את תפקיד מישור הבקרה כמשתמש מפתח לפי ההוראות במאמר מתן הרשאה למשתמשי מפתח להשתמש במפתח ה-KMS.

יצירת PersistentVolume עבור נפח EBS קיים

אפשר לייבא נפח EBS קיים על ידי ציון PV חדש והוספתו לאשכול.

  1. מעתיקים את קוד ה-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:
              - ZONE
    
    Replace 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.

  2. החלת ה-YAML על האשכול

    kubectl apply -f existing-volume.yaml
    
  3. אישור יצירת ה-PV

    kubectl describe pv volume-name
    

    הפלט של הפקודה הזו כולל את הסטטוס של ה-PV.

שימוש בנפח אחסון עם PersistentVolumeClaim ו-Pod

אחרי שמייבאים את אמצעי האחסון, אפשר ליצור PVC ו-Pod שמצורף ל-PVC.

  1. קובץ ה-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_NAME
    • VOLUME_CAPACITY
    • PVC_NAME: השם של ה-PVC – לדוגמה, my-pvc.
  2. החלת ה-YAML על האשכול

    kubectl apply -f nginx.yaml
    
  3. בודקים את הסטטוס של מופע Nginx עם kubectl describe. הפלט צריך לכלול את הערך Running של STATUS.

    kubectl describe pod web-server
    

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