Kubernetes vs Docker: Memahami bekas dan orkestrasi

Sekiranya anda mengikuti tren terkini dalam pengembangan perisian, terdapat dua istilah yang anda pasti temui berulang kali: Docker dan Kubernetes, yang pada dasarnya sangat pendek untuk  kontena  dan  orkestrasi .

Wadah Docker telah membantu melancarkan proses pemindahan aplikasi melalui pengembangan dan pengujian dan ke produksi, sementara Docker dan Kubernetes telah membantu menemukan kembali cara aplikasi dibangun dan digunakan - sebagai koleksi perkhidmatan mikro dan bukannya tumpukan monolitik.

Mengapa Docker dan Kubernetes penting, bagaimana mereka mengubah pembangunan perisian, dan apa peranan masing-masing dalam proses tersebut? Saya akan cuba menjawab soalan-soalan di bawah.

Docker dan bekas

Kontena - disokong di Linux, Windows, dan sistem operasi moden yang lain - membenarkan perisian berjalan dalam persekitaran mini serba lengkap yang terasing dari sistem yang lain. Bekas telah disamakan dengan VM, tetapi bukan VM — jauh lebih ramping, lebih cepat untuk memulakan dan berhenti, dan jauh lebih fleksibel dan mudah alih. Oleh kerana bekas boleh diputar ke atas atau ke bawah atau diperkecil dalam atau di luar dalam beberapa saat, alat ini memudahkan untuk menjalankan aplikasi di persekitaran elastik seperti awan. 

Linux dan sistem operasi lain telah menyokong aplikasi berkontena selama bertahun-tahun, tetapi bekerja dengan kontena tidak begitu mesra pengguna. Docker, dalam sumber terbuka dan inkarnasi komersial, adalah perisian yang menjadikan kontena sebagai komoditi yang mesra pengguna dan mesra pemaju. Docker menyediakan sekumpulan alat dan metafora umum untuk kontena sehingga anda dapat mengemas aplikasi dalam gambar kontena yang dapat digunakan dengan mudah dan digunakan semula di organisasi anda sendiri atau di tempat lain.

Ringkasnya, Docker menjadikannya pantas untuk membuat gambar kontena, versi, membagikannya, memindahkannya, dan menyebarkannya ke host yang sesuai dengan Docker sebagai wadah yang dijalankan.

Bilakah saya menggunakan Docker dan bekas?

Docker dan kontena sangat sesuai untuk ketika anda menghadapi beban kerja yang mesti mempunyai satu atau lebih kualiti berikut:

  • Skalabiliti elastik.  Anda tidak tahu berapa banyak aplikasi yang perlu anda jalankan untuk memenuhi permintaan. Aplikasi atau perkhidmatan berkontainer dapat ditingkatkan untuk memenuhi permintaan dengan menyebarkan lebih sedikit atau lebih contoh bekasnya.
  • Pengasingan.  Anda tidak mahu aplikasi mengganggu aplikasi lain. Mungkin anda akan menjalankan pelbagai versi aplikasi secara bersebelahan untuk memenuhi semakan API yang berbeza. Atau mungkin anda ingin memastikan sistem yang mendasari tetap bersih (selalu idea yang baik).
  • Kemudahalihan.  Anda perlu menjalankan aplikasi ini dalam pelbagai persekitaran, dan anda memerlukan setiap penyediaan dapat dihasilkan semula. Kontena membolehkan anda mengemas seluruh lingkungan waktu proses aplikasi anda, menjadikan aplikasi mudah digunakan di mana sahaja anda menemui hos yang serasi dengan Docker — desktop pemaju, mesin uji QA, besi tempatan, atau awan jauh.

Ketahui lebih lanjut mengenai Docker dan bekas

  • Apa itu Docker? Percikan untuk revolusi kontena
  • Mengapa anda mesti menggunakan Docker dan bekas
  • Mulakan dengan Docker
  • Manfaat tersembunyi Docker untuk QA
  • 12 alat sumber terbuka yang menjadikan Docker lebih baik
  • Lebih banyak berita, analisis, bagaimana pendapat, ulasan dan nasihat Docker

Kubernetes dan orkestrasi bekas

