Mengonfigurasi Distributed Cloud untuk Symcloud Storage

Secara default, workload yang berjalan di satu node rak Google Distributed Cloud terhubung tidak dapat mengakses penyimpanan lokal node rak Distributed Cloud terhubung lainnya. Namun, Anda dapat mengonfigurasi rak yang terhubung ke Distributed Cloud untuk menggunakan Rakuten Symcloud Storage, yang merupakan solusi pihak ketiga yang berfungsi sebagai lapisan abstraksi penyimpanan lokal di setiap node yang terhubung ke Distributed Cloud dan membuat penyimpanan lokalnya tersedia untuk beban kerja yang berjalan di node lain yang terhubung ke Distributed Cloud. Symcloud Storage adalah opsi penyimpanan default dan satu-satunya di server yang terhubung ke Google Distributed Cloud.

Symcloud Storage di-deploy dari Google Cloud Marketplace dan tunduk pada persyaratan yang dinyatakan di dalamnya. Google memberikan dukungan terbatas untuk penggunaan Symcloud Storage dengan Distributed Cloud yang terhubung dan dapat menghubungi penyedia pihak ketiga untuk mendapatkan bantuan. Update software untuk Symcloud Storage disertakan dalam update software Distributed Cloud yang terhubung.

Kelas Penyimpanan Symcloud

Bagian ini menjelaskan class penyimpanan yang dapat diaktifkan Symcloud Storage di cluster yang terhubung Distributed Cloud Anda. Symcloud Storage di Distributed Cloud yang terhubung tidak mendukung robin-rwxkelas penyimpanan maupun volume mode sistem file RWX yang dikonfigurasi kustom. Untuk mengetahui informasi selengkapnya tentang class Symcloud Storage, lihat Menggunakan Robin CNS di Kubernetes.

Kelas penyimpanan robin

Kelas penyimpanan robin adalah kelas penyimpanan Read Write-Once (RWO) dasar. Contoh berikut mengilustrasikan pembuatan instance class:

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

Kelas penyimpanan robin-immediate

Class penyimpanan robin-immediate sama dengan robin, kecuali bahwa volume persisten dibuat segera setelah membuat klaim volume persisten yang sesuai. Contoh berikut mengilustrasikan instansiasi class:

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

Kelas penyimpanan robin-repl-3

robin-repl-3 adalah class penyimpanan RWO dengan tiga replika yang mencakup beberapa node Distributed Cloud. Contoh berikut mengilustrasikan pembuatan instance class:

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

Prasyarat

Sebelum memulai, selesaikan langkah-langkah berikut:

  1. Konfigurasi logging dan pemantauan untuk project yang terhubung ke Distributed Cloud target.
  2. Buat cluster Distributed Cloud terhubung target.
  3. Konfigurasi jaringan Distributed Cloud Anda sehingga Pod di cluster terhubung Distributed Cloud target dapat menjangkau pusat data Google Cloud .
  4. Ikat setiap volume persisten local-block di setiap node Distributed Cloud yang tidak ingin Anda abstrakkan oleh Symcloud Storage. Jika Anda melepaskan volume persisten local-block yang terikat, menginstal Symcloud Storage akan menghapus konten volume persisten tersebut. Untuk mengetahui petunjuknya, lihat Binding di dokumentasi Kubernetes.

Menginstal Symcloud Storage di node yang terhubung ke Distributed Cloud

Untuk menginstal Symcloud Storage di node yang terhubung ke Distributed Cloud, selesaikan langkah-langkah berikut:

  1. Gunakan perintah berikut untuk menerapkan lisensi Symcloud Storage ke cluster Anda. Ganti LICENSE_FILE dengan jalur dan nama lengkap file lisensi Symcloud Storage.

    kubectl apply -f LICENSE_FILE -n robin-admin
    
  2. Gunakan perintah berikut untuk memverifikasi status layanan RobinCluster dan semua node Symcloud Storage:

    kubectl describe robinclusters -n robinio
    

    Perintah ini akan menampilkan output yang mirip dengan berikut ini:

    [...]
    Status:
    [...]
    Phase:              Ready
    robin_node_status:
    [...]
     Status:           Ready
    [...]
     Status:           Ready
    [...]
     Status:           Ready
    [...]
    

    Status yang diharapkan untuk layanan dan node adalah Ready.

