Edit This Page

Melakukan Rollback pada DaemonSet

Laman ini memperlihatkan bagaimana caranya untuk melakukan rollback pada sebuah DaemonSetEnsures a copy of a Pod is running across a set of nodes in a cluster. .

Sebelum mulai

Kamu harus memiliki klaster Kubernetes, dan perangkat baris perintah kubectl juga harus dikonfigurasikan untuk berkomunikasi dengan klaster kamu. Jika kamu belum punya klaster, kamu dapat membuatnya dengan menggunakan Minikube, atau kamu dapat menggunakan salah satu tempat bermain Kubernetes ini:

Kubernetes servermu harus ada di versi yang sama atau lebih baru 1.7. Untuk melihat versi, tekan kubectl version.

Sebelum lanjut, alangkah baiknya jika kamu telah mengetahui cara untuk melakukan rolling update pada sebuah DaemonSet.

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:

kubectl rollout history daemonset <nama-daemonset>

Perintah tersebut akan menampilkan daftar revisi seperti di bawah:

daemonsets "<nama-daemonset>"
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:

kubectl rollout history daemonset <daemonset-name> --revision=1

Perintah tersebut memberikan detail soal nomor revisi tertentu:

daemonsets "<nama-daemonset>" with revision #1
Pod Template:
Labels:       foo=bar
Containers:
app:
 Image:        ...
 Port:         ...
 Environment:  ...
 Mounts:       ...
Volumes:      ...

Langkah 2: Rollback ke revisi tertentu

# Tentukan nomor revisi yang kamu dapatkan dari Langkah 1 melalui --to-revision
kubectl rollout undo daemonset <nama-daemonset> --to-revision=<nomor-revisi>

Jika telah berhasil, perintah tersebut akan memberikan keluaran berikut:

daemonset "<nama-daemonset>" rolled back
Catatan: Jika flag --to-revision tidak diberikan, maka kubectl akan memilihkan revisi yang terakhir.

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 _control plane_The container orchestration layer that exposes the API and interfaces to define, deploy, and manage the lifecycle of containers. .

Perintah di bawah ini dilakukan untuk melihat progres dari rollback:

kubectl rollout status ds/<nama-daemonset>

Ketika rollback telah selesai dilakukan, keluaran di bawah akan ditampilkan:

daemonset "<nama-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:

kubectl get controllerrevision -l <kunci-selektor-daemonset>=<nilai-selektor-daemonset>

Perintah di atas akan mengembalikan daftar ControllerRevision:

NAME                               CONTROLLER                     REVISION   AGE
<nama-daemonset>-<hash-revisi>   DaemonSet/<nama-daemonset>     1          1h
<nama-daemonset>-<hash-revisi>   DaemonSet/<nama-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.

Catatan: 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.

Troubleshoot