כברירת מחדל, לעומסי עבודה שפועלים בצומת אחד של Google Distributed Cloud Rack אין גישה לאחסון המקומי של צומת אחר של Distributed Cloud Rack. עם זאת, אתם יכולים להגדיר את Google Distributed Cloud Racks כך שישתמשו ב-Rakuten Symcloud Storage, שהוא פתרון צד שלישי שפועל כשכבת הפשטה של אחסון מקומי בכל צומת של Distributed Cloud, ומאפשר לעומסי עבודה שפועלים בצמתים אחרים של Distributed Cloud לגשת לאחסון המקומי. Symcloud Storage היא אפשרות האחסון שמוגדרת כברירת מחדל וגם האפשרות היחידה ב-Google Distributed Cloud Servers.
שירות Symcloud Storage נפרס מ-Google Cloud Marketplace והוא כפוף לתנאים שמפורטים שם. Google מספקת תמיכה מוגבלת בשימוש ב-Symcloud Storage עם Distributed Cloud, ויכול להיות שהיא תפנה לספק הצד השלישי לקבלת עזרה. עדכוני התוכנה של Symcloud Storage כלולים בעדכוני התוכנה של Distributed Cloud.
סוגי אחסון (storage classes) ב-Symcloud
בקטע הזה מתוארים סוגי האחסון ש-Symcloud Storage יכול להפעיל באשכול Distributed Cloud. Symcloud Storage ב-Distributed Cloud לא תומך בסוג האחסון robin-rwx או בכרכים של מערכת קבצים במצב RWX עם הגדרה בהתאמה אישית.
מידע נוסף על סוגי אחסון של Symcloud מופיע במאמר שימוש ב-Robin CNS ב-Kubernetes.
סוג אחסון (storage class)robin
סוג האחסון robin הוא סוג אחסון בסיסי מסוג Read Write-Once (RWO). בדוגמה הבאה מוצגת יצירה של מופע של המחלקה:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: robin
labels:
app.kubernetes.io/instance: robin
app.kubernetes.io/managed-by: robin.io
app.kubernetes.io/name: robin
provisioner: robin
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer
סוג אחסון (storage class)robin-immediate
מחלקת האחסון robin-immediate זהה למחלקה robin, אלא שנפח האחסון המתמיד נוצר מיד אחרי שנוצרת דרישת נפח האחסון המתמיד התואמת. בדוגמה הבאה מוצגת יצירה של מופע של המחלקה:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: robin-immediate
labels:
app.kubernetes.io/instance: robin
app.kubernetes.io/managed-by: robin.io
app.kubernetes.io/name: robin
provisioner: robin
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: Immediate
סוג אחסון (storage class)robin-repl-3
robin-repl-3 הוא סוג אחסון RWO עם שלוש רפליקות שמתפרסות על פני כמה צמתים של Distributed Cloud. בדוגמה הבאה מוצגת יצירה של מופע של המחלקה:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: robin-repl-3
labels:
app.kubernetes.io/instance: robin
app.kubernetes.io/managed-by: robin.io
app.kubernetes.io/name: robin
provisioner: robin
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer
parameters:
replication: "3"
faultdomain: host
דרישות מוקדמות
לפני שמתחילים, צריך לבצע את השלבים הבאים:
- מגדירים רישום ביומן ומעקב בפרויקט בענן היעד של Distributed Cloud.
- יצירת אשכול יעד של Distributed Cloud.
- מגדירים את הרשת של Distributed Cloud כך ש-Pods באשכול היעד של Distributed Cloud יוכלו להגיע למרכז הנתונים. Google Cloud
- צריך לקשר כל
local-blockנפח אחסון קבוע בכל צומת של Distributed Cloud שלא רוצים ש-Symcloud Storage יבצע לו הפשטה. אם מבטלים את הקישור שלlocal-blockנפח אחסון מתמיד מקושר, התקנת Symcloud Storage מוחקת את התוכן של נפח האחסון המתמיד הזה. הוראות מפורטות זמינות במאמר בנושא Binding במאמרי העזרה של Kubernetes.
התקנת Symcloud Storage בצומת של Distributed Cloud
כדי להתקין את Symcloud Storage בצומת של Distributed Cloud, מבצעים את השלבים הבאים:
כדי להחיל את רישיון Symcloud Storage על האשכול, משתמשים בפקודה הבאה. מחליפים את
LICENSE_FILEבנתיב המלא ובשם של קובץ הרישיון של Symcloud Storage.kubectl apply -f LICENSE_FILE -n robin-admin
כדי לבדוק את הסטטוס של שירות
RobinClusterושל כל הצמתים של Symcloud Storage, משתמשים בפקודה הבאה:kubectl describe robinclusters -n robinio
הפקודה מחזירה פלט שדומה לזה:
[...] Status: [...] Phase: Ready robin_node_status: [...] Status: Ready [...] Status: Ready [...] Status: Ready [...]הסטטוס הצפוי של השירות והצמתים הוא
Ready.
הגדרת Symcloud Storage כסוג האחסון (storage class) שמוגדר כברירת מחדל
כדי להגדיר את Symcloud Storage כסוג האחסון שמוגדר כברירת מחדל באשכול Distributed Cloud, משתמשים בפקודה הבאה: מחליפים את STORAGE_CLASS באחד מסוגי האחסון של Symcloud.
kubectl patch storageclass STORAGE_CLASS -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
מידע נוסף על הגדרת סוג האחסון שמוגדר כברירת מחדל מופיע במאמר שינוי סוג האחסון שמוגדר כברירת מחדל במסמכי Kubernetes.
הגדרת נפחי אחסון מופשטים של Symcloud לעומסי עבודה
בקטע הזה מפורטות דוגמאות לשימוש בסוגי אחסון של Symcloud כדי להגדיר אחסון מופשט לעומסי העבודה של Distributed Cloud. פרטים נוספים על הגדרת נפחי אחסון של Symcloud זמינים במאמר בנושא שימוש ב-Robin CNS ב-Kubernetes.
הגדרת נפח אחסון מסוג ext4 RWO במצב מערכת קבצים
בדוגמה הבאה מוסבר איך להגדיר בקשה לנפח אחסון קבוע לנפח אחסון מסוג RWO במצב מערכת קבצים עם מערכת הקבצים ext4. מחליפים את STORAGE_CLASS באחד מסוגי האחסון של Symcloud.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: rwo-fs-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: STORAGE_CLASS
הגדרת נפח RWO במצב בלוק
בדוגמה הבאה מוסבר איך להגדיר בקשה לנפח אחסון קבוע לנפח RWO במצב חסימה. מחליפים את STORAGE_CLASS באחד מסוגי האחסון של Symcloud.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: rwo-block-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: STORAGE_CLASS
volumeMode: Block
שינוי ההגדרה של אמצעי אחסון קיים
בדוגמה הבאה אפשר לראות איך משנים את ההגדרה של נפח RWO דחוס ב-LZ4 ב-Symcloud Storage באמצעות הערות.
מחליפים אתSTORAGE_CLASS באחד מסוגי האחסון של Symcloud.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: compressed-rwo-fs-pvc
annotations:
robin.io/compression: LZ4
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: STORAGE_CLASS
הדוגמה הבאה ממחישה איך לשנות את התצורה של נפח RWO קיים ב-Symcloud Storage עם מערכת הקבצים xfs באמצעות הערות.
מחליפים אתSTORAGE_CLASS באחד מסוגי האחסון של Symcloud.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: rwo-xfs-pvc
annotations:
robin.io/fstype: xfs
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: STORAGE_CLASS
הגדרת לקוח ה-CLI של Symcloud Storage
Symcloud Storage מספק לקוח של ממשק שורת פקודה (CLI) שבו אפשר להשתמש כדי לנהל את ההגדרות של Symcloud Storage. כדי להגדיר את הלקוח באשכול Distributed Cloud, מבצעים את השלבים הבאים:
מקבלים את נתיב התמונה של Symcloud Storage שמשמש את מופע השירות
RobinClusterשנפרס באשכול Distributed Cloud, ומגדירים את משתני הסביבה באופן הבא:image_robin=$(kubectl get robincluster -o jsonpath='{.items[].spec.image_robin}') image_registry_path=$(kubectl get robincluster -o jsonpath='{.items[].spec.image_registry_path}') ROBIN_CNS_IMAGE="$image_registry_path/$image_robin"יוצרים משאב
robincliעם התוכן הבא:kind: Deployment apiVersion: apps/v1 metadata: name: robincli namespace: default labels: name: robincli spec: replicas: 1 selector: matchLabels: name: robincli template: metadata: annotations: product: robin labels: name: robincli spec: containers: - name: robincli image: ROBIN_CNS_IMAGE workingDir: /root command: ["/bin/bash","-c","mkdir -p /root/.robin; ln -s -t /usr/lib/python3.7/site-packages/ /opt/robin/current/python3/site-packages/robincli /opt/robin/current/python3/site-packages/stormgr_def.py /opt/robin/current/python3/site-packages/stormgr_lib.py; /opt/robin/current/bin/robin client add-context robin-master.robinio --set-current; while true; do sleep 10000; done"] resources: requests: memory: "10Mi" cpu: "100m"מחליפים את
ROBIN_CNS_IMAGEבנתיב המלא של המאגר ובשם של האימג' שקיבלתם בשלב 1.מחילים את משאב
robincliעל אשכול Distributed Cloud.במהלך ההתקנה הראשונית, Symcloud Storage יוצר סוד במרחב השמות
robinioעם סיסמה אקראית.default-admin-userכדי לקבל את פרטי הכניסה האלה, משתמשים בפקודות הבאות:משיגים את שם המשתמש:
kubectl -n robinio get secret default-admin-user -o jsonpath='{.data.username}' | base64 -dמשיגים את הסיסמה:
kubectl -n robinio get secret default-admin-user -o jsonpath='{.data.password}' | base64 -d
מתחברים ל-Pod שנוצר ומריצים את הלקוח:
kubectl exec -it robincli -- bash
המגבלות של Symcloud Storage
כשמשתמשים ב-Symcloud Storage עם Distributed Cloud, אפשר להשיג זמינות גבוהה רק אם אשכול Distributed Cloud מורכב משלושה צמתים או יותר של Distributed Cloud.