Menetapkan Symcloud Storage sebagai kelas penyimpanan default

Gunakan perintah berikut untuk menetapkan Symcloud Storage sebagai class penyimpanan default di cluster yang terhubung Distributed Cloud Anda. Ganti STORAGE_CLASS dengan salah satu kelas Symcloud Storage.

kubectl patch storageclass STORAGE_CLASS -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

Untuk mengetahui informasi selengkapnya tentang cara menetapkan kelas penyimpanan default, lihat Mengubah StorageClass default dalam dokumentasi Kubernetes.

Mengonfigurasi volume Penyimpanan Symcloud yang diabstraksi untuk workload

Bagian ini memberikan contoh cara menggunakan class penyimpanan Symcloud untuk mengonfigurasi penyimpanan yang diabstraksi untuk workload yang terhubung ke Distributed Cloud. Untuk mengetahui detail selengkapnya tentang cara mengonfigurasi volume Symcloud Storage, lihat Menggunakan Robin CNS di Kubernetes.

Mengonfigurasi volume RWO ext4 dalam mode sistem file

Contoh berikut mengilustrasikan cara mengonfigurasi klaim volume persisten untuk volume RWO dalam mode sistem file dengan sistem file ext4. Ganti STORAGE_CLASS dengan salah satu kelas Symcloud Storage.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: rwo-fs-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: STORAGE_CLASS

Mengonfigurasi volume RWO dalam mode blok

Contoh berikut mengilustrasikan cara mengonfigurasi klaim volume persisten untuk volume RWO dalam mode blok. Ganti STORAGE_CLASS dengan salah satu kelas Symcloud Storage.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: rwo-block-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: STORAGE_CLASS
  volumeMode: Block

Mengubah konfigurasi volume yang ada

Contoh berikut mengilustrasikan cara mengubah konfigurasi volume RWO yang dikompresi LZ4 Symcloud Storage yang ada menggunakan anotasi. GantiSTORAGE_CLASS dengan salah satu kelas Symcloud Storage.

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

Contoh berikut mengilustrasikan cara mengubah konfigurasi volume RWO Symcloud Storage yang ada dengan sistem file xfs menggunakan anotasi. GantiSTORAGE_CLASS dengan salah satu kelas Symcloud Storage.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: rwo-xfs-pvc
  annotations:
    robin.io/fstype: xfs
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: STORAGE_CLASS

Mengonfigurasi klien CLI Symcloud Storage

Symcloud Storage menyediakan klien antarmuka command line (CLI) yang dapat Anda gunakan untuk mengelola konfigurasi Symcloud Storage. Untuk mengonfigurasi klien di cluster yang terhubung Distributed Cloud, selesaikan langkah-langkah berikut:

  1. Dapatkan jalur image Symcloud Storage yang digunakan oleh instance layanan RobinCluster yang di-deploy di cluster yang terhubung ke Distributed Cloud Anda dan tetapkan variabel lingkungan Anda sebagai berikut:

    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"
    
  2. Buat resource robincli dengan konten berikut:

    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"
    

    Ganti ROBIN_CNS_IMAGE dengan jalur repositori lengkap dan nama image yang Anda peroleh di langkah 1.

  3. Terapkan resource robincli ke cluster Distributed Cloud terhubung Anda.

  4. Saat penginstalan awal, Symcloud Storage membuat secret default-admin-user di namespace robinio dengan sandi acak. Gunakan perintah berikut untuk mendapatkan kredensial login ini:

    1. Mendapatkan nama pengguna:

      kubectl -n robinio get secret default-admin-user -o jsonpath='{.data.username}' | base64 -d
      
    2. Dapatkan sandi:

       
      kubectl -n robinio get secret default-admin-user -o jsonpath='{.data.password}' | base64 -d
      
  5. Login ke Pod yang baru dibuat dan jalankan klien:

    kubectl exec -it robincli -- bash
    

Batasan Penyimpanan Symcloud

Saat menggunakan Symcloud Storage dengan Distributed Cloud terhubung, Anda hanya dapat mencapai ketersediaan tinggi jika cluster Distributed Cloud terhubung Anda terdiri dari tiga atau lebih node Distributed Cloud terhubung.