Halaman ini menjelaskan cara cluster Google Kubernetes Engine (GKE) Anda dapat menggabungkan dan berbagi kapasitas penyimpanan, throughput, dan IOPS di seluruh disk menggunakan GKE Hyperdisk Storage Pools.
Ringkasan
Penyimpanan gabungan mengelompokkan perangkat penyimpanan fisik secara logis, sehingga Anda dapat menyegmentasikan resource. Anda dapat menyediakan Hyperdisk Google Cloud dalam penyimpanan gabungan ini yang pada dasarnya membuat Penyimpanan Gabungan Hyperdisk. Hyperdisk Storage Pool menawarkan kapasitas, throughput, dan IOPS yang telah disediakan sebelumnya yang dapat dibagikan oleh disk cluster GKE Anda.
Anda dapat menggunakan Penyimpanan Gabungan Hyperdisk untuk mengelola resource penyimpanan secara lebih efisien dan hemat biaya. Dengan demikian, Anda dapat memanfaatkan teknologi efisiensi seperti penghapusan duplikat dan penyediaan tipis.
Dalam panduan ini, Anda akan menggunakan zona us-east4-c
untuk membuat Penyimpanan Gabungan Hyperdisk dan resource lainnya.
Pertimbangan perencanaan
Pertimbangkan persyaratan dan batasan berikut sebelum menyediakan dan menggunakan Hyperdisk Storage Pool.
Membuat dan mengelola penyimpanan bersama
Persyaratan dan batasan berikut berlaku:
- Semua batasan Penyimpanan Gabungan Hyperdisk Compute Engine berlaku.
- Semua batasan membuat disk di Penyimpanan Gabungan Hyperdisk berlaku.
- Jenis Hyperdisk Storage Pool yang Anda buat menentukan jenis disk yang dapat Anda buat di storage pool. Lihat Jenis Penyimpanan Gabungan Hyperdisk.
Menyediakan disk booting di kumpulan penyimpanan
Persyaratan dan batasan berikut berlaku:
- Pastikan lokasi node cluster dan lokasi node kumpulan node sama persis dengan zona kumpulan penyimpanan. Batasan ini tidak berlaku jika Anda mengaktifkan Penyediaan otomatis node. Penyediaan otomatis node dapat otomatis membuat node pool di zona yang benar jika diperlukan.
- Pastikan jenis mesin yang menjalankan Pod Anda mendukung pemasangan jenis disk Hyperdisk Balanced. Throughput Hyperdisk tidak didukung sebagai disk booting. Lihat Dokumentasi dukungan jenis Mesin Hyperdisk.
- Anda dapat menyediakan disk booting di penyimpanan pool hanya pada node pool yang dibuat atau diperbarui secara manual.
- Saat node dibuat secara otomatis menggunakan penyediaan otomatis node, disk booting untuk node tersebut tidak dapat ditempatkan dalam kumpulan penyimpanan.
Menyediakan disk yang dilampirkan dalam penyimpanan gabungan
Persyaratan dan batasan berikut berlaku:
- Versi GKE minimum yang diperlukan untuk menyediakan disk yang terpasang di penyimpanan pool adalah 1.29.2-gke.1035000 dan yang lebih baru.
- Pastikan driver CSI Persistent Disk Compute Engine diaktifkan. Driver Persistent Disk Compute Engine diaktifkan secara default di cluster Autopilot dan Standard baru dan tidak dapat dinonaktifkan atau diedit di cluster Autopilot. Untuk mengaktifkan driver, lihat artikel Mengaktifkan Driver CSI Persistent Disk Compute Engine di cluster yang ada.
- Pastikan bahwa kumpulan penyimpanan berada di setidaknya salah satu lokasi node cluster dan lokasi node kumpulan node.
- Anda hanya dapat menyediakan disk yang terpasang Hyperdisk Throughput dan Hyperdisk Balanced di penyimpanan gabungan. Jenis disk yang terpasang harus cocok dengan jenis penyimpanan penyimpanan. Untuk mengetahui informasi selengkapnya, lihat Jenis Penyimpanan Gabungan Hyperdisk.
- Pastikan jenis mesin yang menjalankan Pod Anda mendukung pemasangan jenis disk yang Anda gunakan dari kumpulan penyimpanan. Untuk mengetahui informasi selengkapnya, lihat Dukungan jenis Mesin Hyperdisk.
Kuota
Saat membuat Penyimpanan Gabungan Hyperdisk, Anda dapat mengonfigurasinya dengan penyediaan standar atau lanjutan untuk kapasitas dan performa. Jika Anda ingin meningkatkan kuota untuk kapasitas, throughput, atau IOPS, minta kuota yang lebih tinggi untuk filter kuota yang relevan.
Untuk mengetahui informasi selengkapnya, lihat Melihat kuota untuk project Anda dan Meminta kuota yang lebih tinggi.
Gunakan filter kuota berikut untuk Hyperdisk Balanced Storage Pool:
HDB-STORAGE-POOL-TOTAL-ADVANCED-CAPACITY-per-project-region
: untuk meningkatkan kapasitas dengan Penyediaan kapasitas lanjutan.HDB-STORAGE-POOL-TOTAL-ADVANCED-IOPS-per-project-region
: untuk meningkatkan IOPS dengan penyediaan performa Lanjutan.HDB-STORAGE-POOL-TOTAL-ADVANCED-THROUGHPUT-per-project-region
: untuk meningkatkan throughput dengan penyediaan performa Lanjutan.HDB-TOTAL-GB-per-project-region
: untuk meningkatkan kapasitas dengan penyediaan kapasitas Standar.HDB-TOTAL-IOPS-per-project-region
: untuk meningkatkan IOPS dengan penyediaan performa Standar.HDB-TOTAL-THROUGHPUT-per-project-region
: untuk meningkatkan throughput dengan penyediaan performa Standar.
Gunakan filter kuota berikut untuk Penyimpanan Gabungan Throughput Hyperdisk:
HDT-STORAGE-POOL-TOTAL-ADVANCED-CAPACITY-per-project-region
: untuk meningkatkan kapasitas dengan Penyediaan kapasitas lanjutan.HDT-STORAGE-POOL-TOTAL-ADVANCED-THROUGHPUT-per-project-region
: untuk meningkatkan throughput dengan penyediaan performa Lanjutan.HDT-TOTAL-GB-per-project-region
: untuk meningkatkan kapasitas dengan penyediaan kapasitas Standar.HDT-TOTAL-THROUGHPUT-per-project-region
: untuk meningkatkan throughput dengan penyediaan performa Standar.
Misalnya, jika Anda ingin meningkatkan total kapasitas untuk Hyperdisk Balanced Storage Pool dengan penyediaan kapasitas Advanced, per project dan per region, minta kuota yang lebih tinggi untuk filter berikut:
hdb-storage-pool-total-advanced-capacity-per-project-region
.
Harga
Lihat Harga Penyimpanan Gabungan Hyperdisk untuk mengetahui detail harga.
Sebelum memulai
Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Jika ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
lakukan inisialisasi
gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan
gcloud components update
.
- Tinjau region dan zona yang didukung untuk membuat Hyperdisk Balanced Storage Pool.
Membuat Penyimpanan Gabungan Hyperdisk
Buat Penyimpanan Gabungan Hyperdisk sebelum Anda menyediakan disk booting atau disk yang terpasang di penyimpanan gabungan tersebut. Untuk mengetahui informasi selengkapnya, lihat Membuat Penyimpanan Gabungan Hyperdisk.
Pastikan Anda membuat kumpulan penyimpanan di salah satu zona yang didukung.
Misalnya, gunakan perintah berikut untuk membuat Hyperdisk Balanced Storage Pool dengan
kapasitas Lanjutan dan performa Lanjutan, serta sediakan kapasitas 10 TB, 10.000 IOPS/s,
dan throughput 1.024 MBps di zona us-east4-c
:
export PROJECT_ID=PROJECT_ID
export ZONE=us-east4-c
gcloud compute storage-pools create pool-$ZONE \
--provisioned-capacity=10tb --storage-pool-type=hyperdisk-balanced \
--zone=$ZONE --project=$PROJECT_ID --capacity-provisioning-type=advanced \
--performance-provisioning-type=advanced --provisioned-iops=10000 \
--provisioned-throughput=1024
Ganti PROJECT_ID
dengan project ID akun Google Cloud Anda.
Memeriksa zona penyimpanan bersama
Untuk cluster Autopilot dan cluster Standard dengan penyediaan otomatis node yang diaktifkan, Anda dapat membuat kumpulan penyimpanan di zona mana pun dalam region cluster. Jika tidak ada node pool di zona tempat Anda membuat penyimpanan pool, Pod akan tetap dalam status
Pending
hingga Autoscaler Cluster GKE dapat menyediakan node pool baru di zona tersebut.Untuk cluster Standard tanpa penyediaan otomatis node, buat kumpulan penyimpanan di zona node default cluster Anda karena kumpulan penyimpanan adalah resource zonal. Anda dapat menetapkan zona node cluster menggunakan flag
--node-locations
.- Untuk cluster zona, jika Anda tidak menentukan
--node-locations
, semua node akan dibuat di zona utama cluster. - Untuk cluster regional, jika Anda tidak menentukan
--node-locations
, GKE akan mendistribusikan node pekerja di tiga zona yang dipilih secara acak dalam region.
- Untuk cluster zona, jika Anda tidak menentukan
Untuk memeriksa zona node default cluster, jalankan perintah berikut:
gcloud container clusters describe CLUSTER_NAME | yq '.locations'
Ganti CLUSTER_NAME
dengan nama cluster
yang akan Anda buat saat menyediakan disk booting atau disk terpasang.
Menyediakan disk booting GKE di Hyperdisk Storage Pool
Anda dapat menyediakan disk booting GKE di Hyperdisk Storage Pool saat melakukan salah satu hal berikut:
- Saat membuat cluster GKE baru
- Saat membuat node pool baru
- Saat memperbarui node pool yang ada
Saat membuat cluster
Untuk membuat cluster GKE dengan disk booting yang disediakan di storage pool, gunakan perintah berikut:
gcloud container clusters create CLUSTER_NAME \
--disk-type=DISK_TYPE --storage-pools=STORAGE_POOL,[...] \
--node-locations=ZONE,[...] --machine-type=MACHINE_TYPE \
--zone=ZONE
Ganti kode berikut:
CLUSTER_NAME
: Berikan nama unik untuk cluster yang Anda buat.DISK_TYPE
: Tetapkan kehyperdisk-balanced.
Jika dibiarkan kosong, jenis disk akan ditetapkan secara default ke Hyperdisk Balanced.STORAGE_POOL,[...]
: Daftar yang dipisahkan koma jalur resource storage pool (contoh,projects/my-project/zones/us-east4-c/storagePools/pool-us-east4-c
) tempat disk booting cluster akan disediakan. Pastikan zona di jalur resource kumpulan penyimpanan cocok dengan zona di--node-locations
.ZONE,[...]
: Daftar zona yang dipisahkan koma tempat jejak node Anda harus direplikasi. Untuk cluster regional, Anda dapat menentukan wilayah. Semua zona harus berada di region yang sama dengan cluster, yang ditentukan oleh flag-location
atau--zone
atau--region
.MACHINE_TYPE
: Jenis mesin yang didukung yang ingin Anda gunakan untuk node.ZONE
: Zona tempat Anda ingin membuat cluster. Gunakan flag—region
untuk membuat cluster regional.
Saat membuat node pool
Untuk membuat node pool GKE dengan disk booting yang disediakan di storage pool, gunakan perintah berikut:
gcloud container node-pools create NODE_POOL_NAME \
--disk-type=DISK_TYPE --storage-pools=STORAGE_POOL,[...] \
--node-locations=ZONE,[...] --machine-type=MACHINE_TYPE \
--zone=ZONE --cluster=CLUSTER_NAME
Ganti kode berikut:
NODE_POOL_NAME
: Berikan nama unik untuk node pool yang Anda buat.DISK_TYPE
: Tetapkan kehyperdisk-balanced.
Jika dibiarkan kosong, jenis disk akan ditetapkan secara default ke Hyperdisk Balanced.STORAGE_POOL,[...]
: Daftar yang dipisahkan koma jalur resource storage pool (contoh,projects/my-project/zones/us-east4-c/storagePools/pool-us-east4-c
) tempat disk booting cluster akan disediakan. Pastikan zona di jalur resource kumpulan penyimpanan cocok dengan nilai di--node-locations
.ZONE,[...]
: Daftar zona yang dipisahkan koma tempat jejak node Anda harus direplikasi. Semua zona harus berada di region yang sama dengan cluster, yang ditentukan oleh flag-location
atau--zone
atau--region
.MACHINE_TYPE
: Jenis mesin yang didukung yang ingin Anda gunakan untuk node.ZONE
: Zona tempat Anda ingin membuat node pool.CLUSTER_NAME
: Cluster yang ada tempat Anda membuat node pool.
Saat memperbarui node pool
Anda dapat menggunakan perintah update
untuk menambahkan atau mengganti penyimpanan dalam node pool.
Perintah ini tidak dapat digunakan untuk menghapus storage pool dari node pool.
Untuk mengupdate node pool GKE agar disk booting-nya disediakan di storage pool, gunakan perintah berikut.
gcloud container node-pools update NODE_POOL_NAME \
--storage-pools=STORAGE_POOL,[...] \
--zone=ZONE --cluster=CLUSTER_NAME
NODE_POOL_NAME
: Nama node pool yang ada yang ingin Anda perbarui untuk menggunakan storage pool.STORAGE_POOL,[...]
: Daftar yang dipisahkan koma dari jalur resource storage pool yang ada (contoh,projects/my-project/zones/us-east4-c/storagePools/pool-us-east4-c
). Pastikan zona di jalur resource storage pool cocok dengan zona kumpulan node yang Anda perbarui.ZONE
: Zona tempat node pool berada.CLUSTER_NAME
: Nama cluster GKE tempat node pool ini berada.
Perubahan ini memerlukan pembuatan ulang node, yang dapat menyebabkan gangguan pada workload yang sedang berjalan. Untuk mengetahui detail tentang perubahan spesifik ini, temukan baris yang sesuai dalam tabel perubahan manual yang membuat ulang node menggunakan strategi upgrade node tanpa mematuhi kebijakan pemeliharaan. Untuk mempelajari update node lebih lanjut, lihat Merencanakan gangguan update node.
Menyediakan disk yang terpasang GKE di Hyperdisk Storage Pool
Di bagian ini:
- Anda membuat cluster GKE baru dengan disk terpasang yang disediakan di penyimpanan bersama.
- Buat StorageClass untuk menyediakan
PersistentVolume
(PV) secara dinamis saat Pod memintanya melalui PersistentVolumeClaim (PVC). Agar PV dapat menggunakan resource bersama kumpulan penyimpanan, Anda harus menentukan kumpulan penyimpanan menggunakan parameter
storage-pools
di StorageClass. StorageClass kemudian digunakan di PVC untuk menyediakan volume Hyperdisk Balanced yang akan digunakan oleh Pod. - Buat PVC untuk meminta PV--bagian penyimpanan Hyperdisk--untuk Pod dari cluster GKE Anda. Hal ini memungkinkan Anda mendapatkan manfaat dari resource bersama kumpulan penyimpanan.
- Buat Deployment yang menggunakan PVC untuk memastikan aplikasi Anda memiliki akses ke penyimpanan persisten bahkan setelah Pod dimulai ulang dan dijadwalkan ulang.
Membuat cluster GKE
Sebelum memulai, tinjau pertimbangan untuk menyediakan disk yang terpasang.
Autopilot
Untuk membuat cluster Autopilot menggunakan gcloud CLI, lihat Membuat cluster Autopilot.
Contoh:
gcloud container clusters create-auto CLUSTER_NAME --region=REGION
Ganti kode berikut:
CLUSTER_NAME
: Berikan nama unik untuk cluster yang Anda buat.REGION
: Region tempat Anda membuat cluster.
Untuk memilih jenis mesin yang didukung, Anda menentukan nodeSelector cloud.google.com/compute-class: Performance
saat membuat Deployment. Untuk mengetahui daftar
seri mesin Compute Engine yang tersedia dengan class komputasi Performa,
lihat Seri mesin yang didukung.
Standard
Untuk membuat cluster Zona Standar menggunakan gcloud CLI, lihat Membuat cluster zona.
Untuk membuat cluster Regional Standar menggunakan gcloud CLI, lihat Membuat cluster regional.
Contoh:
gcloud container clusters create CLUSTER_NAME --zone=ZONE --project=PROJECT_ID --machine-type=MACHINE_TYPE --disk-type="DISK_TYPE"
Ganti kode berikut:
CLUSTER_NAME
: Berikan nama unik untuk cluster yang Anda buat.ZONE
: Zona tempat Anda membuat cluster. Gunakan flag—region
untuk membuat cluster regional.PROJECT_ID
: Project ID akun Google Cloud Anda.MACHINE_TYPE
: Jenis mesin yang didukung yang ingin Anda gunakan untuk node.DISK_TYPE
: Tetapkan kehyperdisk-balanced.
Jika dibiarkan kosong, jenis disk akan ditetapkan secara default ke Hyperdisk Balanced.
Membuat StorageClass
Di Kubernetes, untuk menunjukkan bahwa Anda ingin PV dibuat di dalam kumpulan penyimpanan, gunakan StorageClass. Untuk mempelajari lebih lanjut, lihat StorageClasses.
Untuk membuat StorageClass baru dengan level throughput atau IOPS yang Anda inginkan:
- Gunakan
pd.csi.storage.gke.io
di kolom penyedia. - Tentukan jenis penyimpanan Hyperdisk Balanced.
- Tentukan parameter
storage-pools
dengan nilai sebagai daftar penyimpanan tertentu yang ingin Anda gunakan. Setiap kumpulan penyimpanan dalam daftar harus ditentukan dalam format:projects/PROJECT_ID/zones/ZONE/storagePools/STORAGE_POOL_NAME.
- Secara opsional, tentukan parameter performa
provisioned-throughput-on-create
danprovisioned-iops-on-create.
Setiap jenis Hyperdisk memiliki nilai default untuk performa yang ditentukan oleh ukuran disk awal yang disediakan. Saat membuat StorageClass, Anda dapat menentukan parameter berikut secara opsional, bergantung pada jenis Hyperdisk Anda. Jika Anda menghapus parameter ini, GKE akan menggunakan default jenis disk berbasis kapasitas.
Parameter | Jenis Hyperdisk | Penggunaan |
---|---|---|
provisioned-throughput-on-create |
Hyperdisk Balanced, Hyperdisk Throughput | Nyatakan nilai throughput dalam MiBps menggunakan penentu "Mi"; misalnya, jika throughput yang diperlukan adalah 250 MiBps, tentukan "250Mi" saat membuat StorageClass. |
provisioned-iops-on-create |
Hyperdisk Balanced, Hyperdisk IOPS | Nilai IOPS harus dinyatakan tanpa penentu apa pun; misalnya, jika Anda memerlukan 7.000 IOPS, tentukan "7000" saat membuat StorageClass. |
Untuk panduan tentang nilai yang diizinkan untuk throughput atau IOPS, lihat Merencanakan level performa untuk volume Hyperdisk.
Gunakan manifes berikut untuk membuat dan menerapkan StorageClass bernama storage-pools-sc
untuk menyediakan PV secara dinamis di kumpulan penyimpanan
projects/my-project/zones/us-east4-c/storagePools/pool-us-east4-c
:
kubectl apply -f - <<EOF
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: storage-pools-sc
provisioner: pd.csi.storage.gke.io
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
parameters:
type: hyperdisk-balanced
provisioned-throughput-on-create: "140Mi"
provisioned-iops-on-create: "3000"
storage-pools: projects/my-project/zones/us-east4-c/storagePools/pool-us-east4-c
EOF
Dengan memanfaatkan volumeBindingMode: WaitForFirstConsumer
di StorageClass ini,
binding dan penyediaan PVC akan tertunda hingga
Pod yang menggunakan PVC dibuat.
Pendekatan ini memastikan bahwa PV tidak disediakan sebelum waktunya,
dan ada kecocokan zona antara PV, dan Pod yang menggunakannya. Jika zonanya
tidak cocok, Pod akan tetap dalam status Pending
.
Membuat PersistentVolumeClaim (PVC)
Buat PVC yang mereferensikan StorageClass storage-pools-sc
yang Anda buat.
Gunakan manifes berikut untuk membuat PVC bernama my-pvc
, dengan 2048 GiB sebagai
kapasitas penyimpanan target untuk volume Hyperdisk Balanced:
kubectl apply -f - <<EOF
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
storageClassName: storage-pools-sc
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2048Gi
EOF
Membuat Deployment yang menggunakan PVC
Saat menggunakan Pod dengan PersistentVolume, gunakan pengontrol workload seperti Deployment atau StatefulSet.
Untuk memastikan Pod dapat dijadwalkan di node pool dengan seri mesin yang mendukung Hyperdisk Balanced, konfigurasikan Deployment dengan pemilih node cloud.google.com/machine-family
. Untuk mengetahui informasi selengkapnya, lihat dukungan jenis mesin untuk Hyperdisk. Anda menggunakan deret mesin c3
dalam Deployment contoh
berikut.
Buat dan terapkan manifes berikut untuk mengonfigurasi Pod guna men-deploy server web Postgres menggunakan PVC yang dibuat di bagian sebelumnya:
Autopilot
Di cluster Autopilot, tentukan nodeSelector cloud.google.com/compute-class: Performance
untuk menyediakan volume Hyperdisk Balanced. Untuk informasi selengkapnya,
lihat Meminta node khusus untuk Pod.
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres
spec:
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
nodeSelector:
cloud.google.com/machine-family: c3
cloud.google.com/compute-class: Performance
containers:
- name: postgres
image: postgres:14-alpine
args: [ "sleep", "3600" ]
volumeMounts:
- name: sdk-volume
mountPath: /usr/share/data/
volumes:
- name: sdk-volume
persistentVolumeClaim:
claimName: my-pvc
EOF
Standard
Di cluster Standard tanpa penyediaan otomatis node yang diaktifkan, pastikan node pool dengan seri mesin yang ditentukan sudah aktif dan berjalan sebelum membuat Deployment. Jika tidak, Pod akan gagal dijadwalkan.
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres
spec:
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
nodeSelector:
cloud.google.com/machine-family: c3
containers:
- name: postgres
image: postgres:14-alpine
args: [ "sleep", "3600" ]
volumeMounts:
- name: sdk-volume
mountPath: /usr/share/data/
volumes:
- name: sdk-volume
persistentVolumeClaim:
claimName: my-pvc
EOF
Konfirmasi bahwa Deployment berhasil dibuat:
kubectl get deployment
Mungkin perlu waktu beberapa menit bagi instance Hyperdisk untuk menyelesaikan
penyediaan dan menampilkan status READY
.
Konfirmasi apakah disk yang terpasang telah disediakan
Periksa apakah PVC Anda yang bernama
my-pvc
telah berhasil terikat ke PV:kubectl get pvc my-pvc
Outputnya mirip dengan hal berikut ini:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE my-pvc Bound pvc-1ff52479-4c81-4481-aa1d-b21c8f8860c6 2Ti RWO storage-pools-sc 2m24s
Periksa apakah volume telah disediakan seperti yang ditentukan dalam StorageClass dan PVC Anda:
gcloud compute storage-pools list-disks pool-us-east4-c --zone=us-east4-c
Outputnya mirip dengan hal berikut ini:
NAME STATUS PROVISIONED_IOPS PROVISIONED_THROUGHPUT SIZE_GB pvc-1ff52479-4c81-4481-aa1d-b21c8f8860c6 READY 3000 140 2048
Membuat snapshot dan memulihkan disk yang terpasang di kumpulan penyimpanan
Memindahkan disk ke dalam atau keluar dari kumpulan penyimpanan tidak diizinkan. Untuk memindahkan disk ke dalam atau ke luar storage pool, buat ulang disk dari snapshot. Untuk mengetahui informasi selengkapnya, lihat Mengubah jenis disk.
Di bagian ini:
- Anda menulis file pengujian ke disk yang disediakan di Pod.
- Buat snapshot volume dan hapus file pengujian dari disk tersebut.
- Pulihkan snapshot ke disk baru dalam kumpulan penyimpanan yang sama, yang secara efektif memulihkan data yang dihapus.
Membuat file pengujian
Untuk membuat dan memverifikasi file pengujian:
Dapatkan nama Pod Deployment Postgres:
kubectl get pods -l app=postgres
Outputnya mirip dengan hal berikut ini:
NAME READY STATUS RESTARTS AGE postgres-78fc84c9ff-77vx6 1/1 Running 0 44s
Buat file pengujian
hello.txt
di Pod:kubectl exec postgres-78fc84c9ff-77vx6 \ -- sh -c 'echo "Hello World!" > /usr/share/data/hello.txt'
Pastikan file pengujian dibuat:
kubectl exec postgres-78fc84c9ff-77vx6 \ -- sh -c 'cat /usr/share/data/hello.txt' Hello World!
Membuat snapshot volume dan menghapus file pengujian
Untuk membuat dan memverifikasi snapshot:
Buat VolumeSnapshotClass yang menentukan cara snapshot volume Anda harus diambil dan dikelola:
kubectl apply -f - <<EOF apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: my-snapshotclass driver: pd.csi.storage.gke.io deletionPolicy: Delete EOF
Buat VolumeSnapshot dan ambil snapshot dari volume yang terikat dengan PersistentVolumeClaim
my-pvc
:kubectl apply -f - <<EOF apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: my-snapshot spec: volumeSnapshotClassName: my-snapshotclass source: persistentVolumeClaimName: my-pvc EOF
Pastikan konten snapshot volume dibuat:
kubectl get volumesnapshotcontents
Outputnya mirip dengan hal berikut ini:
NAME READYTOUSE RESTORESIZE DELETIONPOLICY DRIVER VOLUMESNAPSHOTCLASS VOLUMESNAPSHOT VOLUMESNAPSHOTNAMESPACE AGE snapcontent-e778fde2-5f1c-4a42-a43d-7f9d41d093da false 2199023255552 Delete pd.csi.storage.gke.io my-snapshotclass my-snapshot default 33s
Pastikan snapshot siap digunakan:
kubectl get volumesnapshot \ -o custom-columns='NAME:.metadata.name,READY:.status.readyToUse'
Outputnya mirip dengan hal berikut ini:
NAME READY my-snapshot true
Hapus file pengujian asli
hello.txt
yang dibuat di Podpostgres-78fc84c9ff-77vx6
:kubectl exec postgres-78fc84c9ff-77vx6 \ -- sh -c 'rm /usr/share/data/hello.txt'
Memulihkan snapshot volume
Untuk memulihkan snapshot volume dan data, ikuti langkah-langkah berikut:
Buat PVC baru yang memulihkan data dari snapshot, dan pastikan volume baru disediakan dalam penyimpanan pool (
storage-pools-sc
) yang sama dengan volume asli. Terapkan manifes berikut:kubectl apply -f - <<EOF apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-restore spec: dataSource: name: my-snapshot kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io storageClassName: storage-pools-sc accessModes: - ReadWriteOnce resources: requests: storage: 2048Gi EOF
Perbarui Deployment yang ada bernama
postgres
agar menggunakan PVC yang baru dipulihkan yang baru saja Anda buat. Terapkan manifes berikut:kubectl apply -f - <<EOF apiVersion: apps/v1 kind: Deployment metadata: name: postgres spec: selector: matchLabels: app: postgres template: metadata: labels: app: postgres spec: nodeSelector: cloud.google.com/machine-family: c3 containers: - name: postgres image: google/cloud-sdk:slim args: [ "sleep", "3600" ] volumeMounts: - name: sdk-volume mountPath: /usr/share/data/ volumes: - name: sdk-volume persistentVolumeClaim: claimName: pvc-restore EOF
Dapatkan nama Pod yang baru dibuat yang merupakan bagian dari Deployment
postgres
:kubectl get pods -l app=postgres
Outputnya mirip dengan hal berikut ini:
NAME READY STATUS RESTARTS AGE postgres-59f89cfd8c-42qtj 1/1 Running 0 40s
Pastikan file
hello.txt
, yang sebelumnya dihapus, kini ada di Pod baru (postgres-59f89cfd8c-42qtj
) setelah memulihkan volume dari snapshot:kubectl exec postgres-59f89cfd8c-42qtj \ -- sh -c 'cat /usr/share/data/hello.txt' Hello World!
Hal ini memvalidasi bahwa proses snapshot dan pemulihan berhasil diselesaikan dan data dari snapshot telah dipulihkan ke PV baru yang dapat diakses oleh Pod.
Pastikan volume yang dibuat dari snapshot berada dalam kumpulan penyimpanan Anda:
kubectl get pvc pvc-restore
Outputnya mirip dengan hal berikut ini:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-restore Bound pvc-b287c387-bc51-4100-a00e-b5241d411c82 2Ti RWO storage-pools-sc 2m24s
Periksa apakah volume baru disediakan seperti yang ditentukan dalam StorageClass dan PVC Anda:
gcloud compute storage-pools list-disks pool-us-east4-c --zone=us-east4-c
Output-nya mirip dengan berikut ini, tempat Anda dapat melihat volume baru
pvc-b287c387-bc51-4100-a00e-b5241d411c82
yang disediakan di kumpulan penyimpanan yang sama.NAME STATUS PROVISIONED_IOPS PROVISIONED_THROUGHPUT SIZE_GB pvc-1ff52479-4c81-4481-aa1d-b21c8f8860c6 READY 3000 140 2048 pvc-b287c387-bc51-4100-a00e-b5241d411c82 READY 3000 140 2048
Tindakan ini memastikan bahwa volume yang dipulihkan mendapatkan manfaat dari resource dan kemampuan bersama dari kumpulan.
Memigrasikan volume yang ada ke dalam kumpulan penyimpanan
Gunakan snapshot dan pemulihan untuk memigrasikan volume yang ada di luar penyimpanan gabungan, ke penyimpanan gabungan.
Pastikan kondisi berikut terpenuhi:
pvc-restore
PVC baru Anda mereferensikan StorageClass yang menentukan parameterstorage-pools
, yang mengarah ke kumpulan penyimpanan tempat Anda ingin memindahkan volume.- PV sumber yang diambil snapshot-nya harus dikaitkan dengan PVC dengan
StorageClass yang tidak menentukan parameter
storage-pools
.
Setelah memulihkan dari snapshot ke volume baru, Anda dapat menghapus PVC dan PV sumber.
Pembersihan
Agar tidak menimbulkan biaya pada akun Google Cloud Anda, hapus resource penyimpanan yang Anda buat dalam panduan ini. Pertama, hapus semua disk dalam penyimpanan kumpulan, lalu hapus penyimpanan kumpulan.
Menghapus disk booting
Saat Anda menghapus node (dengan menskalakan node pool ke bawah) atau seluruh node pool, boot disk terkait akan otomatis dihapus. Anda juga dapat menghapus cluster untuk menghapus disk booting dari semua kumpulan node di dalamnya secara otomatis.
Untuk informasi selengkapnya, lihat:
Menghapus disk yang terpasang
Untuk menghapus disk terpasang yang disediakan di Hyperdisk Storage Pool:
Hapus Pod yang menggunakan PVC:
kubectl delete deployments postgres
Hapus PVC yang menggunakan StorageClass Penyimpanan Gabungan Hyperdisk.
kubectl delete pvc my-pvc
Konfirmasi bahwa
pvc-1ff52479-4c81-4481-aa1d-b21c8f8860c6
PVC telah dihapus:gcloud compute storage-pools list-disks pool-us-east4-c --zone=us-east4-c
Menghapus Penyimpanan Gabungan Hyperdisk
Hapus Penyimpanan Gabungan Hyperdisk dengan perintah berikut:
gcloud compute storage-pools delete pool-us-east4-c --zone=us-east4-c --project=my-project
Langkah selanjutnya
- Lihat Memecahkan masalah penyimpanan di GKE.
- Baca selengkapnya tentang driver CSI Disk Permanen di GitHub.