Aplikasi Kubernetes sering memerlukan penyimpanan persisten untuk menyimpan data. Alibaba Cloud Container Service for Kubernetes (ACK) mengintegrasikan berbagai layanan penyimpanan Alibaba Cloud—seperti Elastic Block Storage (EBS), Object Storage Service (OSS), Network Attached Storage (NAS), dan Cloud Parallel File Storage (CPFS)—melalui Container Storage Interface (CSI) standar. ACK juga kompatibel dengan mekanisme penyimpanan native Kubernetes, sehingga menyediakan solusi penyimpanan yang disesuaikan dengan berbagai skenario bisnis. Integrasi ini memberikan opsi penyimpanan fleksibel baik untuk beban kerja sementara maupun persisten.
Pilih solusi penyimpanan
ACK menyediakan dua jenis solusi penyimpanan:
Volume native Kubernetes: Dirancang untuk data sementara, manajemen konfigurasi, atau interaksi tingkat node. Siklus hidupnya terikat pada Pod dan tidak mendukung persistensi data untuk aplikasi.
Volume persisten Alibaba Cloud: Diintegrasikan melalui komponen Container Storage Interface (CSI), volume ini menyediakan persistensi data yang stabil dan andal untuk beban kerja. Siklus hidupnya independen dari Pod dan mendukung aplikasi berstatus.
Sebelum menggunakan penyimpanan kontainer, pastikan Anda memahami konsep utama seperti volume, PersistentVolume (PV), dan PersistentVolumeClaim (PVC). Untuk informasi selengkapnya, lihat Dasar-dasar penyimpanan.
Volume native Kubernetes
Volume native Kubernetes memiliki siklus hidup yang terikat pada Pod dan tidak cocok untuk mempertahankan data aplikasi.
Type | Description | Key feature |
emptyDir | Direktori kosong sementara yang siklus hidupnya sesuai dengan Pod-nya. | Data hilang ketika Pod dihapus. Gunakan ini untuk pertukaran data antar-kontainer atau caching sementara dalam satu Pod. |
HostPath | Memasang file atau direktori dari node host ke dalam Pod. Anda dapat mengontrol pemeriksaan pra-pemasangan dan perilaku pembuatan menggunakan bidang Untuk informasi selengkapnya, lihat Volume HostPath | Data terikat pada node dan tidak berpindah bersama Pod. Tidak cocok untuk aplikasi berstatus yang memerlukan ketersediaan tinggi dan persistensi (misalnya, database atau cache). |
ConfigMap/Secret | Memasang item konfigurasi atau kredensial sensitif sebagai file. | Hanya dirancang untuk data konfigurasi volume kecil—bukan data bisnis. Digunakan untuk memisahkan konfigurasi dari aplikasi. |
Volume persisten Alibaba Cloud
Untuk aplikasi berstatus yang memerlukan penyimpanan data persisten, Anda dapat menggunakan volume persisten Alibaba Cloud. Volume ini memiliki siklus hidup yang independen dari Pod dan diintegrasikan dengan Kubernetes menggunakan CSI.
Perbandingan solusi
Untuk membantu Anda memilih opsi yang tepat dengan cepat, setiap solusi penyimpanan dalam tabel di bawah mencakup ikon referensi cepat untuk atribut inti. Sebagai contoh, untuk EBS:
Cloud disk: Detail solusi. Klik (view details) untuk melihat detail.Static/Dynamic: Metode penyediaan volume yang didukung, termasuk penyediaan statis (PV/PVC) dan penyediaan dinamis (StorageClass/PVC). Klik tautan untuk instruksi langkah demi langkah.
RWO: mode akses (
accessModes) yang didukung: RWO (ReadWriteOnce), RWX (ReadWriteMany), dan ROX (ReadOnlyMany).Billing: Detail penagihan. Klik tautan untuk melihat detail.
Storage option | Description | Trade-offs and limits |
|
| |
|
| |
RWX, ROX | Billing |
|
|
|
| |
|
|
Selain kinerja dasar, opsi penyimpanan berbeda dalam aspek operasional seperti pemulihan kesalahan, manajemen kapasitas, dan perlindungan data. Pertimbangkan pertanyaan berikut untuk memperhalus pemilihan Anda.
Komponen dan konsep utama
Komponen CSI (csi-plugin, csi-provisioner)
Komponen ini merupakan implementasi plugin penyimpanan yang direkomendasikan komunitas Kubernetes. Komponen ini telah dipra-instal dan diaktifkan secara default di kluster ACK. Komponen ini berinteraksi dengan API penyimpanan Alibaba Cloud untuk mengelola siklus hidup penuh volume, termasuk pembuatan otomatis, pemasangan, dan pelepasan pemasangan. Untuk informasi selengkapnya, lihat Kelola komponen csi-plugin dan csi-provisioner.
Container Network File System (CNFS)
CNFS adalah kemampuan penyimpanan tingkat lanjut yang tersedia di kluster ACK Pro. CNFS mengabstraksikan NAS, OSS, dan CPFS sebagai Custom Resource Definitions (CRD) Kubernetes untuk memungkinkan manajemen detail halus, seperti pembuatan subdirektori dinamis, manajemen kuota, pemantauan kinerja I/O, manajemen keranjang daur ulang, dan caching terdistribusi. Untuk informasi selengkapnya, lihat Container Network File System (CNFS).
Catatan penggunaan
Saat menggunakan CSI, perhatikan batasan berikut.
Versi kluster: Kluster Anda harus menjalankan Kubernetes 1.14 atau lebih baru. Untuk meningkatkan kluster Anda, lihat Tingkatkan kluster secara manual.
Lingkungan kluster: CSI telah diuji dan divalidasi sepenuhnya di kluster ACK. Untuk kluster non-ACK, seperti kluster di lingkungan non-Alibaba Cloud atau kluster yang dikelola sendiri di Alibaba Cloud, CSI mungkin tidak menyediakan fungsionalitas out-of-the-box karena perbedaan konfigurasi, izin, dan jaringan.
Kami merekomendasikan Anda meninjau kode sumber alibaba-cloud-csi-driver dan menyesuaikannya dengan lingkungan Anda.
Konfigurasi node: Parameter kubelet
--enable-controller-attach-detachharus diatur ketrue.Sistem operasi: Node Windows tidak didukung.
Izin RBAC: PersistentVolume (PV) adalah resource berlingkup kluster. PersistentVolumeClaim (PVC) berlingkup namespace. Saat memberikan izin RBAC, perhatikan tingkat akses berbeda yang diperlukan untuk kedua tipe resource ini.
Jika peran ACK default, seperti administrator dan insinyur O&M, tidak memenuhi kebutuhan Anda, Anda dapat mengonfigurasi izin kustom. Misalnya, peran insinyur O&M default memberikan akses baca dan tulis ke PVC di namespace yang diotorisasi tetapi hanya akses read-only ke PV di seluruh kluster. Oleh karena itu, Anda tidak dapat menggunakan peran ini untuk membuat PV secara manual. Untuk informasi selengkapnya, lihat Berikan izin RBAC kepada Pengguna RAM atau Peran RAM.
FAQ
Bagaimana cara memeriksa plugin penyimpanan yang digunakan oleh kluster saya?
Anda dapat menggunakan salah satu metode berikut.
Periksa anotasi node di Konsol ACK
Pada halaman Kluster ACK , klik nama kluster Anda. Pada halaman detail kluster, di panel navigasi kiri, klik .
Pada daftar node, temukan node yang ingin Anda kelola dan klik Details di kolom Actions. Pada tab Overview, lihat Annotations node tersebut.
Jika
volumes.kubernetes.io/controller-managed-attach-detach: trueada, plugin penyimpanan adalah CSI. Jika tidak ada, plugin tersebut adalah FlexVolume.
Lihat parameter kubelet dengan perintah
Masuk ke node dan periksa parameter kubelet.
ps -ef | grep kubeletOutput yang diharapkan:
--enable-controller-attach-detach=truetrue: Plugin penyimpanan adalah CSI.false: Plugin penyimpanan adalah FlexVolume.
Bagaimana cara memberikan izin secara manual ke plugin CSI?
Plugin CSI memerlukan izin untuk mengakses resource cloud lain saat memasang, melepas pemasangan, membuat, atau menghapus volume. Secara default, CSI diinstal dan dikonfigurasi dengan izin yang diperlukan di kluster ACK. Untuk menyiapkan izin secara manual, lakukan langkah-langkah berikut.
Berikan izin menggunakan peran RAM (default): Plugin CSI menggunakan AliyunCSManagedCsiRole untuk mengakses resource di layanan Alibaba Cloud lainnya. Untuk informasi selengkapnya, lihat Peran layanan ACK.
Kluster ACK yang dikelola: Untuk kluster ACK yang dikelola, token untuk peran RAM yang digunakan oleh CSI disimpan dalam Secret bernama addon.csi.token. Anda dapat memasang Secret ini untuk memberikan izin dan mengaktifkan akses API.
Kluster khusus ACK: Untuk kluster khusus ACK, CSI mewarisi peran RAM yang ditetapkan ke node ECS tempat Pod-nya berjalan.
Untuk informasi selengkapnya tentang cara memberikan izin kepada peran RAM, lihat Kelola izin untuk peran RAM.
Berikan izin menggunakan Pasangan Kunci Akses
Gunakan variabel lingkungan: Anda dapat membuat Pasangan Kunci Akses sebagai Secret Kubernetes dan menyuntikkannya ke Pod CSI sebagai variabel lingkungan. Hal ini mencegah kredensial terekspos dalam teks biasa di template penyebaran.
Gunakan entri YAML langsung: Anda dapat menyematkan Pasangan Kunci Akses langsung di file YAML CSI. Metode ini tidak direkomendasikan untuk lingkungan produksi.