Cara Menetapkan Kebijakan Mulai Ulang Kubernetes yang Berbeda

Cara Menetapkan Kebijakan Mulai Ulang Kubernetes Yang Berbeda



Kami akan berbicara secara khusus tentang berbagai kebijakan mulai ulang Kubernetes di artikel ini. Mari kita bahas terlebih dahulu berbagai kebijakan yang digunakan saat Kubernetes harus di-restart. Anda dapat menggunakan Kebijakan ini untuk menghentikan penerapan beban kerja tertentu di kluster. Sementara memaksakan standar yang ketat dalam klaster biasanya dilakukan untuk memastikan kepatuhan, administrator klaster juga harus mengikuti beberapa praktik terbaik yang telah disarankan.

Apa itu Kebijakan Mulai Ulang Kubernetes?

Setiap pod Kubernetes mengikuti siklus hidup tertentu. Itu dimulai pada tahap 'tertunda' dan, jika satu atau lebih kontainer utama diluncurkan dengan sukses, transisi ke tahap 'berjalan'. Bergantung pada apakah kontainer di dalam pod berhasil atau gagal, proses kemudian beralih ke fase 'berhasil' atau 'gagal'.







Untuk memulai kembali kebijakan pada tingkat penampung yang diterapkan, tiga opsi dapat digunakan:



Selalu

Setiap kali sebuah kontainer berakhir, Kubernetes menghasilkan yang baru karena pod harus selalu aktif.



OnFailure

Jika penampung keluar dengan kode pengembalian selain 0, penampung hanya dimulai ulang sekali. Memulai ulang tidak diperlukan untuk wadah yang mengembalikan 0 (sukses).





Tidak pernah

Penampung gagal dimulai ulang.

Sekarang, di bagian selanjutnya, kita akan membahas bagaimana kamu bisa me-restart sebuah pod.



Bagaimana Cara Memulai Ulang Pod di Kubernetes?

Untuk memulai ulang pod Kubernetes, berikan perintah menggunakan alat kubectl. Ini akan terhubung dengan server KubeAPI. Mari kita jelajahi opsi yang tersedia:

Restart Container di dalam Pod

Sebuah pod dapat menampung beberapa kontainer. Di sisi lain, Anda pada dasarnya terhubung ke wadah utama di dalam pod saat Anda menghubungkannya. Anda dapat menghubungkan ke setiap wadah yang telah Anda tentukan dalam sebuah kasus jika Anda telah menetapkan lebih dari satu.

Anda dapat melihat contoh spesifikasi pod multi-kontainer di bawah ini:


Ini menjelaskan volume bersama dan dua wadah. File HTML akan disajikan oleh wadah NGINX dan setiap detik wadah Ubuntu akan menambahkan stempel tanggal ke file HTML.

Karena kamu tidak menentukan container mana yang akan dihubungkan, maka secara otomatis akan memilih yang pertama (NGINX) ketika kamu mencoba untuk terhubung ke pod itu. Tangkapan layar terlampir di bawah ini:


Anda sekarang dapat mencoba menghentikan proses PID 1 di dalam wadah yang sedang aktif. Jalankan perintah berikut sebagai root untuk melakukannya:


Anda juga dapat menggunakan alat kubectl yang dijelaskan di bawah ini:


Menurut spesifikasi pod, K8 sekarang akan mencoba memulai kembali wadah yang hancur. Untuk itu, perintah 'uraikan' digunakan sebagai berikut:


Berikut adalah hasil dari perintah di atas:


Keadaan saat ini 'berjalan', sedangkan keadaan sebelumnya 'dihentikan'. Ini berarti penampung telah dimulai ulang, menurut ini. Namun, tidak semua kontainer dapat mengakses kredensial root. Inilah sebabnya mengapa metode ini mungkin tidak terlalu berguna.

Memulai ulang Pod dengan Penskalaan

Menskalakan jumlah replika pod ke 0 dan kemudian menskalakannya menjadi 1 adalah cara termudah untuk memulai ulang. Kamu harus membuat Deployment karena perintah scale tidak dapat digunakan pada pod. Inilah cara mudah untuk melakukannya:


Skala ke 0 dan kemudian ke 1 setelah itu. Dengan melakukan ini, pod akan dihentikan dan kemudian diterapkan kembali ke cluster:


Replika diatur ke 1 seperti yang Anda lihat di gambar ini.


Untuk melihat detail penerapan, kami sekarang telah menggunakan 'kubectl get deployments.' Berikut ini adalah daftar perintah dan hasilnya:

Memulai Ulang Pod dengan Menghapusnya dan Menerapkannya Kembali

Dengan menggunakan perintah “kubectl delete”, Anda dapat menghapus sebuah pod dan menerapkannya kembali. Namun, pendekatan ini agak mengganggu, oleh karena itu tidak disarankan.

Memulai Ulang Pod Menggunakan Peluncuran

Untuk memulai ulang pod menggunakan cara yang dijelaskan di atas, Anda harus menghancurkan pod yang ada dan kemudian membuat yang baru, atau menskalakan hitungan replika ke bawah lalu ke atas. Dengan Kubernetes versi 1.15, Anda dapat memulai ulang Deployment secara bergulir. Ini adalah prosedur yang disarankan untuk memulai ulang pod. Cukup masukkan perintah berikut untuk memulai:


Sekarang, jika Anda memperhatikan status penyebaran di terminal yang berbeda, Anda akan melihat alur kejadian sebagai berikut:


Jika sehat, itu akan menurunkan replika Deployment sebelumnya dan memutar replika pod baru. Hasilnya sama, kecuali dalam pendekatan ini, orkestrasi yang mendasarinya ditangani oleh Kubernetes.

Bagaimana Pod Kubernetes Dapat Direstart dengan Berbagai Cara?

Mari kita mulai dengan wadah buruh pelabuhan. Dengan perintah berikut, wadah Docker dapat dimulai ulang:

> buruh pelabuhan me-restart container_id

Namun di Kubernetes, tidak ada perintah yang sebanding untuk memulai ulang pod, terutama jika tidak ada file YAML yang ditentukan. Sebagai alternatif, Anda dapat memulai ulang pod Kubernetes menggunakan perintah kubectl. Perintah berikut terdaftar:

Perintah Kubectl Set Env

Salah satu caranya adalah dengan menggunakan perintah kubectl scale. Ini akan mengubah jumlah replika pod yang perlu di-restart. Di bawah ini adalah contoh perintah tentang cara mengatur replika di pod menjadi dua:

> kubectl scale deployment first-deployment --replika = 2

Peluncuran Mulai Ulang Perintah

Di sini, kami akan mendemonstrasikan cara menggunakan perintah rollout restart untuk memulai ulang pod Kubernetes:

> kubectl rollout restart deployment first-deployment -n demo-namespace

Pengontrol diperintahkan untuk memusnahkan setiap pod satu per satu dengan perintah. Ini kemudian meningkatkan pod baru menggunakan ReplicaSet. Hingga setiap pod baru menjadi lebih baru dari setiap pod saat ini saat pengontrol melanjutkan, proses ini berlanjut.

Perintah Hapus Pod

Bagian ini akan membahas cara menggunakan perintah hapus untuk memulai ulang pod Kubernetes. Anda dapat melihat bahwa kami menggunakan perintah selanjutnya untuk menyingkirkan objek pod API di gambar ini:

. > kubectl hapus pod pertama-pod -n demo_namespace

Yang diharapkan bertentangan dengan menghapus objek pod karena API Kubernetes bersifat deklaratif. Untuk menjaga konsistensi dengan yang diantisipasi, pod dibuat ulang.

Satu pod dapat direstart pada satu waktu menggunakan perintah sebelumnya. Lihat perintah terlampir untuk memulai ulang beberapa pod:

> kubectl menghapus replicaset pods-multiple-n demo_namespace

Perintah yang disebutkan di atas memulai ulang setiap pod dengan menghapus seluruh ReplicaSet pod dan kemudian membuatnya dari awal.

Kesimpulan

Posting ini memberikan informasi tentang berbagai kebijakan mulai ulang Kubernetes. Kami mengilustrasikan setiap tahap dengan bantuan contoh sampel. Juga, cobalah perintah ini dan lihat output apa yang dihasilkannya.