Mengonfigurasi penyimpanan yang terhubung dengan Distributed Cloud

Halaman ini menjelaskan cara mengonfigurasi penyimpanan untuk cluster Distributed Cloud connected, termasuk:

Mengonfigurasi Distributed Cloud connected untuk Penyimpanan Symcloud

Node Distributed Cloud connected tidak mengekspos penyimpanan lokalnya secara langsung ke workload Anda. Sebagai gantinya, Distributed Cloud connected menggunakan Penyimpanan Symcloud Rakuten, yang merupakan solusi pihak ketiga yang bertindak sebagai lapisan abstraksi penyimpanan lokal yang berjalan di setiap node Distributed Cloud connected dan membuat penyimpanan lokalnya tersedia untuk workload yang berjalan di semua node Distributed Cloud connected dalam cluster.

Container Storage Interface (CSI) adalah API standar terbuka yang didukung oleh banyak vendor penyimpanan utama yang memungkinkan Kubernetes mengekspos sistem penyimpanan arbitrer ke workload dalam container. Di Distributed Cloud connected, Penyimpanan Symcloud adalah solusi penyimpanan CSI yang didukung dan dikelola. Saat Penyimpanan Symcloud diaktifkan, StorageClass StorageClasses yang diperlukan akan dikonfigurasi untuk Anda. Kemudian, Anda dapat mengonfigurasi workload untuk menggunakan kelas penyimpanan yang sesuai.

Penyimpanan Symcloud di-deploy dari Google Cloud Marketplace dan tunduk pada persyaratan yang tercantum di dalamnya. Google memberikan dukungan terbatas untuk menggunakan Penyimpanan Symcloud dengan Distributed Cloud connected dan dapat melibatkan penyedia pihak ketiga untuk mendapatkan bantuan. Update software untuk Penyimpanan Symcloud disertakan dalam update software Distributed Cloud connected.

Rilis Distributed Cloud connected ini dilengkapi dengan dan mendukung Penyimpanan Symcloud 6.0.0-226. Tidak ada versi Penyimpanan Symcloud lain yang didukung dalam rilis Distributed Cloud connected ini.

Mendapatkan lisensi Penyimpanan Symcloud

Anda harus mendapatkan lisensi Penyimpanan Symcloud dalam format YAML dari Google Cloud Marketplace:

Buka Marketplace

Prasyarat

Sebelum memulai, selesaikan langkah-langkah berikut:

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

Menginstal Penyimpanan Symcloud di node Distributed Cloud connected

Untuk menginstal Penyimpanan Symcloud di node Distributed Cloud connected, selesaikan langkah-langkah berikut:

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

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

    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 Penyimpanan Symcloud sebagai kelas penyimpanan default

Gunakan perintah berikut untuk menetapkan Penyimpanan Symcloud sebagai kelas penyimpanan default di cluster Distributed Cloud connected Anda. Ganti STORAGE_CLASS dengan salah satu kelas Penyimpanan Symcloud.

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.

Kelas Penyimpanan Symcloud

Bagian ini menjelaskan kelas penyimpanan yang dapat diaktifkan oleh Penyimpanan Symcloud di cluster Distributed Cloud connected Anda. Penyimpanan Symcloud di Distributed Cloud connected tidak mendukung kelas penyimpanan robin-rwx maupun volume mode sistem file RWX yang dikonfigurasi kustom. Untuk mengetahui informasi selengkapnya tentang kelas Penyimpanan Symcloud, 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

Kelas penyimpanan robin-immediate sama dengan robin, kecuali bahwa volume persisten dibuat segera setelah membuat klaim volume persisten yang sesuai. Contoh berikut mengilustrasikan pembuatan instance 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 kelas 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

Mengonfigurasi volume Penyimpanan Symcloud yang diabstraksi untuk workload

Bagian ini memberikan contoh cara menggunakan kelas Penyimpanan Symcloud untuk mengonfigurasi penyimpanan yang diabstraksi untuk workload Distributed Cloud connected Anda. Untuk mengetahui detail selengkapnya tentang cara mengonfigurasi volume Penyimpanan Symcloud, 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 Penyimpanan Symcloud.

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 Penyimpanan Symcloud.

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 terkompresi LZ4 Penyimpanan Symcloud yang ada menggunakan anotasi. Ganti STORAGE_CLASS dengan salah satu kelas Penyimpanan 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

Contoh berikut mengilustrasikan cara mengubah konfigurasi volume RWO Penyimpanan Symcloud yang ada dengan sistem file xfs menggunakan anotasi. Ganti STORAGE_CLASS dengan salah satu kelas Penyimpanan 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

Mengonfigurasi klien CLI Penyimpanan Symcloud

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

  1. Dapatkan jalur image Penyimpanan Symcloud yang digunakan oleh instance layanan RobinCluster yang di-deploy di cluster Distributed Cloud connected 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 dan nama repositori lengkap image yang Anda dapatkan di langkah 1.

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

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

    1. Dapatkan 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
    

Mereferensikan kelas penyimpanan di StatefulSet

Contoh berikut menunjukkan cara mereferensikan kelas Penyimpanan Symcloud dalam StatefulSet StatefulSet.

Contoh ini mengasumsikan bahwa Anda menggunakan kelas penyimpanan robin-repl-3 yang telah dikonfigurasi sebelumnya, yang menyediakan volume yang direplikasi di tiga node pekerja yang berbeda untuk ketersediaan tinggi.

