4 alasan Anda harus menggunakan Kubernetes

Sirish Raghuram adalah salah satu pendiri dan CEO Platform9 Systems.

Seperti yang dapat dibuktikan oleh sebagian besar pengembang perangkat lunak modern, container telah memberi kami fleksibilitas yang jauh lebih besar untuk menjalankan aplikasi cloud-native pada infrastruktur fisik dan virtual. Container mengemas layanan yang terdiri dari aplikasi dan menjadikannya portabel di berbagai lingkungan komputasi yang berbeda, baik untuk penggunaan dev / test dan produksi. Dengan container, mudah untuk meningkatkan instance aplikasi dengan cepat untuk menyesuaikan lonjakan permintaan. Dan karena container menggunakan resource OS host, bobotnya jauh lebih ringan daripada mesin virtual. Ini berarti penampung memanfaatkan infrastruktur server yang mendasarinya dengan sangat efisien.

Sejauh ini bagus. Namun, meskipun API waktu proses penampung sangat cocok untuk mengelola penampung individu, sayangnya mereka tidak memadai dalam hal mengelola aplikasi yang mungkin terdiri dari ratusan penampung yang tersebar di beberapa host. Container perlu dikelola dan dihubungkan ke dunia luar untuk tugas-tugas seperti penjadwalan, load balancing, dan distribusi, dan di sinilah alat orkestrasi container seperti Kubernetes hadir.

Sistem open source untuk menerapkan, menskalakan, dan mengelola aplikasi dalam container, Kubernetes menangani pekerjaan penjadwalan container ke dalam cluster komputasi dan mengelola beban kerja untuk memastikannya berjalan sesuai keinginan pengguna. Alih-alih menjalankan operasi sebagai renungan, Kubernetes menyatukan pengembangan perangkat lunak dan operasi dengan desain. Dengan menggunakan konstruksi deklaratif, infrastruktur-agnostik untuk mendeskripsikan bagaimana aplikasi disusun, bagaimana mereka berinteraksi, dan bagaimana mereka dikelola, Kubernetes memungkinkan peningkatan yang sangat besar dalam pengoperasian sistem perangkat lunak modern.

Kubernetes dibangun oleh Google berdasarkan pengalamannya sendiri dalam menjalankan container dalam produksi, dan keberhasilannya pasti banyak berkat keterlibatan Google. Google memiliki beberapa pengembang perangkat lunak paling berbakat di planet ini, dan menjalankan beberapa layanan perangkat lunak terbesar berdasarkan skala. Kombinasi ini memastikan bahwa Kubernetes akan menjadi platform yang kokoh yang dapat memenuhi kebutuhan penskalaan hampir semua organisasi. Artikel ini menjelaskan mengapa Kubernetes penting dan mengapa ini menandai langkah maju yang signifikan bagi tim developer.

Video terkait: Apa itu Kubernetes?

Dalam video 90 detik ini, pelajari tentang Kubernetes, sistem open-source untuk mengotomatiskan aplikasi dalam container, dari salah satu penemu teknologi, Joe Beda, pendiri dan CTO di Heptio.

Kerangka infrastruktur untuk hari ini

Saat ini, pengembang diminta untuk menulis aplikasi yang berjalan di berbagai lingkungan operasi, termasuk server lokal khusus, cloud pribadi virtual, dan cloud publik seperti AWS dan Azure. Secara tradisional, aplikasi dan perkakas yang mendukungnya telah terkait erat dengan infrastruktur yang mendasarinya, sehingga mahal untuk menggunakan model penerapan lain meskipun potensi keuntungannya. Ini berarti bahwa aplikasi menjadi bergantung pada lingkungan tertentu dalam beberapa hal, termasuk masalah kinerja yang terkait dengan arsitektur jaringan tertentu; kepatuhan pada konstruksi khusus penyedia cloud, seperti teknik orkestrasi kepemilikan; dan ketergantungan pada sistem penyimpanan back-end tertentu.

PaaS mencoba untuk mengatasi masalah ini, tetapi seringkali dengan mengorbankan persyaratan yang ketat di area seperti bahasa pemrograman dan kerangka aplikasi. Jadi, PaaS terlarang bagi banyak tim pengembangan.

Kubernetes menghilangkan penguncian infrastruktur dengan menyediakan kemampuan inti untuk kontainer tanpa memberlakukan batasan. Ini mencapai ini melalui kombinasi fitur dalam platform Kubernetes, termasuk Pod dan Layanan.

Manajemen yang lebih baik melalui modularitas

Wadah memungkinkan aplikasi untuk diuraikan menjadi bagian-bagian yang lebih kecil dengan pemisahan perhatian yang jelas. Lapisan abstraksi yang disediakan untuk gambar container individual memungkinkan kita memikirkan kembali secara mendasar bagaimana aplikasi terdistribusi dibangun. Pendekatan modular ini memungkinkan pengembangan yang lebih cepat oleh tim yang lebih kecil dan lebih fokus yang masing-masing bertanggung jawab atas container tertentu. Ini juga memungkinkan kita untuk mengisolasi dependensi dan memanfaatkan lebih luas komponen yang disetel dengan baik dan lebih kecil.

Tetapi ini tidak dapat dicapai dengan kontainer saja; itu membutuhkan sistem untuk mengintegrasikan dan mengatur bagian-bagian modular ini. Kubernetes mencapai ini sebagian menggunakan Pod — biasanya kumpulan container yang dikontrol sebagai satu aplikasi. Wadah berbagi sumber daya, seperti sistem file, ruang nama kernel, dan alamat IP. Dengan mengizinkan penampung untuk ditempatkan dengan cara ini, Kubernetes menghilangkan godaan untuk menjejalkan terlalu banyak fungsi ke dalam satu gambar penampung.

