Apa yang sebenarnya dilakukan Kubernet? [Tutup]

134

Kubernet ditagih sebagai kluster "penjadwal / orkestra" wadah, tetapi saya tidak tahu apa artinya ini. Setelah membaca situs Kubernetes dan wiki GitHub (samar-samar), yang terbaik yang bisa saya katakan adalah entah bagaimana mengetahui VM apa yang tersedia / mampu menjalankan wadah Docker Anda, dan kemudian menyebarkannya di sana. Tapi itu hanya dugaan saya, dan saya belum melihat bertele-tele konkret dalam dokumentasi mereka untuk mendukung itu.

Jadi apa yang Kubernetes, persis , dan apa adalah beberapa spesifik masalah yang memecahkan?

smeeb
sumber
Mengingat bahwa semua proyek buruh pelabuhan dunia (kubernetes / armada / segerombolan / dll) mengalami kesulitan dalam menjelaskan apa yang mereka lakukan dan apa yang membedakan mereka, saya berpikir bahwa pertanyaan yang agak plin-plan adalah yang dapat kami sediakan bagi pengguna ... Satu bertanya "apa perbedaan antara armada dan kubernet" dan jawabannya adalah "Anda dapat menggunakan armada untuk meluncurkan kubernet". Kekecewaan. ;-)
Torsten Bronger
3
Saya pikir ini adalah pertanyaan yang benar-benar valid dan menunjukkan beberapa kedatangan singkat di dokumen. Untuk menutupnya sebagai terlalu luas adalah suatu kerugian. Pendekatan terbaik bagi saya, adalah dengan mengunduh basis kode k8s dan mencari di sana misalnya untuk mencari tahu apa itu pod. Itu sangat membantu saya.
Beezer

Jawaban:

113

Tujuan Kubernetes adalah untuk memudahkan mengatur dan menjadwalkan aplikasi Anda di seluruh armada mesin. Pada tingkat tinggi ini adalah sistem operasi untuk kluster Anda.

Pada dasarnya, ini memungkinkan Anda untuk tidak khawatir tentang mesin khusus apa di pusat data yang digunakan setiap aplikasi. Selain itu ia memberikan primitif umum untuk pemeriksaan kesehatan dan replikasi aplikasi Anda di mesin-mesin ini, serta layanan untuk menghubungkan aplikasi Anda ke layanan mikro sehingga setiap lapisan dalam aplikasi Anda dipisahkan dari lapisan lain sehingga Anda dapat skala / memperbarui / mempertahankannya secara mandiri.

Meskipun dimungkinkan untuk melakukan banyak dari hal-hal ini di lapisan aplikasi, solusi seperti itu cenderung sekali dan rapuh, jauh lebih baik untuk memiliki pemisahan kekhawatiran, di mana sistem orkestrasi khawatir tentang cara menjalankan aplikasi Anda, dan Anda khawatir tentang kode yang membentuk aplikasi Anda.

brendan
sumber
3
Terima kasih @brendan (+1) - jawaban Anda pasti membantu. Namun satu pertanyaan lanjutan: bukankah ini yang dilakukan oleh Apache Mesos? Apakah Kubernet dan Mesos saling bersaing? Jika tidak, bisakah mereka digunakan bersama satu sama lain (dan jika demikian, bagaimana)? Terima kasih lagi!
smeeb
2
@smeeb Mesos dan Kubernetes saling melengkapi (Yang terakhir didukung sebagai kerangka kerja Mesos). Mesos menyediakan manajemen sumber daya yang lebih canggih. Dengan kata lain Kubernetes memungkinkan Mesos memutuskan host mana yang digunakan, berdasarkan kapasitas yang tersedia. Mesos mendukung kerangka kerja lain. Jika Anda membaca dokumen, Anda akan melihat bahwa Marathon adalah cara lain untuk meluncurkan kontainer di kluster server yang dikelola Mesos.
Mark O'Connor
18

Saat Anda membaca dari halaman Github -nya :

Kubernetes adalah sistem sumber terbuka untuk mengelola aplikasi kemas di beberapa host, menyediakan mekanisme dasar untuk penyebaran, pemeliharaan, dan penskalaan aplikasi.

Kubernetes adalah:

lean: lightweight, simple, accessible
portable: public, private, hybrid, multi cloud
extensible: modular, pluggable, hookable, composable
self-healing: auto-placement, auto-restart, auto-replication

Kubernet dibangun berdasarkan satu setengah dekade pengalaman di Google dalam menjalankan beban kerja produksi dalam skala, dikombinasikan dengan ide dan praktik terbaik dari komunitas.

Bagi saya Kubernetes adalah alat orkestrasi wadah dari Google. Karena desainnya, Anda dapat mengimplementasikan kompatibilitas dengan mesin wadah apa pun, tapi saya pikir sekarang ini terbatas pada Docker. Ada beberapa konsep penting dalam arsitekturnya:

Kubernetes bekerja dengan konsep-konsep berikut:

Cluster adalah sumber daya komputasi di atas mana wadah Anda dibangun. Kubernet dapat dijalankan di mana saja! Lihat Panduan Memulai untuk petunjuk berbagai layanan.

