Apa itu Kubernetes? Platform aplikasi anda yang seterusnya

Kubernetes adalah platform sumber terbuka yang popular untuk orkestrasi kontena - iaitu, untuk pengurusan aplikasi yang dibina daripada banyak, jangka masa serentak yang disebut wadah. Container menjadi semakin popular sejak projek containerization Docker dilancarkan pada tahun 2013, tetapi aplikasi containerized yang besar dan diedarkan menjadi sukar untuk dikoordinasikan. Dengan menjadikan aplikasi kontainer lebih mudah dikendalikan secara besar-besaran, Kubernetes telah menjadi bahagian penting dalam revolusi kontena.

Apakah orkestrasi kontena?

Kontena menyokong pemisahan kebimbangan seperti VM tetapi dengan overhead yang jauh lebih sedikit dan fleksibiliti yang jauh lebih besar. Akibatnya, kontainer telah membentuk kembali cara orang berpikir untuk mengembangkan, menggunakan, dan memelihara perisian. Dalam seni bina kontena, perkhidmatan yang berbeza yang membentuk aplikasi dikemas ke dalam wadah terpisah dan digunakan di sekumpulan mesin fizikal atau maya. Tetapi ini menimbulkan kebutuhan untuk orkestrasi kontainer - alat yang mengotomatisasi penyebaran, pengelolaan, penskalaan, jaringan, dan ketersediaan aplikasi berbasis wadah.

Apa itu Kubernetes?

Kubernetes adalah projek sumber terbuka yang telah menjadi salah satu alat orkestrasi kontena yang paling popular di sekitar; ini membolehkan anda menggunakan dan mengurus aplikasi multi-kontainer pada skala besar. Walaupun dalam praktiknya Kubernetes paling sering digunakan dengan Docker, platform wadah yang paling popular, ia juga dapat berfungsi dengan sistem kontena yang sesuai dengan piawaian Open Container Initiative (OCI) untuk format gambar kontena dan masa berjalan. Dan kerana Kubernetes adalah sumber terbuka, dengan sedikit larangan bagaimana ia dapat digunakan, ia dapat digunakan secara bebas oleh siapa saja yang ingin menjalankan kontena, di mana sahaja mereka mahu menjalankannya - di tempat, di awan awam, atau keduanya .

Google dan Kubernetes

Kubernetes memulakan hidup sebagai projek dalam Google. Ini adalah penerus - walaupun bukan keturunan langsung - Google Borg, alat pengurusan kontena sebelumnya yang digunakan Google secara dalaman. Google membuka Kubernetes sumber pada tahun 2014, sebahagiannya kerana seni bina perkhidmatan mikro yang diedarkan yang difasilitasi oleh Kubernetes menjadikannya mudah untuk menjalankan aplikasi di cloud. Google melihat penggunaan kontena, perkhidmatan mikro, dan Kubernetes berpotensi mendorong pelanggan ke perkhidmatan awannya (walaupun Kubernetes pasti bekerjasama dengan Azure dan AWS juga). Kubernetes kini dikendalikan oleh Cloud Native Computing Foundation, yang berada di bawah payung Linux Foundation.

Kubernetes vs Docker dan Kubernetes vs. Docker Swarm

Kubernetes tidak menggantikan Docker, tetapi menambahnya. Namun, Kubernetes memang menggantikan beberapa teknologi peringkat tinggi yang muncul di sekitar Docker.

Salah satu teknologi tersebut ialah Docker Swarm, orkestrator yang digabungkan dengan Docker. Masih mungkin untuk menggunakan Docker Swarm dan bukannya Kubernetes, tetapi Docker Inc. telah memilih untuk menjadikan Kubernetes sebagai sebahagian daripada edisi Docker Community dan Docker Enterprise ke depan.

Bukan bahawa Kubernetes adalah pengganti drop-in untuk Docker Swarm. Kubernetes jauh lebih kompleks daripada Swarm, dan memerlukan lebih banyak kerja untuk digunakan. Tetapi sekali lagi, karya ini bertujuan untuk memberikan hasil yang besar dalam jangka panjang - infrastruktur aplikasi yang lebih terkawal dan berdaya tahan. Untuk kerja-kerja pembangunan, dan kelompok kontena yang lebih kecil, Docker Swarm memberikan pilihan yang lebih mudah. 

Kubernetes vs Mesos

Projek lain yang mungkin pernah anda dengar sebagai pesaing Kubernetes adalah Mesos. Mesos adalah projek Apache yang awalnya muncul dari pemaju di Twitter; ia sebenarnya dilihat sebagai jawapan untuk projek Google Borg.

Mesos sebenarnya menawarkan perkhidmatan orkestrasi kontena, tetapi cita-citanya melampaui itu: ia bertujuan untuk menjadi sejenis sistem operasi awan yang dapat mengkoordinasikan komponen kontena dan bukan kontena. Untuk tujuan itu, banyak platform yang berbeza dapat dijalankan di Mesos - termasuk Kubernetes itu sendiri.

Senibina Kubernetes: Bagaimana Kubernetes berfungsi

Seni bina Kubernetes menggunakan pelbagai konsep dan pengabstrakan. Beberapa di antaranya adalah variasi pada konsep yang sudah ada dan sudah biasa, tetapi yang lain khusus untuk Kubernetes.

Kluster Kubernetes

Abstraksi Kubernetes peringkat tertinggi, kluster , merujuk kepada kumpulan mesin yang menjalankan Kubernetes (itu sendiri aplikasi berkelompok) dan bekas yang dikendalikan olehnya. Kluster Kubernetes mesti mempunyai master , sistem yang memerintahkan dan mengendalikan semua mesin Kubernetes lain dalam kluster. Kluster Kubernetes yang sangat banyak meniru kemudahan master di pelbagai mesin. Tetapi hanya satu master pada satu masa yang menjalankan penjadual kerja dan pengawal-pengurus.

Nod dan pod Kubernetes

Setiap kluster mengandungi nod Kubernetes . Nod mungkin mesin fizikal atau VM. Sekali lagi, idenya adalah abstraksi: Apa sahaja aplikasi berjalan, Kubernetes menangani penyebaran pada substrat itu. Bahkan Kubernetes memungkinkan untuk memastikan bahawa bekas tertentu hanya berjalan pada VM atau hanya pada logam kosong.

Nod menjalankan pod , objek Kubernetes paling asas yang boleh dibuat atau diuruskan. Setiap pod mewakili satu contoh aplikasi atau proses berjalan di Kubernetes, dan terdiri dari satu atau lebih bekas. Kubernetes memulakan, berhenti, dan meniru semua bekas dalam pod sebagai satu kumpulan. Pod menyimpan perhatian pengguna pada aplikasi, bukan pada bekas itu sendiri. Butiran mengenai bagaimana Kubernetes perlu dikonfigurasi, dari keadaan pod ke atas, disimpan di Etcd , sebuah kedai nilai kunci yang diedarkan.

Pod dibuat dan dihancurkan pada node yang diperlukan untuk menepati keadaan yang dikehendaki yang ditentukan oleh pengguna dalam definisi pod. Kubernetes memberikan abstraksi yang disebut pengawal untuk menangani logistik bagaimana pod diputar, dilancarkan, dan diputar. Pengawal mempunyai beberapa rasa yang berbeza bergantung pada jenis aplikasi yang dikendalikan. Sebagai contoh, pengawal "StatefulSet" yang baru diperkenalkan digunakan untuk menangani aplikasi yang memerlukan keadaan berterusan. Jenis pengawal lain, penyebaran , digunakan untuk meningkatkan aplikasi ke atas atau ke bawah, mengemas kini aplikasi ke versi baru, atau memutar kembali aplikasi ke versi yang terkenal jika ada masalah.

Perkhidmatan Kubernetes

Kerana pod hidup dan mati seperti yang diperlukan, kita memerlukan abstraksi yang berbeza untuk menangani kitaran hidup aplikasi. Aplikasi sepatutnya menjadi entiti berterusan, walaupun ketika pod yang menjalankan wadah yang terdiri dari aplikasi itu sendiri tidak berterusan. Untuk itu, Kubernetes memberikan abstraksi yang disebut perkhidmatan.

Perkhidmatan di Kubernetes menerangkan bagaimana sekumpulan pod tertentu (atau objek Kubernetes lain) dapat diakses melalui rangkaian. Seperti yang dinyatakan oleh dokumentasi Kubernetes, pod yang merupakan bahagian belakang aplikasi mungkin berubah, tetapi bahagian depan tidak semestinya harus mengetahui tentang itu atau mengesannya. Perkhidmatan menjadikan ini mungkin.

Beberapa keping dalaman Kubernetes melengkapkan gambar. The penjadual bungkusan daripada beban kerja ke kelenjar supaya mereka seimbang seluruh sumber dan supaya kerahan memenuhi keperluan definisi permohonan. The pengurus pengawal ini untuk memastikan bahawa keadaan sistem aplikasi, bebanan kerja, dan lain-lain-perlawanan negeri yang dikehendaki ditentukan dalam tetapan tatarajah Etcd ini.

Penting untuk diingat bahawa tidak ada mekanisme tahap rendah yang digunakan oleh kontena, seperti Docker itu sendiri, diganti oleh Kubernetes. Sebaliknya, Kubernetes menyediakan sekumpulan abstraksi yang lebih besar untuk menggunakan mekanisme ini demi memastikan aplikasi tetap berjalan dalam skala besar.

Kubernetes Ingress

Perkhidmatan Kubernetes dianggap berjalan dalam kelompok. Tetapi anda ingin dapat mengakses perkhidmatan ini dari dunia luar. Kubernetes mempunyai beberapa komponen yang memfasilitasi ini dengan tahap kesederhanaan dan ketahanan yang berbeza-beza, termasuk NodePort dan LoadBalancer, tetapi komponen dengan fleksibiliti paling banyak adalah Ingress. Ingress adalah API yang menguruskan akses luaran ke perkhidmatan kluster, biasanya melalui HTTP.

Ingress memang memerlukan sedikit konfigurasi untuk disiapkan dengan betul — Matthew Palmer, yang menulis sebuah buku mengenai pengembangan Kubernetes, menuntun anda melalui proses tersebut di laman webnya.

Papan Pemuka Kubernetes

Salah satu komponen Kubernetes yang membantu anda mengikuti semua komponen lain adalah Dashboard, UI berasaskan web yang anda boleh gunakan dan selesaikan masalah aplikasi dan menguruskan sumber kluster. Papan pemuka tidak dipasang secara lalai, tetapi menambahkannya tidak terlalu banyak masalah.

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.

Kelebihan Kubernetes

Oleh kerana Kubernetes memperkenalkan abstraksi dan konsep baru, dan kerana kurva pembelajaran untuk Kubernetes tinggi, wajar untuk bertanya apakah hasil jangka panjang untuk menggunakan Kubernetes. Inilah ikhtisar beberapa cara khusus untuk menjalankan aplikasi di dalam Kubernetes menjadi lebih mudah.

Kubernetes menguruskan kesihatan aplikasi, replikasi, pengimbangan beban, dan peruntukan sumber perkakasan untuk anda

Salah satu tugas paling asas yang Kubernetes lepaskan dari tangan anda adalah kesibukan menjaga aplikasi, berjalan, dan responsif terhadap permintaan pengguna. Aplikasi yang menjadi "tidak sihat", atau tidak sesuai dengan definisi kesihatan yang anda gambarkan untuknya, dapat disembuhkan secara automatik.

Manfaat lain yang diberikan Kubernetes adalah memaksimumkan penggunaan sumber perkakasan termasuk memori, penyimpanan I / O, dan lebar jalur rangkaian. Aplikasi boleh mempunyai had lembut dan keras pada penggunaan sumbernya. Banyak aplikasi yang menggunakan sumber minimum dapat dikemas bersama pada perkakasan yang sama; aplikasi yang perlu dibentangkan boleh diletakkan pada sistem di mana mereka mempunyai ruang untuk berkembang. Dan sekali lagi, melancarkan kemas kini di sekumpulan, atau melancarkan kembali jika kemas kini rosak, boleh dibuat secara automatik.

Kubernetes memudahkan penggunaan aplikasi yang telah dikonfigurasikan dengan carta Helm

Pengurus pakej seperti APT Debian Linux dan Python's Pip menyelamatkan pengguna masalah memasang dan mengkonfigurasi aplikasi secara manual. Ini sangat berguna apabila aplikasi mempunyai banyak pergantungan luaran.

