Mengonfigurasi penyimpanan yang terhubung dengan Distributed Cloud

Halaman ini menjelaskan cara mengonfigurasi penyimpanan yang terhubung ke Configure Distributed Cloud, termasuk:

Mengonfigurasi Distributed Cloud yang terhubung 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.

Rilis Distributed Cloud yang terhubung ini dilengkapi dan mendukung Symcloud Storage 5.4.10. Tidak ada versi Symcloud Storage lain yang didukung dalam rilis Distributed Cloud yang terhubung ini.

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.

Menghapus node yang menggunakan Symcloud Storage dari cluster

Replika volume Symcloud Storage disimpan di node pekerja dalam cluster yang terhubung ke Distributed Cloud Anda. Jika Anda menghapus node dari cluster, data volume Symcloud Storage yang disimpan di node tersebut tidak akan tersedia. Untuk mencegah hal ini, Anda harus melakukan salah satu tindakan berikut:

  • Jika Anda menghapus seluruh cluster, hapus beban kerja dan volume persisten Symcloud Storage yang sesuai sebelum Anda menghapus cluster itu sendiri.

  • Jika Anda menghapus node tertentu dari cluster, Anda harus memigrasikan data beban kerja yang disimpan di node tersebut sebelum menghapus node tersebut dari cluster. Untuk mengetahui petunjuknya, lihat Mengosongkan volume dari disk.

Mengonfigurasi skema penyimpanan lokal

Skema penyimpanan adalah pengelompokan logis dari satu atau beberapa partisi. Setiap partisi adalah unit penyimpanan yang independen secara logis. Partisi dibuat di cluster Anda secara berurutan hingga ruang disk fisik habis. Setiap skema penyimpanan memiliki nama unik yang mengidentifikasinya.

Untuk membuat skema penyimpanan lokal baru untuk cluster yang terhubung ke Distributed Cloud, Anda harus memintanya dari Google. Setelah menguji skema dan membuatnya di cluster, Anda dapat menerapkannya menggunakan CLI gcloud.

Anda tidak dapat mengubah skema setelah diterapkan ke cluster. Untuk mengubah skema yang ada, Anda harus meminta penghapusan skema yang ada dari Google, lalu meminta pembuatan skema baru untuk menggantikannya.

Menentukan partisi untuk skema penyimpanan lokal

Sebelum dapat meminta skema penyimpanan lokal, Anda harus menentukan partisi untuk skema tersebut terlebih dahulu.

Partisi memiliki properti berikut:

  • Ukuran. Anda dapat menentukan ukuran partisi dalam byte biner, atau membuatnya menggunakan semua ruang yang tersisa di disk lokal.
  • Jenis. Anda dapat mengonfigurasi partisi sebagai volume persisten (PV) Kubernetes atau volume lokal Linux di disk lokal.
  • Mode. Anda dapat mengonfigurasi volume yang disimpan di partisi sebagai volume blok atau volume sistem file. Untuk partisi volume persisten, kelas penyimpanan partisi masing-masing adalah local-block atau local-disks. Untuk partisi volume lokal, Anda dapat menentukan titik pemasangan dan pengikatan untuk sistem file yang disertakan.

Meminta skema penyimpanan lokal

Untuk meminta skema penyimpanan lokal baru untuk cluster yang terhubung ke Distributed Cloud, hubungi Dukungan Google dan berikan ukuran, jenis, mode, dan, secara opsional, titik pemasangan dan pengikatan untuk setiap partisi yang ingin Anda buat dalam skema.

Saat kami menerima permintaan Anda, kami menjalankan serangkaian pengujian untuk memastikan keandalan skema, lalu membuatnya di cluster yang terhubung ke Distributed Cloud Anda.

Skema penyimpanan lokal default

Distributed Cloud Connected dilengkapi dengan skema penyimpanan lokal default berikut:

  • default_control_plane_node. Skema ini menentukan partisi berikut:

    • Partisi volume lokal 100 GB dalam mode sistem file.
    • Partisi volume persisten dalam mode blok yang menempati ruang disk kosong yang tersisa.
  • default_worker_node. Skema ini menentukan partisi volume persisten 410 GB dalam mode blok.

Menerapkan skema penyimpanan lokal ke cluster

Untuk menerapkan skema penyimpanan lokal ke cluster yang terhubung ke Distributed Cloud, lakukan salah satu hal berikut:

  • Untuk menerapkan skema penyimpanan lokal ke node bidang kontrol cluster, gunakan flag --control-plane-node-storage-schema saat membuat cluster. Untuk mengetahui informasi selengkapnya, lihat Membuat cluster.

  • Untuk menerapkan skema penyimpanan lokal ke node pekerja cluster, gunakan --node-storage-schema saat membuat node pool untuk cluster. Untuk mengetahui informasi selengkapnya, lihat Membuat node pool.

Distributed Cloud connected membuat partisi yang ditentukan dalam skema penyimpanan lokal Anda setelah berhasil membuat cluster atau kumpulan node.