Pod adalah grup wadah Docker yang dibuat bersama dengan volume bersama. Mereka adalah unit terkecil yang dapat diterapkan yang dapat dibuat, dijadwalkan, dan dikelola dengan Kubernet. Pod dapat dibuat secara individual, tetapi disarankan agar Anda menggunakan pengontrol replikasi walaupun membuat pod tunggal. Lebih lanjut tentang polong.

Pengontrol replikasi mengelola siklus hidup polong. Mereka memastikan bahwa sejumlah pod tertentu dijalankan pada waktu tertentu, dengan membuat atau membunuh pod sesuai kebutuhan. Lebih lanjut tentang pengontrol replikasi.

Layanan memberikan nama dan alamat tunggal yang stabil untuk satu set pod. Mereka bertindak sebagai penyeimbang beban dasar. Lebih lanjut tentang layanan.

Label digunakan untuk mengatur dan memilih kelompok objek berdasarkan kunci: pasangan nilai. Lebih lanjut tentang label.

Jadi, Anda memiliki sekelompok mesin yang membentuk sebuah cluster di mana wadah Anda dijalankan. Anda juga dapat mendefinisikan sekelompok kontainer yang menyediakan layanan, dengan cara yang sama Anda lakukan dengan alat-alat lain seperti ara (yaitu: webapp pod dapat menjadi server rel dan database postgres). Anda juga memiliki alat lain untuk memastikan sejumlah kontainer / pod dari layanan yang berjalan pada saat yang sama, toko nilai kunci, semacam penyeimbang beban bawaan ...

Jika Anda tahu sesuatu tentang coreos, ini adalah solusi yang sangat mirip tetapi dari Google. Algo Kubernetes memiliki integrasi yang baik dengan Google Cloud Engine.

Javier Cortejoso
sumber
2
Terima kasih @jcortejoso (+1) - namun saya punya beberapa pertanyaan lanjutan jika Anda tidak keberatan: (1) Anda mengatakan bahwa Kubernetes mirip dengan CoreOS, tetapi dari Google. Ini menyiratkan bahwa Kubernetes dan CoreOS memecahkan masalah yang sama. Tetapi dari [situs web Kubernetes sendiri] (), ia mengatakan Anda dapat menginstal Kubernetes di CoreOS. Jadi yang mana?!? Apakah Kubernet sama dengan CoreOS, atau apakah Kubernet berjalan di CoreOS dan menyelesaikan masalah tertentu?
smeeb
1
Juga (2) Saya masih tidak melihat nilai dalam "orkestrasi" Kubernetes di sini. Anda menyatakan bahwa Anda dapat menggunakan Kubernetes untuk menentukan sekelompok wadah yang menyediakan layanan, yang membuat saya bertanya-tanya dua hal yang terpisah: (2a) tidak bisakah saya melakukan pengelompokan jenis ini pada lapisan aplikasi, dan meletakkan aplikasi saya di belakang penyeimbang beban nginx? Dan (2b) apakah ini semua yang ada untuk "orkestrasi"? Bagi saya, sekali lagi, sepertinya load balancing yang dapat dengan mudah dicapai di lapisan aplikasi. Pikiran? Sekali lagi terima kasih atas jawaban yang luar biasa!
smeeb
1
Jika kubernetes "ringan", saya ingin tahu apa solusi lemaknya.
Torsten Bronger
@smeeb Saya tidak begitu terbiasa dengan nginx (jadi maafkan kenaifan saya), tapi saya tidak berpikir nginx akan memulai kembali server yang mengalami crash; dan jika mesin (atau seluruh pusat data) turun, nginx tidak akan memulai ulang aplikasi Anda pada mesin yang berbeda. kubernetes akan memastikan Anda selalu menjaga n jumlah "pod" berjalan di suatu tempat, dan tidak masalah di mana atau bagaimana.
kgreenek
10

Kubernetes menyediakan banyak fungsi yang sama dengan Infrastruktur sebagai API Layanan, tetapi ditujukan untuk wadah yang dijadwalkan secara dinamis daripada mesin virtual, dan sebagai Platform sebagai sistem Layanan, tetapi dengan fleksibilitas yang lebih besar, termasuk:

  • pemasangan sistem penyimpanan,
  • membagikan rahasia,
  • pemeriksaan kesehatan aplikasi,
  • mereplikasi contoh aplikasi,
  • penskalaan horizontal otomatis,
  • penamaan dan penemuan,
  • penyeimbang beban,
  • pembaruan bergulir,
  • pemantauan sumber daya,
  • akses log dan konsumsi,
  • dukungan untuk introspeksi dan debugging, dan
  • identitas dan otorisasi.

Jika Anda sudah menggunakan mekanisme lain untuk penemuan layanan, distribusi rahasia, penyeimbangan muatan, pemantauan, dll., Tentu saja Anda dapat terus menggunakannya, tetapi kami bertujuan untuk memudahkan transisi ke Kubernet dari sistem IaaS dan PaaS yang ada dengan menyediakan ini Kegunaan.

https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/#why-do-i-need-kubernetes-and-what-can-it-do

briangrant
sumber