4 sebab anda mesti menggunakan Kubernetes

Sirish Raghuram adalah pengasas bersama dan Ketua Pegawai Eksekutif Platform9 Systems.

Seperti yang dapat dibuktikan oleh kebanyakan pembangun perisian moden, kontena telah memberikan kita lebih banyak fleksibiliti untuk menjalankan aplikasi asli cloud pada infrastruktur fizikal dan maya. Container mengemas perkhidmatan yang merangkumi aplikasi dan menjadikannya mudah alih di persekitaran komputasi yang berbeza, untuk penggunaan dev / test dan produksi. Dengan kontena, mudah untuk meningkatkan kemasukan aplikasi dengan pantas untuk memenuhi lonjakan permintaan. Dan kerana bekas menggunakan sumber OS host, beratnya jauh lebih ringan daripada mesin maya. Ini bermaksud kontena menggunakan infrastruktur pelayan yang sangat efisien.

Setakat ini begitu baik. Tetapi walaupun API runtime kontainer sangat sesuai untuk menguruskan kontena individu, API itu sangat tidak memadai ketika menguruskan aplikasi yang mungkin terdiri daripada ratusan kontena yang tersebar di beberapa hos. Kontena perlu dikendalikan dan disambungkan ke dunia luar untuk tugas-tugas seperti penjadualan, pengimbangan beban, dan pengedaran, dan di sinilah alat orkestrasi kontena seperti Kubernetes masuk sendiri.

Sistem sumber terbuka untuk menyebarkan, menskalakan, dan mengelola aplikasi berkontainer, Kubernetes menangani pekerjaan menjadwalkan kontainer ke kluster komputasi dan menguruskan beban kerja untuk memastikannya berjalan seperti yang diharapkan pengguna. Alih-alih meningkatkan operasi sebagai pemikiran semula, Kubernetes menyatukan pengembangan dan operasi perisian dengan reka bentuk. Dengan menggunakan deklaratif, konstruksi infrastruktur-agnostik untuk menerangkan bagaimana aplikasi disusun, bagaimana mereka berinteraksi, dan bagaimana mereka dikendalikan, Kubernetes memungkinkan peningkatan operasi dalam sistem perisian moden.

Kubernetes dibina oleh Google berdasarkan pengalamannya sendiri dalam menjalankan kontena dalam pengeluaran, dan itu pasti banyak kejayaannya kerana penglibatan Google. Google mempunyai beberapa pembangun perisian yang paling berbakat di planet ini, dan ia menjalankan beberapa perkhidmatan perisian terbesar mengikut skala. Gabungan ini memastikan bahawa Kubernetes akan menjadi platform kukuh yang dapat memenuhi keperluan penskalaan hampir mana-mana organisasi. Artikel ini menerangkan mengapa Kubernetes penting dan mengapa ia menandakan langkah penting untuk pasukan devops.

Video berkaitan: Apa itu Kubernetes?

Dalam video 90 saat ini, pelajari tentang Kubernetes, sistem sumber terbuka untuk mengautomasikan aplikasi kontena, dari salah seorang penemu teknologi, Joe Beda, pengasas dan CTO di Heptio.

Kerangka infrastruktur untuk hari ini

Hari-hari ini, pembangun diminta untuk menulis aplikasi yang berjalan di pelbagai persekitaran operasi, termasuk pelayan on-prem khusus, awan peribadi maya, dan awan awam seperti AWS dan Azure. Secara tradisional, aplikasi dan perkakas yang mendukungnya terkait erat dengan infrastruktur yang mendasari, jadi mahal untuk menggunakan model penyebaran lain walaupun ada kelebihannya. Ini bermaksud bahawa aplikasi menjadi bergantung pada lingkungan tertentu dalam beberapa aspek, termasuk masalah prestasi yang berkaitan dengan arsitektur rangkaian tertentu; kepatuhan kepada konstruk khusus penyedia awan, seperti teknik orkestrasi proprietari; dan kebergantungan pada sistem penyimpanan back-end tertentu.