Saat mengonfigurasi StatefulSet untuk ketersediaan tinggi, sertakan praktik terbaik berikut dalam konfigurasi Anda:

  • Service Headless: StatefulSet memerlukan Service Headless pendamping yang cocok dengan kolom serviceName. Service Headless adalah layanan dengan clusterIP: None. Layanan ini menetapkan nama host DNS yang stabil ke setiap Pod dalam set.
  • Anti-afinitas Pod: Jika Anda menggunakan kelas penyimpanan yang direplikasi seperti robin-repl-3, data Anda akan dicerminkan dengan aman di beberapa node pekerja. Namun, jika Kubernetes menjadwalkan semua pod aplikasi Anda ke worker node yang sama, satu gangguan node dapat menghentikan aplikasi Anda. Mengonfigurasi anti-afinitas Pod memastikan Pod Anda didistribusikan di seluruh node pekerja terpisah, yang sesuai dengan ketersediaan komputasi Anda dengan redundansi penyimpanan Anda.

Contoh berikut menunjukkan konfigurasi lengkap yang mencakup Service Headless (nginx) dan StatefulSet yang dikonfigurasi dengan anti-afinitas Pod yang mereferensikan kelas penyimpanan robin-repl-3. Jika persyaratan penyimpanan workload Anda bertambah seiring waktu, Anda dapat mengubah ukuran volume secara dinamis dengan mengedit permintaan penyimpanan di PersistentVolumeClaim.

statefulset.yaml

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: web
  clusterIP: None
  selector:
    app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  serviceName: "nginx"
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - nginx
            topologyKey: "kubernetes.io/hostname"
      containers:
      - name: nginx
        image: registry.k8s.io/nginx-slim:0.8
        volumeMounts:
        - name: www
          mountPath: /usr/share/nginx/html
  volumeClaimTemplates: # Reference the storage class in this specification
  - metadata:
      name: www
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 10Gi # Symcloud Storage classes support dynamic volume expansion if more storage is needed
      storageClassName: robin-repl-3 # References the Symcloud storage class

Batasan Penyimpanan Symcloud

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

Menghapus node yang menggunakan Penyimpanan Symcloud dari cluster

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

  • Jika Anda menghapus seluruh cluster, hapus workload dan volume persisten Penyimpanan Symcloud yang sesuai sebelum Anda menghapus cluster itu sendiri.
  • Jika Anda menghapus node tertentu dari cluster, Anda harus memigrasikan data workload 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 secara logis independen. 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 Distributed Cloud connected Anda, Anda harus memintanya dari Google. Setelah kami menguji skema dan membuatnya di cluster Anda, Anda dapat menerapkannya menggunakan gcloud CLI.

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 menggantinya.

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 adalah local-block atau local-disks, masing-masing. Untuk partisi volume lokal, Anda dapat menentukan titik ikat dan titik pemasangan untuk sistem file yang disertakan.

Meminta skema penyimpanan lokal

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

Saat menerima permintaan Anda, kami menjalankan serangkaian pengujian untuk memastikan ketahanan skema, lalu membuatnya di cluster Distributed Cloud connected 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 Distributed Cloud connected Anda, 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 pembuatan cluster atau node pool berhasil.

Pemecahan masalah

Jika PersistentVolumeClaims tetap tertunda secara tidak terduga atau workload gagal melampirkan volume, jalankan langkah-langkah pemecahan masalah yang tercantum di bagian ini.

PersistentVolumeClaims tetap tertunda

Jika PersistentVolumeClaims Anda tetap dalam status Pending, periksa volumeBindingMode kelas penyimpanan Anda. Kelas Penyimpanan Symcloud yang telah dikonfigurasi sebelumnya menggunakan volumeBindingMode: WaitForFirstConsumer, yang menunda penyediaan volume hingga Pod yang mereferensikan klaim dijadwalkan. Pastikan Pod workload Anda berhasil dijadwalkan.

Jika penjadwalan Pod selesai tetapi klaim tetap tertunda, atau jika lampiran volume gagal, verifikasi status bidang kontrol Penyimpanan Symcloud dan daemon tingkat node.

Memverifikasi status bidang kontrol

Untuk memverifikasi bahwa bidang kontrol Penyimpanan Symcloud dalam kondisi baik dan siap menyediakan volume, jalankan kubectl describe perintah untuk memeriksa status resource kustom RobinCluster:

kubectl describe robinclusters -n robinio

Di output perintah, pastikan Phase adalah Ready.

Memverifikasi status daemon penyimpanan

Untuk memverifikasi bahwa semua Pod daemon penyimpanan tingkat node berjalan, jalankan perintah kubectl get:

kubectl get pods -n robinio

Di output perintah, pastikan semua Pod dalam status Running. Jika workload dijadwalkan di node dengan Pod daemon penyimpanan yang gagal, lampiran volume akan berhenti terlepas dari status RobinCluster pusat.

Hubungi dukungan

Jika status bidang kontrol Penyimpanan Symcloud bukan Ready atau Pod daemon penyimpanan tidak dalam status Running, hubungi Dukungan Google. Saat mengajukan tiket dukungan, berikan output perintah pemecahan masalah yang Anda jalankan.