Kontena dirancang terutamanya untuk mengasingkan proses atau aplikasi antara satu sama lain dan sistem yang mendasari. Membuat dan menggunakan kontena individu adalah mudah. Tetapi bagaimana jika anda ingin mengumpulkan beberapa kontena - katakanlah, pangkalan data, front-end web, back-end komputasi - menjadi aplikasi besar yang dapat dikelola sebagai unit, tanpa perlu khawatir menggunakan, menghubungkan, mengurus, dan penskalaan setiap bekas itu secara berasingan? Anda memerlukan kaedah untuk  mengatur  semua bahagian menjadi keseluruhan berfungsi.

Itulah tugas yang dilakukan oleh Kubernetes. Sekiranya kontena adalah penumpang pelayaran, Kubernetes adalah pengarah pelayaran.

Kubernetes, berdasarkan proyek yang dibuat di Google, menyediakan cara untuk mengotomatisasi penyebaran dan pengurusan aplikasi berbilang kontena di beberapa hos, tanpa harus menguruskan setiap kontena secara langsung. Pembangun menerangkan susun atur aplikasi di beberapa bekas, termasuk perincian seperti bagaimana setiap kontena menggunakan rangkaian dan penyimpanan. Kubernetes mengendalikan selebihnya pada waktu runtime. Ia juga menangani pengurusan perincian seperti rahsia dan konfigurasi aplikasi.

Kubernetes memerlukan sejumlah kepakaran untuk digunakan dengan baik, walaupun ini jauh lebih banyak daripada penyelesaian turnkey daripada dulu. Beberapa kemajuan dalam kemudahan penggunaan disebabkan oleh resipi yang tersedia untuk aplikasi biasa (Helm chart); sebahagiannya disebabkan oleh sebilangan besar pengedaran Kubernetes yang dihasilkan oleh firma jenama nama (Red Hat, Canonical, Docker) yang bekerjasama dengan timbunan aplikasi dan kerangka pembangunan yang popular.

Bilakah saya menggunakan Kubernetes dan orkestrasi kontena?

Aplikasi mudah dikemas yang melayani sebilangan kecil pengguna biasanya tidak memerlukan orkestrasi, apalagi Kubernetes. Tetapi jika aplikasi mempunyai lebih dari sekadar tahap fungsi sepele atau jumlah pengguna yang sepele, menjadi sukar untuk tidak menemukan kembali roda yang disediakan oleh sistem orkestrasi. Berikut adalah beberapa peraturan untuk menentukan kapan orkestrasi harus memasukkan gambar.

  • Aplikasi anda rumit.  Sebarang aplikasi yang melibatkan lebih dari dua kontena mungkin sesuai dengan bil. Walaupun begitu, aplikasi sederhana yang hanya melayani sebilangan kecil pengguna mungkin disusun melalui penyelesaian yang lebih minimum seperti mod kawanan Docker dan bukannya Kubernetes.
  • Aplikasi anda mempunyai permintaan tinggi untuk penskalaan dan ketahanan.  Kubernetes dan orkestrator lain membolehkan anda mengimbangi muatan dan memutar bekas untuk memenuhi permintaan secara deklaratif, dengan menerangkan keadaan sistem yang diinginkan dan bukannya mengekod reaksi terhadap perubahan keadaan dengan tangan.
  • Anda ingin memanfaatkan teknik CI / CD moden.  Sistem orkestrasi menyokong corak penyebaran untuk aplikasi yang menggunakan penyebaran biru / hijau atau peningkatan bergulir.

Mungkin akan datang suatu hari ketika Docker dan Kubernetes dikalahkan oleh abstraksi yang lebih mesra, dan memberi jalan kepada cara yang lebih elegan untuk membuat dan menguruskan kontena. Namun, buat masa ini, Docker dan Kubernetes sangat penting untuk diketahui dan difahami.

Ketahui lebih lanjut mengenai Kubernetes dan orkestrasi

  • Apa itu Kubernetes? Platform aplikasi anda yang seterusnya
  • 4 sebab anda mesti menggunakan Kubernetes
  • 10 pengedaran Kubernetes yang memimpin revolusi kontena
  • Kubernetes Terurus: AWS vs Azure vs Google Cloud
  • Hello MicroK8s: Kubernetes yang lebih ringkas
  • Apa yang baru di Kubernetes
  • Lebih banyak berita, petunjuk, ulasan, dan analisis Kubernetes