Hai,
Maaf karena melakukannya dalam urutan yang salah seperti yang disebutkan di sini: https://github.com/kubernetes/kubernetes/blob/master/CONTRIBUTING.md#contributing -a-patch
Saya melakukan #22439 untuk mengatasi masalah ini (di sisi kubectl)
Kebutuhannya adalah untuk dapat memperbarui set daemon dalam satu baris perintah.
Pada dasarnya itu setara dengan melakukan:
kubectl delete -f dsfile --cascade=false
kubectl create -f dsfile
for pod in pods
kubectl delete pod
wait for delete
EDIT: @bgrant0607 disarankan untuk memperbarui ds alih-alih menghapus / membuat ulang
Jika Anda ingin memberikan kontribusi solusi sisi klien, meskipun itu bukan arah jangka panjang yang kami pikirkan (#12143), seharusnya tidak memperkenalkan perintah baru. Sebagai gantinya, kita harus membuat kubectl rolling-update
bekerja untuk DaemonSet (dan juga ReplicaSet, jika Anda ingin).
https://github.com/kubernetes/kubernetes/blob/master/pkg/kubectl/cmd/rollingupdate.go
Karena rolling-update
tidak menentukan jenis sumber daya ( replicationcontroller
), kita harus mengasumsikan rc
secara default. Selain itu, saya pikir sintaksnya secara alami dapat diperluas ke tipe pengontrol lain, menggunakan sintaks tipe/nama.
Sebagai contoh:
kubectl rolling-update daemonset/mydaemon --image=image:v2
Selain perintah itu sendiri, saya tidak mengharapkan prosedur pembaruan untuk membagikan kode.
Perintah rolling-update saat ini membuat ReplicationController baru dan secara bertahap meningkatkannya sambil menurunkan skala yang lama. Dalam kasus --image
, ia melakukan "tarian penghapusan" di akhir untuk mengubah nama kembali ke RC asli -- ia menghapus yang asli, membuat RC lain dengan nama yang sama, dan kemudian menghapus RC sementara yang digunakan untuk meluncurkan gambar baru.
Dalam kasus DaemonSet, kubectl akan melakukan yang sebaliknya: ia akan memperbarui DaemonSet asli dan menghapus pod satu per satu untuk menggantikannya. Jika --image
ditentukan, itu hanya akan dilakukan di akhir. Jika nama DaemonSet baru ditentukan (misalnya, kubectl rolling-update daemonset/mydaemon-v1 -f mydaemon-v2.yaml
), DaemonSet baru akan dibuat pada akhir proses pembaruan, dan yang asli akan dihapus. Kita harus memastikan DaemonSet menanganinya dengan baik, atau kita perlu menghapus DaemonSet asli sebelum membuat yang baru (mirip dengan proposal saya di #7402).
cc @mikedanese @davidopp @madhusudancs @janetkuo @kargakis @pwittrock @gmarek
1.6 termasuk upgrade bergulir untuk DaemonSets.
Terima kasih atas pembaruannya! 👍
Komentar yang paling membantu
1.6 termasuk upgrade bergulir untuk DaemonSets.