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:
Prasyarat
Sebelum memulai, selesaikan langkah-langkah berikut:
- Konfigurasi logging dan pemantauan untuk project Distributed Cloud connected target.
- Buat cluster Distributed Cloud connected target.
- Konfigurasi jaringan Distributed Cloud Anda sehingga Pod di cluster Distributed Cloud connected target dapat menjangkau Google Cloud pusat data.
- Ikat setiap volume persisten
local-blockdi setiap node Distributed Cloud yang tidak ingin Anda abstrakkan oleh Penyimpanan Symcloud. Jika Anda melepaskan volume persistenlocal-blockyang 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:
Gunakan perintah berikut untuk menerapkan lisensi Penyimpanan Symcloud ke cluster Anda. Ganti
LICENSE_FILEdengan jalur dan nama lengkap file lisensi Penyimpanan Symcloud.kubectl apply -f LICENSE_FILE -n robin-admin
Gunakan perintah berikut untuk memverifikasi status layanan
RobinClusterdan 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:
Dapatkan jalur image Penyimpanan Symcloud yang digunakan oleh instance layanan
RobinClusteryang 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"Buat resource
robinclidengan 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_IMAGEdengan jalur dan nama repositori lengkap image yang Anda dapatkan di langkah 1.Terapkan resource
robinclike cluster Distributed Cloud connected Anda.Saat penginstalan awal, Penyimpanan Symcloud akan membuat secret
default-admin-userdi namespacerobiniodengan sandi acak. Gunakan perintah berikut untuk mendapatkan kredensial login ini:Dapatkan nama pengguna:
kubectl -n robinio get secret default-admin-user -o jsonpath='{.data.username}' | base64 -dDapatkan sandi:
kubectl -n robinio get secret default-admin-user -o jsonpath='{.data.password}' | base64 -d
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 denganclusterIP: 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-blockataulocal-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-schemasaat membuat cluster. Untuk mengetahui informasi selengkapnya, lihat Membuat cluster.Untuk menerapkan skema penyimpanan lokal ke node pekerja cluster, gunakan
--node-storage-schemasaat 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.