Semua ini boleh menjadi sangat membebankan kepada pengguna baru yang cuba memahami paradigma yang agak baru ini. Mari kita bincangkan perbezaan utama antara Kubernetes dan Docker dengan terlebih dahulu menyelami apa yang sebenarnya dimaksudkan oleh teknologi. Sekiranya anda mempunyai keakraban dengan, Docker atau K8 (kependekan dari Kubernetes) maka anda boleh melangkau ke depan dan membaca bahagian TL; DR.
Apa itu Docker?
Docker adalah teknologi kontainerisasi. Anda boleh menjalankan banyak aplikasi yang semuanya diasingkan antara satu sama lain pada sistem operasi yang sama tanpa memerlukan virtualisasi tetapi semua kelebihan persekitaran maya. Fikirkan bekas Docker sebagai VM yang sangat ringan untuk Linux (juga Windows, tetapi itu tidak begitu popular).
Docker mempunyai 3 komponen utama, pertama mesin Docker yang berjalan di latar belakang dan menguruskan kontena yang berjalan dan penyediaannya. Ini memperlihatkan REST API yang digunakan oleh klien Docker dan ini membolehkan pengguna berinteraksi dengan Docker dan membuat kontena baru, atau menguruskan yang sedang berjalan.
Docker, bagaimanapun, adalah aplikasi sistem tunggal. Maknanya, ia berjalan dan menguruskan kontena pada sistem apa pun yang kebetulan dijalankan. Aplikasi yang besar dengan banyak lalu lintas dan berjuta-juta permintaan yang melanda mereka dari seluruh dunia memerlukan lebih daripada satu pelayan. Di situlah Kubernetes masuk.
Apa itu Kubernetes?
Kubernetes memanfaatkan teknologi kontainerisasi, seperti Docker, untuk menjalankan banyak replika aplikasi anda di pelayan dan pusat data di seluruh dunia.
Salah satu teknologi kontainerisasi yang Kubernetes gunakan adalah Docker. Kubernetes terdiri daripada pelbagai perisian yang berbeza untuk menguruskan kluster anda. Ia menyediakan ejen pengurusan kubeadm, yang berjalan pada beberapa nod utama yang dipilih (node adalah VPS atau pelayan fizikal) dan kemudian terdapat nod pekerja dengan Docker dipasang pada mereka dengan kubectl yang bercakap dengan mesin Docker untuk mengautomasikan proses memusingkan bekas atau menurunkannya. Ejen kubectl yang berjalan di semua nod pekerja mengambil pesanan dari nod induk dan memberi mereka maklum balas mengenai keadaan aplikasi yang berjalan di nod mereka. Ini kira-kira bagaimana pemasangan K8 biasanya berfungsi.
Anda juga boleh mengumpulkan bekas Docker yang berbeza ke dalam pakej (dipanggil pod). Sebagai contoh, anda boleh mengumpulkan pangkalan data SQL dan bekas cache Redis bersama dalam pod, kerana anda mahu pangkalan data dan cachenya wujud bersama.
Begitu juga, anda boleh mendedahkan pod ke pod lain sebagai perkhidmatan (juga dikenali sebagai perkhidmatan mikro) sehingga anda dapat mendedahkan 50 pod SQL / Redis sebagai perkhidmatan penyimpanan data ke bahagian depan aplikasi dan sebagainya. Kelebihan yang anda dapat ialah 50 pod dapat berjalan di beberapa pusat data dan walaupun sebilangan kecilnya hilang, yang lain akan mengalami kekurangan.
Kubernetes lebih daripada sekadar teknologi. Ini adalah cara berfikir tentang menjalankan perisian anda di sistem yang diedarkan.
Kubernetes tanpa Docker
Seperti yang anda ketahui dari atas bahawa K8 sangat bergantung pada bekas. Docker hanyalah salah satu daripada banyak teknologi pengkontenaan yang ada di luar sana. Lain-lain termasuk rkt oleh CoreOS, LXC oleh Canonical, Jails on FreeBSD dan Zon di Illumos dan SmartOS. Kubernetes berpotensi diimplementasikan di atas semua teknologi ini. Sebenarnya, ia berfungsi dengan baik dengan rkt oleh CoreOS.
Namun, kerana populariti Docker, komuniti dan organisasi telah melampaui batas dalam memastikan bahawa Docker menawarkan apa sahaja dan semua yang ditentukan oleh Kubernetes. Oleh sebab inilah, malah projek seperti Docker pada macOS dan PC disahkan oleh Kubernetes.
Docker tanpa Kubernetes
Cara Kubernetes mempunyai salah satu sokongan terbaik semasa menggunakan Docker, Docker sendiri sangat bergantung pada Kubernetes untuk menyebarkan kontena pada skala besar. Docker memang mempunyai sistem pengurusan wadah dan orkestrasi tersendiri yang dikenali sebagai Docker Swarm, yang seharusnya menjadi alternatif Kubernetes.
Walaupun Docker Swarm menjadi teknologi asli di Docker, Kubernetes adalah apa yang orang minta dan unjuran pasaran semasa nampaknya menunjukkan bahawa K8 akan memenangi bahagian pasaran terbesar. Docker berhutang dengan kejayaannya terutamanya kerana simbiosisnya dengan Kubernetes.
TL; DR
Untuk menyingkat cerita pendek, Docker adalah teknologi pengkontenan yang dimaksudkan untuk dijalankan pada satu komputer. Kubernetes adalah teknologi pengurusan yang menguruskan sebilangan besar kontena di banyak nod pengkomputeran.
Docker kebetulan menjadi salah satu teknologi paling sesuai di luar sana untuk membina timbunan K8 anda. Anda mulakan dengan memastikan aplikasi anda berjalan sebagai wadah docker, kemudian K8 memastikan bahawa wadah ini dapat berskala ke seluruh pelosok dunia, jika perlu dilakukan pada masa akan datang.