Apa yang saya pahami dari dokumentasi adalah:
- kubectl create = Membuat sumber daya k8 baru di cluster
- kubectl replace = Memperbarui sumber daya di live cluster
- kubectl apply = Jika saya ingin membuat buat + ganti ( Referensi )
Pertanyaan saya adalah
- Mengapa ada tiga operasi untuk melakukan tugas yang sama dalam sebuah cluster?
- Apa kasus penggunaan untuk operasi ini?
- Bagaimana mereka berbeda satu sama lain di bawah tenda?
kubernetes
kubectl
Suresh Vishnoi
sumber
sumber
kubectl create
dankubectl apply
memiliki efek yang sama atau tidak.kubectl create
akan melempar kesalahan jika sumber daya sudah ada.kubectl apply
biasa. Perbedaannya adalah bahwakubectl create
secara khusus mengatakan "buat hal ini" sedangkankubectl apply
mengatakan "lakukan apa pun yang diperlukan (buat, perbarui, dll) agar terlihat seperti ini".Saat menjalankan skrip CI, Anda akan mengalami masalah dengan perintah imperatif karena membuat menimbulkan kesalahan jika sumber daya sudah ada.
Yang bisa Anda lakukan adalah menerapkan (pola deklaratif) output dari perintah imperatif Anda, dengan menggunakan
--dry-run=true
dan-o yaml
opsi:Perintah di atas tidak akan menimbulkan kesalahan jika sumber daya sudah ada (dan akan memperbarui sumber daya jika diperlukan).
Ini sangat berguna dalam beberapa kasus di mana Anda tidak dapat menggunakan pola deklaratif (misalnya ketika membuat rahasia buruh pelabuhan-registri).
sumber
kubectl delete deployment nginx --ignore-not-found; kubectl create deployment nginx --image=nginx
Hanya untuk memberikan jawaban yang lebih lurus, dari pemahaman saya:
apply
- membuat perubahan tambahan ke objek yang adacreate
- membuat objek baru (sebelumnya tidak ada / dihapus)Mengambil ini dari artikel DigitalOcean yang ditautkan oleh situs web Kubernetes:
sumber
apply
likedocker-compose up -d
+ usecreate
likedocker-compose up -d --build
?Ini adalah perintah penting :
kubectl run
=kubectl create deployment
Keuntungan:
Kekurangan:
Ini adalah konfigurasi objek imperatif :
kubectl create -f your-object-config.yaml
kubectl delete -f your-object-config.yaml
kubectl replace -f your-object-config.yaml
Keuntungan dibandingkan dengan perintah imperatif:
Kerugian dibandingkan dengan perintah imperatif:
Keuntungan dibandingkan dengan konfigurasi objek deklaratif:
Kerugian dibandingkan dengan konfigurasi objek deklaratif:
Ini adalah konfigurasi objek deklaratif
kubectl diff -f configs/
kubectl apply -f configs/
Keuntungan dibandingkan dengan konfigurasi objek imperatif:
Kerugian dibandingkan dengan konfigurasi objek imperatif:
sumber
Penjelasan di bawah ini dari dokumentasi resmi membantu saya mengerti
kubectl apply
.kubectl create
di sisi lain akan menciptakan sumber daya (harus tidak ada).sumber
kubectl create dapat bekerja dengan satu file konfigurasi objek sekaligus. Ini juga dikenal sebagai manajemen imperatif
kubectl buat -f nama file | url
kubectl menerapkan karya dengan direktori dan sub direktori yang berisi file konfigurasi objek yaml. Ini juga dikenal sebagai manajemen deklaratif. Beberapa file konfigurasi objek dari direktori dapat diambil. kubectl terapkan direktori -f /
Detail:
https://kubernetes.io/docs/tasks/manage-kubernetes-objects/declarative-config/ https://kubernetes.io/docs/tugas/manage-kubernetes-objects/imperative-config/
sumber
Kami mencintai Kubernetes karena sekali kita memberi mereka apa yang kita inginkan, ia akan mencari cara untuk mencapainya tanpa keterlibatan kita.
"menciptakan" itu seperti memainkan TUHAN dengan mengambil segala sesuatu ke tangan kita sendiri. Ini bagus untuk debugging lokal ketika Anda hanya ingin bekerja dengan POD dan tidak peduli dengan Deployment / Controller Replikasi.
"apply" dimainkan sesuai aturan. "apply" seperti alat utama yang membantu Anda membuat dan memodifikasi dan tidak memerlukan apa pun dari Anda untuk mengelola pod.
sumber