--- title: Melakukan Rollback pada DaemonSet content_type: task weight: 20 min-kubernetes-server-version: 1.7 --- Laman ini memperlihatkan bagaimana caranya untuk melakukan _rollback_ pada sebuah {{< glossary_tooltip term_id="daemonset" >}}. ## {{% heading "prerequisites" %}} {{< include "task-tutorial-prereqs.md" >}} {{< version-check >}} Sebelum lanjut, alangkah baiknya jika kamu telah mengetahui cara untuk [melakukan _rolling update_ pada sebuah DaemonSet](/docs/tasks/manage-daemon/update-daemon-set/). ## Melakukan _rollback_ pada DaemonSet ### Langkah 1: Dapatkan nomor revisi DaemonSet yang ingin dikembalikan Lompati langkah ini jika kamu hanya ingin kembali (_rollback_) ke revisi terakhir. Perintah di bawah ini akan memperlihatkan daftar semua revisi dari DaemonSet: ```shell kubectl rollout history daemonset ``` Perintah tersebut akan menampilkan daftar revisi seperti di bawah: ``` daemonsets "" REVISION CHANGE-CAUSE 1 ... 2 ... ... ``` * Alasan perubahan (_change cause_) kolom di atas merupakan salinan dari anotasi `kubernetes.io/change-cause` yang berkaitan dengan revisi pada DaemonSet. Kamu boleh menyetel _flag_ `--record=true` melalui `kubectl` untuk merekam perintah yang dijalankan akibat dari anotasi alasan perubahan. Untuk melihat detail dari revisi tertentu, jalankan perintah di bawah ini: ```shell kubectl rollout history daemonset --revision=1 ``` Perintah tersebut memberikan detail soal nomor revisi tertentu: ``` daemonsets "" with revision #1 Pod Template: Labels: foo=bar Containers: app: Image: ... Port: ... Environment: ... Mounts: ... Volumes: ... ``` ### Langkah 2: _Rollback_ ke revisi tertentu ```shell # Tentukan nomor revisi yang kamu dapatkan dari Langkah 1 melalui --to-revision kubectl rollout undo daemonset --to-revision= ``` Jika telah berhasil, perintah tersebut akan memberikan keluaran berikut: ``` daemonset "" rolled back ``` {{< note >}} Jika _flag_ `--to-revision` tidak diberikan, maka kubectl akan memilihkan revisi yang terakhir. {{< /note >}} ### Langkah 3: Lihat progres pada saat _rollback_ DaemonSet Perintah `kubectl rollout undo daemonset` memberitahu server untuk memulai _rollback_ DaemonSet. _Rollback_ sebenarnya terjadi secara _asynchronous_ di dalam klaster {{< glossary_tooltip term_id="control-plane" text="_control plane_" >}}. Perintah di bawah ini dilakukan untuk melihat progres dari _rollback_: ```shell kubectl rollout status ds/ ``` Ketika _rollback_ telah selesai dilakukan, keluaran di bawah akan ditampilkan: ``` daemonset "" successfully rolled out ``` ## Memahami revisi DaemonSet Pada langkah `kubectl rollout history` sebelumnya, kamu telah mendapatkan daftar revisi DaemonSet. Setiap revisi disimpan di dalam sumber daya bernama ControllerRevision. Untuk melihat apa yang disimpan pada setiap revisi, dapatkan sumber daya mentah (_raw_) dari revisi DaemonSet: ```shell kubectl get controllerrevision -l = ``` Perintah di atas akan mengembalikan daftar ControllerRevision: ``` NAME CONTROLLER REVISION AGE - DaemonSet/ 1 1h - DaemonSet/ 2 1h ``` Setiap ControllerRevision menyimpan anotasi dan templat dari sebuah revisi DaemonSet. Perintah `kubectl rollout undo` mengambil ControllerRevision yang spesifik dan mengganti templat DaemonSet dengan templat yang tersimpan pada ControllerRevision. Perintah `kubectl rollout undo` sama seperti untuk memperbarui templat DaemonSet ke revisi sebelumnya dengan menggunakan perintah lainnya, seperti `kubectl edit` atau `kubectl apply`. {{< note >}} Revisi DaemonSet hanya bisa _roll_ ke depan. Artinya, setelah _rollback_ selesai dilakukan, nomor revisi dari ControllerRevision (_field_ `.revision`) yang sedang di-_rollback_ akan maju ke depan. Misalnya, jika kamu memiliki revisi 1 dan 2 pada sistem, lalu _rollback_ dari revisi 2 ke revisi 1, ControllerRevision dengan `.revision: 1` akan menjadi `.revision: 3`. {{< /note >}} ## _Troubleshoot_ * Lihat cara untuk melakukan [_troubleshoot rolling update_ pada DaemonSet](/docs/tasks/manage-daemon/update-daemon-set/#troubleshooting).