PaaS berusaha mengatasi masalah ini, tetapi sering kali dikenakan syarat yang ketat dalam bidang seperti bahasa pengaturcaraan dan kerangka aplikasi. Oleh itu, PaaS tidak terhad kepada banyak pasukan pembangunan.

Kubernetes menghilangkan kunci masuk infrastruktur dengan menyediakan keupayaan teras untuk kontena tanpa mengenakan sekatan. Ini dapat dicapai melalui gabungan ciri dalam platform Kubernetes, termasuk Pod dan Perkhidmatan.

Pengurusan yang lebih baik melalui modulariti

Bekas membolehkan aplikasi diuraikan ke bahagian yang lebih kecil dengan pemisahan kebimbangan yang jelas. Lapisan abstraksi yang disediakan untuk setiap gambar kontena membolehkan kita memikirkan semula bagaimana aplikasi diedarkan dibina. Pendekatan modular ini memungkinkan pengembangan yang lebih pantas oleh pasukan yang lebih kecil dan lebih fokus yang masing-masing bertanggungjawab untuk kontena tertentu. Ini juga membolehkan kita mengasingkan kebergantungan dan menggunakan komponen komponen yang lebih kecil dan lebih baik.

Tetapi ini tidak dapat dicapai oleh kontena sahaja; ia memerlukan sistem untuk mengintegrasikan dan mengatur bahagian-bahagian modular ini. Kubernetes mencapai ini sebahagiannya menggunakan Pod - biasanya koleksi bekas yang dikendalikan sebagai satu aplikasi. Bekas berkongsi sumber, seperti sistem fail, ruang nama kernel, dan alamat IP. Dengan membiarkan kontena dikolokasi dengan cara ini, Kubernetes menghilangkan godaan untuk menjejalkan terlalu banyak fungsi ke dalam satu gambar bekas.

Konsep Perkhidmatan di Kubernetes digunakan untuk mengumpulkan kumpulan Pod yang menjalankan fungsi serupa. Perkhidmatan dapat dikonfigurasi dengan mudah untuk kebolehtemuan, pengamatan, penskalaan mendatar, dan pengimbangan beban.

Menggunakan dan mengemas kini perisian secara besar-besaran

Perangkat muncul sebagai kaedah untuk mempercepat proses membina, menguji, dan melepaskan perisian. Akibatnya adalah pergeseran penekanan dari mengurus infrastruktur ke mengurus bagaimana perisian digunakan dan diperbaharui secara besar-besaran. Sebilangan besar kerangka infrastruktur tidak menyokong model ini, tetapi Kubernetes tidak, sebahagiannya melalui Pengawal Kubernetes. Terima kasih kepada pengawal, infrastruktur mudah digunakan untuk menguruskan kitaran hayat aplikasi.

Deployment Controller menyederhanakan sebilangan tugas pengurusan yang kompleks. Sebagai contoh:

  • Skalabiliti. Perisian boleh digunakan untuk pertama kalinya secara skala-luar di seluruh Pod, dan penyebaran dapat ditingkatkan masuk atau keluar kapan saja.
  • Penglihatan. Kenalpasti penyebaran yang selesai, dalam proses, dan gagal dengan kemampuan pertanyaan status.
  • Penjimatan masa. Jeda penerapan pada bila-bila masa dan mulakan semula kemudian.
  • Kawalan versi. Kemas kini Pod yang digunakan menggunakan gambar versi aplikasi yang lebih baru dan kembali ke penyebaran yang lebih awal jika versi semasa tidak stabil.

