Kubernetes: open source vs vendor

Hai, nama saya Dmitry Krasnov. Selama lebih dari lima tahun sekarang, saya telah mengelola kluster Kubernetes dan membangun arsitektur layanan mikro yang kompleks. Awal tahun ini, kami meluncurkan layanan manajemen klaster Kubernetes berdasarkan Containerum. Mengambil kesempatan ini, saya akan memberi tahu Anda apa Kubernet ini dan bagaimana integrasi dengan vendor berbeda dari open source.

Sebagai permulaan, apa itu Kubernetes. Ini adalah sistem untuk mengelola kontainer pada sejumlah besar inang. Dari bahasa Yunani, omong-omong, itu diterjemahkan sebagai "pilot" atau "juru mudi". Awalnya dikembangkan oleh Google, setelah itu Cloud Native Computing Foundation, sebuah organisasi nirlaba internasional yang menyatukan para pengembang global, pengguna akhir, dan penyedia teknologi wadah, dipindahkan sebagai kontribusi teknologi.



Arahkan sejumlah besar wadah


Sekarang mari kita lihat wadah apa ini. Aplikasi ini dengan semua lingkungannya - terutama perpustakaan tempat program ini bergantung. Semua ini dikemas dalam arsip dan disajikan dalam bentuk gambar yang dapat dijalankan terlepas dari sistem operasi, diuji dan tidak hanya. Tetapi ada masalah - mengelola wadah pada sejumlah besar inang sangat sulit. Oleh karena itu, Kubernetes dibuat.

Gambar kontainer adalah aplikasi plus ketergantungannya. Aplikasi, dependensinya dan gambar sistem file OS terletak di berbagai bagian gambar, yang disebut lapisan. Lapisan dapat digunakan kembali untuk wadah yang berbeda. Misalnya, untuk semua aplikasi di perusahaan, lapisan dasar Ubuntu dapat digunakan. Saat memulai wadah, tidak perlu menyimpan banyak salinan dari satu lapisan dasar pada host. Ini memungkinkan Anda untuk mengoptimalkan penyimpanan dan pengiriman gambar.

Ketika kita ingin memulai aplikasi dari wadah, lapisan yang diperlukan saling tumpang tindih dan sistem file overlay terbentuk. Lapisan untuk perekaman ditumpangkan di atas, yang, ketika wadah dihentikan, dihapus. Ini memastikan bahwa ketika Anda memulai wadah, aplikasi akan selalu memiliki lingkungan yang sama, yang tidak dapat diubah. Ini memastikan kemampuan reproduksi lingkungan pada berbagai sistem operasi host. Apakah itu Ubuntu atau CentOS, lingkungan akan selalu sama. Selain itu, wadah diisolasi dari host menggunakan mekanisme yang dibangun ke dalam kernel Linux. Aplikasi dalam wadah tidak melihat file, proses host dan wadah tetangga. Isolasi aplikasi ini dari OS host menyediakan lapisan keamanan tambahan.

Ada banyak alat untuk mengelola wadah di host. Yang paling populer adalah Docker. Hal ini memungkinkan Anda untuk memastikan siklus hidup kontainer penuh. Namun, ini hanya berfungsi pada satu host. Jika Anda perlu mengelola kontainer di banyak host, Docker dapat mengubah kehidupan para insinyur menjadi neraka. Itu sebabnya Kubernetes diciptakan.

Permintaan untuk Kubernetes justru karena kemampuan mengarahkan kelompok kontainer pada banyak host karena beberapa entitas tunggal. Popularitas sistem menyediakan kemampuan untuk membangun DevOps atau Operasi Pengembangan, di mana Kubernetes digunakan untuk memulai proses DevOps ini sendiri.



Gambar 1. Representasi skematis tentang cara kerja Kubernetes

Otomatisasi penuh


DevOps, pada prinsipnya, adalah otomatisasi proses pengembangan. Secara kasar, pengembang menulis kode yang dituangkan ke dalam repositori. Kemudian kode ini dapat secara otomatis dikumpulkan segera ke dalam wadah dengan semua perpustakaan, diuji dan diluncurkan ke tahap berikutnya - Pementasan, dan kemudian segera ke Produksi.

Bersama dengan Kubernetes, DevOps memungkinkan Anda untuk mengotomatiskan proses ini sehingga proses ini berjalan dengan sedikit atau tanpa partisipasi dari pengembang itu sendiri. Karena ini, perakitan dipercepat secara signifikan, karena pengembang tidak harus melakukan ini di komputernya - ia hanya menulis sepotong kode, mendorong kode ke dalam repositori, dan kemudian pipa mulai, yang mungkin termasuk perakitan, pengujian, proses peluncuran. Dan ini terjadi pada setiap commit, jadi pengujian sedang berlangsung.