Helm pada dasarnya adalah pengurus pakej untuk Kubernetes. Banyak aplikasi perisian yang popular mesti dijalankan di Kubernetes sebagai kumpulan bekas yang saling bergantung. Helm menyediakan mekanisme definisi, "carta", yang menerangkan bagaimana aplikasi atau perkhidmatan dapat dijalankan sebagai sekumpulan kontena di dalam Kubernetes.

Anda boleh membuat carta Helm anda sendiri dari awal, dan anda mungkin perlu jika anda membina aplikasi khusus untuk digunakan secara dalaman. Tetapi jika anda menggunakan aplikasi popular yang mempunyai corak penyebaran umum, ada kemungkinan seseorang telah menyusun carta Helm untuknya dan menerbitkannya di repositori carta Helm rasmi. Tempat lain untuk mencari carta Helm rasmi adalah direktori Kubeapps.com.

Kubernetes mempermudah pengurusan penyimpanan, rahsia, dan sumber lain yang berkaitan dengan aplikasi

Bekas dimaksudkan untuk tidak berubah; apa sahaja yang anda masukkan ke dalamnya tidak seharusnya berubah. Tetapi aplikasi memerlukan keadaan, yang bermaksud mereka memerlukan cara yang boleh dipercayai untuk menangani jumlah simpanan luaran. Perkara itu menjadi lebih rumit dengan cara kontena hidup, mati, dan dilahirkan semula sepanjang hayat aplikasi.

Kubernetes memberikan abstraksi untuk membolehkan kontena dan aplikasi menangani penyimpanan dengan cara yang sama seperti sumber lain. Banyak jenis storan yang biasa, dari volume Amazon EBS hingga saham NFS lama biasa, dapat diakses melalui pemacu penyimpanan Kubernetes, yang disebut jilid. Biasanya, volume terikat pada pod tertentu, tetapi subjenis volume yang disebut "Volume Berterusan" dapat digunakan untuk data yang perlu hidup secara bebas dari pod apa pun.

Kontena sering perlu bekerja dengan "rahsia" —kredensial seperti kunci API atau kata laluan perkhidmatan yang anda tidak mahu dimasukkan dalam bekas ke dalam bekas atau disimpan secara terbuka pada volume cakera. Walaupun penyelesaian pihak ketiga tersedia untuk ini, seperti rahsia Docker dan HashiCorp Vault, Kubernetes mempunyai mekanisme tersendiri untuk menangani rahsia secara semula jadi, walaupun ia perlu dikonfigurasi dengan berhati-hati. Sebagai contoh, Etcd mesti dikonfigurasi untuk menggunakan SSL / TLS ketika mengirim rahsia antara node, bukan dalam teks biasa. 

Aplikasi Kubernetes dapat dijalankan di persekitaran hibrid dan multi-cloud

Salah satu impian lama pengkomputeran awan adalah untuk dapat menjalankan aplikasi apa pun di awan mana pun, atau dalam gabungan awan awam atau swasta. Ini bukan hanya untuk mengelakkan penguncian vendor, tetapi juga untuk memanfaatkan ciri khas untuk awan individu.

Kubernetes menyediakan sekumpulan primitif, yang secara kolektif dikenali sebagai persekutuan, untuk memastikan beberapa kelompok saling selaras antara satu sama lain di pelbagai kawasan dan awan. Sebagai contoh, penyebaran aplikasi tertentu dapat tetap konsisten antara beberapa kluster, dan kluster yang berbeda dapat berbagi penemuan perkhidmatan sehingga sumber akhir dapat diakses dari kluster mana pun. Gabungan juga dapat digunakan untuk membuat penyebaran Kubernetes yang sangat tersedia atau toleransi kesalahan, sama ada anda merangkumi beberapa persekitaran awan atau tidak.

Persekutuan masih baru bagi Kubernetes. Belum semua sumber API disokong di semua contoh gabungan, dan peningkatan belum mempunyai infrastruktur ujian automatik. Tetapi kekurangan ini dijangkakan akan ditangani dalam versi Kubernetes yang akan datang.

Di mana untuk mendapatkan Kubernetes