Apa itu Pengendali dan Operator Kubernetes?

Istilah Kubernetes “controller” dan “operator” mengacu pada dua pola berbeda yang memindahkan cluster ke keadaan yang diinginkan. Pengontrol adalah konsep yang mapan sedangkan Operator baru-baru ini muncul untuk menggambarkan pengontrol khusus aplikasi.

Lingkaran Kontrol

Cluster Kubernetes bekerja dalam loop kontrol. Anda menentukan apa yang harus dilakukan cluster dengan menulis dan menerapkan manifes YAML. Pengontrol dalam cluster mendeteksi perubahan yang diminta dan mengambil tindakan untuk menyesuaikan status. Ini terjadi secara tidak sinkron, setelah Anda mengirimkan manifes baru Anda.

Pengontrol bertanggung jawab untuk memantau sumber daya cluster, menilai apakah mereka telah menyimpang dari keadaan yang ditentukan, dan membuat penyesuaian yang diperlukan untuk mengembalikannya ke keselarasan. Ini adalah komponen yang sepenuhnya otomatis yang berjalan tanpa intervensi.

Ada beberapa jenis pengendali dalam ekosistem. Beberapa beroperasi di tingkat cluster sementara yang lain mengelola beban kerja Anda. Sumber daya Kubernetes harian yang Anda tentukan dalam manifes dapat berupa pengontrol: DeploymentReplicaSet, dan contoh serupa memenuhi definisi pengontrol. Mereka menangani objek bersarang untuk mempertahankan jumlah replika yang ditentukan pengguna.

Apa yang Membuat Pengendali?

Pengontrol adalah segala sesuatu di dalam cluster Anda yang memantau setidaknya satu jenis sumber daya Kubernetes lainnya. Pengendali bisa pasif atau aktif. Pengontrol aktif akan mempengaruhi tindakan yang diperlukan itu sendiri; pasif akan mengkomunikasikan perubahan ke komponen lain atau ke server API cluster.

Karena peran pengontrol sangat abstrak, mereka tidak memiliki fungsi umum di luar pelacakan objek tertentu. Anda dapat memiliki pengontrol yang secara otomatis menghapus Pod dengan a eligible-for-autodelete anotasi.

Di Kubernetes, pengontrol hanyalah sebuah pola untuk mengimplementasikan fungsionalitas loop kontrol otomatis. Pengendali individu akan memiliki tujuan dan karakteristik yang unik tetapi mereka selalu memantau objek atau konfigurasi cluster Anda.

Bagaimana dengan Operator?

Operator adalah bentuk khusus dari pengontrol. Operator mengimplementasikan pola pengontrol, yang berarti mereka memindahkan cluster ke keadaan tertentu, tetapi mereka juga memiliki properti tambahan. Istilah ini awalnya diciptakan oleh CoreOS tetapi sekarang juga lebih banyak diadopsi oleh Kubernetes.

Operator disesuaikan untuk aplikasi tertentu. Mereka menambahkan ekstensi ke Kubernetes API melalui definisi sumber daya khusus, membuat tipe objek baru yang digunakan oleh aplikasi yang mereka kelola.

Banyak aplikasi komunitas populer sekarang memiliki operator sendiri. Hal ini mempermudah penginstalan, konfigurasi, dan pemeliharaan perangkat lunak terkelola di klaster Anda. Ada operator untuk etcd, Fluentd, Prometheus, dan banyak proyek penting lainnya yang biasanya diluncurkan dalam cluster.

Beban kerja ini dapat menjadi kompleks dan terdiri dari beberapa komponen individu. Mereka mungkin menyertakan logika khusus aplikasi yang perlu dikelola sepanjang siklus hidup penginstalan.

Konsep operator menyediakan cara untuk memantau aplikasi ini menggunakan prinsip yang sama seperti pengontrol biasa. Operator adalah pengontrol khusus yang menggunakan sumber daya khusus untuk memindahkan aplikasi tertentu ke status yang ditentukan pengguna yang benar.

Anda biasanya mengonfigurasi operator dengan menyediakan data konfigurasi ke sumber daya khusus. Operator menggunakan pengetahuannya tentang aplikasi untuk mengubah data tersebut menjadi tindakan spesifik dalam cluster. Tindakan tersebut akan menghasilkan penginstalan aplikasi yang berfungsi yang cocok dengan status yang ditentukan dalam sumber daya konfigurasi.

Apa yang Digunakan Operator?

Karena operator adalah domain khusus, masing-masing akan menyertakan fungsionalitas yang berbeda. Secara umum, Anda dapat mengharapkan operator untuk menawarkan beberapa fitur berikut:

  • Pemantauan dan peringatan otomatis – Operator biasanya mengetahui saat aplikasi mereka tidak berfungsi dengan baik dan menghasilkan peringatan yang sesuai.
  • Peningkatan versi otomatis dari waktu ke waktu – Operator sering kali memiliki kemampuan untuk secara otomatis menerapkan perubahan pada kluster untuk menginstal pembaruan aplikasi baru saat tersedia. Ini secara signifikan mengurangi beban pemeliharaan untuk tim operasi.
  • Memasang sumber daya khusus – Operator menambahkan sumber daya aplikasi khusus ke server Kubernetes API, menyiapkan cluster untuk menampung beban kerja.
  • Menyediakan penskalaan otomatis – Operator dengan pengetahuan khusus domain dapat mengenali saat jumlah replika yang dikonfigurasi terlalu rendah untuk melayani lalu lintas yang ada dengan nyaman dan menjalankan instans baru untuk mempertahankan kinerja.
  • Manajemen siklus hidup – Operator memastikan bahwa instans aplikasi baru diluncurkan di lingkungan di mana semua persyaratan terpenuhi. Mereka juga akan melakukan pembersihan yang diperlukan setelah replika berhenti.
  • Manajemen penyimpanan dan pencadangan – Beberapa operator membantu menyiapkan penyimpanan persisten. Saat memahami aplikasinya, mereka juga dapat membuat cadangan sebelum menerapkan tindakan yang berpotensi merusak.

Merakit semua fungsi ini dari awal sebelum menerapkan beban kerja baru akan menjadi rumit dan sulit untuk dipertahankan. Operator memungkinkan Anda meluncurkan sistem yang kompleks di cluster Anda menggunakan pendekatan swakelola yang disetujui vendor asli Kubernetes.

Keunggulan operator terlihat jelas pada beberapa aplikasi yang menawarkannya. Perangkat lunak kontrol versi GitLab adalah tumpukan komponen yang kompleks tetapi operatornya menyediakan penskalaan otomatis sepenuhnya, peningkatan dan pencadangan bergulir, serta tumpukan visualisasi metrik menggunakan Prometheus dan Grafana. Semuanya siap digunakan saat Anda menambahkan operator ke cluster Anda.

Operator lain adalah MongoDB: ia menawarkan cara terkelola sepenuhnya untuk mengalokasikan penyimpanan, database, pengguna, dan pengaturan Mongo dari serangkaian spesifikasi yang Anda tentukan. Operator kemudian akan mengonfigurasi cluster Anda sesuai untuk mendukung beban kerja database Anda.

Anda dapat menulis operator Anda sendiri dengan membuat pengontrol menggunakan salah satu pustaka klien Kubernetes. Operator dibangun dengan menggunakan Kubernetes REST API untuk melakukan query dan berinteraksi dengan cluster dan objeknya.

Kesimpulan

Pengendali dan Operator adalah istilah Kubernetes untuk menggambarkan komponen bidang kontrol yang memantau sumber daya dan menerapkan tindakan untuk mengubah status klaster. Sementara pengontrol memperhatikan operasi di level Kubernetes, operator memegang logika yang spesifik domain dan disesuaikan untuk aplikasi individual.

Jika Anda menggunakan operator untuk menginstal aplikasi, ini berarti Anda menambahkan penampil komponen ke instalasi itu, memeriksa apakah itu berfungsi normal, dan mengotomatiskan transisi status untuk pembaruan atau perubahan konfigurasi. Sementara bagan Helm telah memecahkan tantangan penerapan aplikasi dan dependensinya, operator melangkah lebih jauh: bagan tersebut disediakan oleh vendor aplikasi, dengan pengetahuan yang rumit tentang persyaratan beban kerja , dan tetap bertanggung jawab atas penginstalan sepanjang siklus hidupnya.

Operator kemungkinan akan terus tumbuh dalam visibilitas karena aplikasi stateful yang lebih kompleks mulai menawarkannya. Mengotomatiskan pemeliharaan, tugas “dua hari”, dan pemutakhiran membantu mengurangi beban pada tim operasi yang terbebani dan memudahkan pendatang baru untuk bangun dan berjalan dengan penerapan siap produksi.

Leave a Comment

Your email address will not be published. Required fields are marked *