Pada saat yang sama, menggunakan wadah memungkinkan Anda untuk memastikan bahwa seluruh lingkungan program ini akan masuk ke produksi persis dalam bentuk di mana ia diuji. Artinya, tidak akan ada masalah dari kategori "pada tes ada beberapa versi, dalam produksi - yang lain, tetapi ketika ditetapkan - semuanya jatuh". Dan karena hari ini kami memiliki tren untuk arsitektur layanan mikro, ketika alih-alih satu aplikasi besar ada ratusan aplikasi kecil, untuk mengelolanya secara manual, Anda akan membutuhkan staf yang sangat besar. Itu sebabnya kami menggunakan Kubernetes.

Pro, Pro, Pro


Jika kita berbicara tentang kelebihan Kubernetes sebagai platform, maka ia memiliki keunggulan signifikan dalam hal mengelola arsitektur layanan-mikro.

  • . — . , — . . , Kubernetes .
  • . Kubernetes . . , . Kubernetes , Service Discovery. IP- Kubernetes. health check` .
  • . . Kubernetes ConfigMap`. . , .
  • Persistent Volumes. , , . . Kubernetes — Persistent Volumes. , , . , .
  • Load Balancer. , Kubernetes Deployment, StatefulSet .., . . Kubernetes . , ? , . Kubernetes Load Balancer. . . , . Kubernetes.

Kubernetes terbaik dalam meluncurkan arsitektur layanan mikro. Menerapkan suatu sistem dalam arsitektur klasik adalah mungkin, tetapi tidak ada gunanya. Jika aplikasi tidak dapat bekerja di beberapa replika, lalu apa bedanya - di Kubernetes atau tidak?

Kubernet sumber terbuka


Open source Kubernetes adalah hal yang hebat: diinstal dan berfungsi. Anda dapat menggunakan di server besi Anda, di infrastruktur Anda, menempatkan penyihir dan pekerja di mana semua aplikasi akan berjalan. Dan yang paling penting - semua ini gratis. Namun, ada nuansa.

  • Yang pertama adalah ketepatan pengetahuan dan pengalaman administrator dan insinyur yang akan menyebarkan dan menemani semua ini. Karena klien menerima kebebasan penuh tindakan di dalam cluster, ia memikul tanggung jawab untuk operabilitas cluster. Dan untuk menghancurkan semuanya di sini sangat sederhana.
  • Yang kedua adalah kurangnya integrasi. Jika Anda menjalankan Kubernetes tanpa platform virtualisasi populer, Anda tidak akan mendapatkan semua manfaat dari program ini. Seperti menggunakan Volume Persisten dan layanan penyeimbang Beban.



Gambar 2. Arsitektur k8s

Kubernet dari vendor


Integrasi dengan penyedia cloud menyediakan dua opsi:

  • Pertama, seseorang cukup mengeklik tombol "buat cluster" dan dapatkan kluster yang sudah dikonfigurasi dan siap untuk bekerja.
  • Kedua, vendor itu sendiri mengatur cluster dan mengkonfigurasi integrasi dengan cloud.

Bagaimana ini terjadi dengan kita. Insinyur yang meluncurkan cluster menunjukkan berapa banyak pekerja yang dia butuhkan dan dengan parameter apa (misalnya, 5 pekerja, masing-masing dengan 10 CPU, 16 GB RAM dan, katakanlah, 100 GB disk). Kemudian ia mendapatkan akses ke cluster yang sudah terbentuk. Pada saat yang sama, pekerja di mana beban diluncurkan sepenuhnya diberikan kepada klien, tetapi seluruh bidang manajemen tetap berada di area tanggung jawab vendor (jika layanan disediakan sesuai dengan model layanan terkelola).

Namun, skema semacam itu memiliki kekurangan. Karena kenyataan bahwa bidang manajemen tetap dengan vendor, vendor tidak memberikan akses penuh ke klien, dan ini mengurangi fleksibilitas dalam bekerja dengan Kubernetes. Kadang-kadang terjadi bahwa klien ingin mengikat beberapa fungsi spesifik ke Kubernetes, misalnya, otentikasi melalui LDAP, dan konfigurasi bidang manajemen tidak mengizinkan ini.



Gambar 3. Contoh kluster Kubernetes dari penyedia cloud

Apa yang harus dipilih: open source atau vendor


Jadi, open source Kubernet atau vendor? Jika kita mengambil Kubernetes open source, maka pengguna ingin melakukan apa yang dia lakukan. Tapi peluang bagus untuk menembak dirinya sendiri di kaki. Dengan Vendor, ini lebih rumit, karena semuanya dipikirkan dan dikonfigurasikan untuk perusahaan. Kelemahan terbesar dari open source Kubernetes adalah persyaratan untuk spesialis. Dengan vendor, perusahaan terhindar dari sakit kepala ini, tetapi harus memutuskan apakah akan membayar spesialis atau vendor.





Nah, pro jelas, kontra juga dikenal. Selalu satu hal: Kubernetes memecahkan banyak masalah dengan mengotomatisasi pengelolaan beberapa wadah. Dan yang mana yang harus dipilih, open source atau vendor - semua orang memutuskan sendiri.

Artikel ini disiapkan oleh Dmitry Krasnov, arsitek utama layanan Containerum dari penyedia #CloudMTS

All Articles