Di antara kemungkinan lain, Kubernetes mempermudah beberapa operasi penyebaran khusus yang sangat berharga bagi pembangun aplikasi moden. Ini termasuk yang berikut:

  • Penskalaan automatik mendatar. Autoskaler Kubernetes secara automatik mengukur jumlah Pod penyebaran berdasarkan penggunaan sumber yang ditentukan (dalam had yang ditentukan).
  • Pengemaskinian berterusan. Kemas kini untuk penyebaran Kubernetes disusun secara "bergulir", di sebilangan Pod penyebaran. Pengemaskinian bergulir ini disusun semasa bekerja dengan had pilihan yang ditentukan pada bilangan Pod yang tidak dapat tersedia dan jumlah Pod ganti yang mungkin wujud buat sementara waktu.
  • Penyebaran kenari. Pola yang berguna ketika menggunakan versi baru dari penyebaran adalah dengan menguji penyebaran baru dalam produksi, sejajar dengan versi sebelumnya, dan meningkatkan penyebaran baru sambil secara bersamaan mengurangi penerapan sebelumnya.

Tidak seperti persembahan PaaS tradisional, semua termasuk, Kubernetes menyediakan garis lintang lebar untuk jenis aplikasi yang disokong. Itu tidak menentukan kerangka aplikasi (seperti Wildfly), menyekat waktu jalan bahasa yang disokong (Java, Python, Ruby), hanya memenuhi aplikasi 12 faktor, atau membezakan "aplikasi" dari "perkhidmatan". Kubernetes menyokong pelbagai jenis beban kerja, termasuk beban kerja tanpa status, bernegara, dan pemprosesan data. Sekiranya aplikasi dapat dijalankan di dalam wadah, aplikasi harus berjalan dengan baik di Kubernetes.

Meletakkan asas untuk aplikasi asli awan

Tidak mengejutkan memandangkan minat terhadap kontena, alat pengurusan dan orkestrasi lain telah muncul. Alternatif yang popular termasuk Apache Mesos dengan Marathon, Docker Swarm, AWS EC2 Container Service (ECS), dan HashiCorp's Nomad.

Masing-masing mempunyai kelebihan. Docker Swarm digabungkan erat dengan Docker runtime, sehingga pengguna dapat beralih dengan mudah dari Docker ke Swarm; Mesos dengan Marathon tidak terhad kepada kontena, tetapi dapat menyebarkan segala jenis aplikasi; AWS ECS lebih mudah diakses oleh pengguna AWS semasa. Walau bagaimanapun, kluster Kubernetes dapat berjalan di EC2 dan berintegrasi dengan perkhidmatan seperti Amazon Elastic Block Storage, Elastic Load Balancing, Auto Scaling Groups, dan sebagainya.

Kerangka ini mulai saling meniru antara satu sama lain dalam ciri dan fungsi, tetapi Kubernetes tetap sangat popular kerana seni bina, inovasi, dan komuniti sumber terbuka yang besar di sekitarnya.

Kubernetes menandakan kejayaan bagi para devops kerana ia membolehkan pasukan mengikuti perkembangan pembangunan perisian moden. Sekiranya tidak ada Kubernetes, pasukan sering dipaksa untuk membuat skrip penyebaran, penskalaan, dan mengemas kini alur kerja perisian mereka sendiri. Beberapa organisasi menggunakan pasukan besar untuk menangani tugas-tugas itu sahaja. Kubernetes membolehkan kami memperoleh utiliti maksimum dari kontena dan membina aplikasi asli cloud yang dapat berjalan di mana saja, bebas dari keperluan khusus awan. Ini jelas merupakan model yang berkesan untuk pembangunan dan operasi aplikasi yang telah kita tunggu-tunggu.

Forum Teknologi Baru menyediakan tempat untuk meneroka dan membincangkan teknologi perusahaan yang baru muncul dalam kedalaman dan luas yang belum pernah terjadi sebelumnya. Pemilihannya bersifat subjektif, berdasarkan pilihan teknologi yang kami percayai penting dan menarik minat pembaca. tidak menerima jaminan pemasaran untuk penerbitan dan berhak untuk mengedit semua kandungan yang disumbangkan. Hantarkan semua pertanyaan ke [email protected]