Konsep Layanan di Kubernetes digunakan untuk mengelompokkan kumpulan Pod yang menjalankan fungsi serupa. Layanan dapat dengan mudah dikonfigurasi untuk dapat ditemukan, observasi, penskalaan horizontal, dan load balancing.

Menerapkan dan memperbarui perangkat lunak dalam skala besar

Devops muncul sebagai metode untuk mempercepat proses membangun, menguji, dan merilis perangkat lunak. Akibat yang ditimbulkannya adalah pergeseran penekanan dari mengelola infrastruktur menjadi mengelola bagaimana perangkat lunak digunakan dan diperbarui dalam skala besar. Sebagian besar framework infrastruktur tidak mendukung model ini, tetapi Kubernetes mendukungnya, sebagian melalui Kubernetes Controllers. Berkat pengontrol, mudah menggunakan infrastruktur untuk mengelola siklus hidup aplikasi.

Deployment Controller menyederhanakan sejumlah tugas manajemen yang kompleks. Sebagai contoh:

  • Skalabilitas. Software dapat di-deploy untuk pertama kali dengan cara scale-out di seluruh Pod, dan deployment dapat diskalakan masuk atau keluar kapan saja.
  • Visibilitas. Identifikasi penerapan yang selesai, dalam proses, dan gagal dengan kemampuan kueri status.
  • Penghematan waktu. Jeda penerapan kapan saja dan lanjutkan nanti.
  • Kontrol versi. Perbarui Pod yang di-deploy menggunakan versi gambar aplikasi yang lebih baru dan kembalikan ke penerapan sebelumnya jika versi saat ini tidak stabil.

Di antara kemungkinan lainnya, Kubernetes menyederhanakan beberapa operasi penerapan tertentu yang sangat berharga bagi pengembang aplikasi modern. Ini termasuk yang berikut:

  • Penskalaan otomatis horizontal. Autoscaler Kubernetes secara otomatis mengukur jumlah Pod yang diterapkan berdasarkan penggunaan resource yang ditentukan (dalam batas yang ditentukan).
  • Pembaruan berkelanjutan. Pembaruan pada penerapan Kubernetes diatur dalam "mode bergulir", di seluruh Pod penerapan. Pembaruan berkelanjutan ini diatur saat bekerja dengan batas opsional yang telah ditentukan sebelumnya pada jumlah Pod yang tidak tersedia dan jumlah Pod cadangan yang mungkin ada untuk sementara.
  • Penerapan Canary. Pola yang berguna saat menerapkan versi baru penerapan adalah dengan terlebih dahulu menguji penerapan baru dalam produksi, secara paralel dengan versi sebelumnya, dan meningkatkan penerapan baru sekaligus menurunkan penerapan sebelumnya.

Tidak seperti penawaran PaaS tradisional yang mencakup semua, Kubernetes memberikan garis lintang yang luas untuk jenis aplikasi yang didukung. Itu tidak menentukan kerangka kerja aplikasi (seperti Wildfly), membatasi waktu proses bahasa yang didukung (Java, Python, Ruby), hanya melayani aplikasi 12 faktor, atau membedakan "aplikasi" dari "layanan." Kubernetes mendukung berbagai macam beban kerja, termasuk beban kerja stateless, stateful, dan pemrosesan data. Jika sebuah aplikasi dapat berjalan di sebuah kontainer, itu harus berjalan dengan baik di Kubernetes.

Meletakkan dasar untuk aplikasi cloud-native

Tidak mengherankan mengingat minat pada container, alat manajemen dan orkestrasi lainnya telah muncul. Alternatif populer termasuk Apache Mesos dengan Marathon, Docker Swarm, AWS EC2 Container Service (ECS), dan Nomad HashiCorp.

Masing-masing memiliki kelebihannya sendiri. Docker Swarm digabungkan dengan runtime Docker, sehingga pengguna dapat beralih dengan mudah dari Docker ke Swarm; Mesos dengan Marathon tidak terbatas pada kontainer, tetapi dapat menerapkan segala jenis aplikasi; ECS AWS lebih mudah diakses oleh pengguna AWS saat ini. Namun, kluster Kubernetes dapat berjalan di EC2 dan berintegrasi dengan layanan seperti Amazon Elastic Block Storage, Elastic Load Balancing, Auto Scaling Groups, dan sebagainya.

Kerangka kerja ini mulai menduplikasi satu sama lain dalam fitur dan fungsionalitas, tetapi Kubernetes tetap sangat populer karena arsitekturnya, inovasi, dan komunitas open source yang besar di sekitarnya.

Kubernetes menandai terobosan bagi para pengembang karena memungkinkan tim untuk mengimbangi kebutuhan pengembangan perangkat lunak modern. Dengan tidak adanya Kubernetes, tim sering kali dipaksa untuk membuat skrip penerapan perangkat lunak mereka sendiri, penskalaan, dan memperbarui alur kerja. Beberapa organisasi mempekerjakan tim besar untuk menangani tugas-tugas itu sendirian. Kubernetes memungkinkan kita mendapatkan utilitas maksimum dari container dan membangun aplikasi cloud-native yang dapat berjalan di mana saja, terlepas dari persyaratan khusus cloud. Ini jelas merupakan model yang efisien untuk pengembangan dan operasi aplikasi yang telah kita tunggu-tunggu.

Forum Teknologi Baru menyediakan tempat untuk mengeksplorasi dan mendiskusikan teknologi perusahaan yang sedang berkembang secara mendalam dan luas. Pemilihannya subjektif, berdasarkan pilihan teknologi yang kami yakini penting dan paling menarik bagi pembaca. tidak menerima jaminan pemasaran untuk publikasi dan berhak untuk mengedit semua konten yang dikontribusikan. Kirim semua pertanyaan ke [email protected]