סקירה כללית
אם כבר יש לכם נפח אחסון של AWS Elastic Block Store (EBS) שאתם רוצים לייבא ל-GKE ב-AWS, אתם יכולים ליצור אובייקט PersistentVolume (PV) ולשריין אותו ל-PersistentVolumeClaim (PVC) ספציפי.
בדף הזה מוסבר איך ליצור PV באמצעות נפח EBS קיים שמלא בנתונים, ואיך להשתמש ב-PV ב-Pod.
לפני שמתחילים
- בספריית
anthos-aws, משתמשים ב-anthos-gkeכדי להחליף הקשר לאשכול המשתמשים. מחליפים את CLUSTER_NAME בשם אשכול המשתמש.cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
יצירת PersistentVolume עבור נפח EBS קיים
אפשר לייבא נפח EBS קיים על ידי ציון PV חדש.
מעתיקים את קוד ה-YAML הבא לקובץ בשם
existing-volume.yamlומחליפים את הערכים כדי להשלים את ההגדרה:- volume-capacity: גודל הכרך. לדוגמה,
30Gi. מידע נוסף על הגדרת נפח אחסון ב-Kubernetes זמין במאמר בנושא משמעות הזיכרון. storage-class-name: השם של StorageClass שמקצה את נפח האחסון. לדוגמה, אפשר להשתמש ב-
standard-rwoשמוגדר כברירת מחדל.ebs-id: EBS volume id. לדוגמה,
vol-05786ec9ec9526b67.fs-type: מערכת הקבצים של אמצעי האחסון. לדוגמה,
ext4.zone: אזור הזמינות ב-AWS שמארח את נפח ה-EBS. לדוגמה,
us-east-1c.
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- volume-capacity: גודל הכרך. לדוגמה,
החלת ה-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 ומחליפים את הערכים כדי להשלים את ההגדרה:
- storage-class: השם של StorageClass מ-PersistentVolume שיצרתם קודם. לדוגמה,
standard-rwo. - volume-name: השם של אמצעי האחסון שיצרתם קודם.
- volume-capacity: גודל הכרך. לדוגמה,
30Gi.
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: my-pvc
החלת ה-YAML על האשכול
kubectl apply -f nginx.yamlבודקים את הסטטוס של מופע Nginx עם
kubectl describe. הפלט צריך לכלול את הערךRunningשלSTATUS.kubectl describe pod web-server
שימוש בכרכים מוצפנים של EBS
אם אמצעי האחסון של EBS מוצפן באמצעות AWS Key Management Service (KMS), צריך להעניק לתפקיד AWS IAM של מישור הבקרה של GKE on AWS גישה למפתח KMS.
כדי לקבל את שם תפקיד ה-IAM ב-AWS, מבצעים את השלבים הבאים:
עוברים לספרייה עם ההגדרה של GKE ב-AWS. יצרתם את הספרייה הזו כשהתקנתם את שירות הניהול.
cd anthos-aws
בוחרים אם יצרתם את סביבת GKE ב-AWS באמצעות הכלי
anthos-gkeאו אם יצרתם את פרופילי AWS IAM באופן ידני.הכלי anthos-gke
משתמשים בפקודה
terraform outputומחפשים את הערך שלiamInstanceProfile.terraform output | grep iamInstanceProfileאם יצרתם את סביבת GKE ב-AWS באמצעות הכלי
anthos- gke, הפלט ייראה כך:iamInstanceProfile: gke-CLUSTER_ID-controlplane iamInstanceProfile: gke-CLUSTER_ID-nodepoolכאשר CLUSTER_ID הוא המזהה של האשכול. מעתיקים את הערך של
gke-CLUSTER_ID-controlplaneלשלב הבא.נוצר באופן ידני
בודקים את הפלט של
terraform outputבאמצעות הפקודה הבאה:terraform output | lessגוללים בפלט ומחפשים את iamInstanceProfile אחרי ההגדרה של AWSCluster.
kind: AWSCluster metadata: name: cluster-0 spec: ... controlPlane: ... iamInstanceProfile: INSTANCE_PROFILE_NAMEמעתיקים את הערך של
INSTANCE_PROFILE_NAMEלשלב הבא.כדי להעניק למישור הבקרה גישה לנפחי ה-EBS, צריך להוסיף את
gke-xxxxxx-controlplaneפרופיל ה-IAM של AWS כמשתמש מפתח למפתח ה-AWS KMS שמשמש להצפנת נפח ה-EBS.
המאמרים הבאים
- אפשר להשתמש במנהלי התקנים נוספים לאחסון עם GKE ב-AWS.