Information in this document may be out of date
This document has an older update date than the original, so the information it contains may be out of date. If you're able to read English, see the English version for the most up-to-date information: Kubernetes Object Management
Perangkat kubectl
mendukung beberapa cara untuk membuat dan mengatur objek-objek Kubernetes. Laman ini menggambarkan berbagai macam metodenya. Baca Kubectl gitbook untuk penjelasan pengaturan objek dengan Kubectl secara detail.
Metode pengaturan | Dijalankan pada | Environment yang disarankan | Jumlah penulis yang didukung | Tingkat kesulitan mempelajari |
---|---|---|---|---|
Perintah imperatif | Objek live | Proyek pengembangan (dev) | 1+ | Terendah |
Konfigurasi objek imperatif | Berkas individu | Proyek produksi (prod) | 1 | Sedang |
Konfigurasi objek deklaratif | Direktori berkas | Proyek produksi (prod) | 1+ | Tertinggi |
Ketika menggunakan perintah-perintah imperatif, seorang pengguna menjalankan operasi secara langsung pada objek-objek live dalam sebuah klaster. Pengguna menjalankan operasi tersebut melalui argumen atau flag pada perintah kubectl
.
Ini merupakan cara yang paling mudah untuk memulai atau menjalankan tugas "sekali jalan" pada sebuah klaster. Karena metode ini dijalankan secara langsung pada objek live, tidak ada history yang menjelaskan konfigurasi-konfigurasi terkait sebelumnya.
Menjalankan sebuah instans Container nginx dengan membuat suatu objek Deployment:
kubectl run nginx --image nginx
Melakukan hal yang sama menggunakan sintaks yang berbeda:
kubectl create deployment nginx --image nginx
Beberapa kelebihan metode ini dibandingkan metode konfigurasi objek:
Beberapa kekurangan metode ini dibandingkan metode konfigurasi objek:
Pada konfigurasi objek imperatif, perintah kubectl menetapkan jenis operasi (create, replace, etc.), flag-flag pilihan dan minimal satu nama berkas. Berkas ini harus berisi definisi lengkap dari objek tersebut dalam bentuk YAML atau JSON.
Lihat referensi API untuk info lebih detail mengenai definisi objek.
replace
menggantikan spek yang sudah ada dengan spek yang baru, membuang semua perubahan terhadap objek tersebut yang tidak didefinisikan pada berkas konfigurasi. Metode ini sebaiknya tidak dilakukan pada tipe sumber daya yang spek-nya diperbarui secara independen di luar berkas konfigurasi. Service dengan tipe LoadBalancer
, sebagai contoh, memiliki fieldexternalIPs
yang diperbarui secara independen di luar konfigurasi, dilakukan oleh klaster.Membuat objek yang didefinisikan pada sebuah berkas konfigurasi:
kubectl create -f nginx.yaml
Menghapus objek-objek yang didefinisikan pada dua berkas konfigurasi:
kubectl delete -f nginx.yaml -f redis.yaml
Memperbarui objek yang didefinisikan pada sebuah berkas konfigurasi dengan menimpa konfigurasi live:
kubectl replace -f nginx.yaml
Beberapa kelebihan dibandingkan metode perintah imperatif:
Beberapa kekurangan dibandingkan metode perintah imperatif:
Beberapa kelebihan dibandingkan metode konfigurasi objek deklaratif:
Beberapa kekurangan dibandingkan metode konfigurasi objek deklaratif:
Ketika menggunakan konfigurasi objek deklaratif, seorang pengguna beroperasi pada berkas-berkas konfigurasi objek yang disimpan secara lokal, namun pengguna tidak mendefinisikan operasi yang akan dilakukan pada berkas-berkas tersebut. Operasi create, update, dan delete akan dideteksi secara otomatis per-objek dengan kubectl
. Hal ini memungkinkan penerapan melalui direktori, dimana operasi yang berbeda mungkin diperlukan untuk objek-objek yang berbeda.
patch
supaya hanya perbedaannya saja yang ditulis, daripada menggunakan operasi API replace
untuk menggantikan seluruh konfigurasi objek.Melakukan pemrosesan pada semua berkas konfigurasi objek di direktori configs
, dan melakukan create atau patch untuk objek-objek live. Kamu dapat terlebih dahulu melakukan diff
untuk melihat perubahan-perubahan apa saja yang akan dilakukan, dan kemudian terapkan:
kubectl diff -f configs/ kubectl apply -f configs/
Melakukan pemrosesan direktori secara rekursif:
kubectl diff -R -f configs/ kubectl apply -R -f configs/
Beberapa kelebihan dibandingkan konfigurasi objek imperatif:
Beberapa kekurangan dibandingkan konfigurasi objek imperatif: