Kubernetes akan mengambil alih dunia. bila dan bagaimana?

Dalam jangkaan DevOpsConf Vitaly Khabarov ditemuramah Dmitry Stolyarov (distol), pengarah teknikal dan pengasas bersama syarikat Flant. Vitaly bertanya kepada Dmitry tentang apa yang Flant lakukan, tentang Kubernetes, pembangunan ekosistem, sokongan. Kami membincangkan mengapa Kubernetes diperlukan dan sama ada ia diperlukan sama sekali. Dan juga mengenai perkhidmatan mikro, Amazon AWS, pendekatan "Saya akan bertuah" kepada DevOps, masa depan Kubernetes sendiri, mengapa, bila dan bagaimana ia akan mengambil alih dunia, prospek DevOps dan apa yang jurutera perlu bersedia dalam cerah dan dekat dengan rangkaian penyederhanaan dan saraf.

Temuduga asal dengar sebagai podcast di DevOps Deflop - podcast berbahasa Rusia tentang DevOps, dan di bawah ialah versi teks.

Kubernetes akan mengambil alih dunia. bila dan bagaimana?

Di sini dan di bawah dia bertanya soalan Vitaly Khabarov jurutera dari Express42.

Mengenai "Flant"

- Hello Dima. Anda adalah pengarah teknikal"terang-terang"dan juga pengasasnya. Sila beritahu kami apa yang syarikat itu lakukan dan apa yang anda berada di dalamnya?

Kubernetes akan mengambil alih dunia. bila dan bagaimana?Dmitry: Dari luar nampaknya kami adalah orang yang memasang Kubernetes untuk semua orang dan melakukan sesuatu dengannya. Tetapi itu tidak benar. Kami bermula sebagai sebuah syarikat yang berurusan dengan Linux, tetapi sejak sekian lama aktiviti utama kami adalah membekalkan pengeluaran dan projek turnkey beban tinggi. Biasanya kami membina keseluruhan infrastruktur dari awal dan kemudian bertanggungjawab untuknya untuk masa yang lama. Oleh itu, kerja utama yang "Flant" lakukan, yang mana ia menerima wang, adalah mengambil tanggungjawab dan melaksanakan pengeluaran turnkey.




Saya, sebagai pengarah teknikal dan salah seorang pengasas syarikat, menghabiskan sepanjang hari dan malam cuba memikirkan cara meningkatkan kebolehcapaian pengeluaran, memudahkan operasinya, menjadikan kehidupan pentadbir lebih mudah, dan kehidupan pemaju lebih menyenangkan .

Mengenai Kubernetes

β€” Akhir-akhir ini saya telah melihat banyak laporan daripada Flant dan Perkara tentang Kubernetes. Bagaimana anda mencapainya?

Dmitry: Saya sudah bercakap tentang perkara ini banyak kali, tetapi saya tidak kisah untuk mengulanginya sama sekali. Saya fikir adalah wajar untuk mengulangi topik ini kerana terdapat kekeliruan antara sebab dan akibat.

Kami benar-benar memerlukan alat. Kami menghadapi banyak masalah, bergelut, mengatasinya dengan pelbagai tongkat dan merasakan keperluan untuk alat. Kami melalui banyak pilihan yang berbeza, membina basikal kami sendiri, dan memperoleh pengalaman. Secara beransur-ansur kami sampai ke tahap di mana kami mula menggunakan Docker hampir sebaik sahaja ia muncul - sekitar tahun 2013. Pada masa kemunculannya, kami sudah mempunyai banyak pengalaman dengan bekas, kami telah pun menulis analog "Docker" - beberapa tongkat kami sendiri dalam Python. Dengan kemunculan Docker, anda boleh membuang tongkat dan menggunakan penyelesaian yang boleh dipercayai dan disokong komuniti.

Dengan Kubernetes ceritanya serupa. Pada masa ia mula mendapat momentum - bagi kami ini adalah versi 1.2 - kami sudah mempunyai sekumpulan tongkat pada Shell dan Chef, yang entah bagaimana kami cuba atur dengan Docker. Kami serius melihat ke arah Rancher dan pelbagai penyelesaian lain, tetapi kemudian Kubernetes muncul, di mana segala-galanya dilaksanakan tepat seperti yang kami akan lakukan atau lebih baik. Tiada apa yang perlu dikeluhkan.

Ya, terdapat beberapa jenis ketidaksempurnaan di sini, terdapat beberapa jenis ketidaksempurnaan di sana - terdapat banyak ketidaksempurnaan, dan 1.2 secara amnya mengerikan, tetapi... Kubernetes adalah seperti sebuah bangunan dalam pembinaan - anda melihat projek dan memahami bahawa ia akan menjadi sejuk. Jika bangunan itu kini mempunyai asas dan dua tingkat, maka anda faham bahawa lebih baik untuk tidak masuk lagi, tetapi tidak ada masalah seperti itu dengan perisian - anda sudah boleh menggunakannya.

Kami tidak mempunyai masa untuk memikirkan tentang menggunakan Kubernetes atau tidak. Kami menunggu lama sebelum ia muncul, dan cuba mencipta analog sendiri.

Mengenai Kubernetes

β€” Adakah anda terlibat secara langsung dalam pembangunan Kubernetes itu sendiri?

Dmitry: Biasa-biasa. Sebaliknya, kita mengambil bahagian dalam pembangunan ekosistem. Kami menghantar beberapa permintaan tarik: kepada Prometheus, kepada pelbagai pengendali, kepada Helm - kepada ekosistem. Malangnya, saya tidak dapat menjejaki semua yang kami lakukan dan saya mungkin silap, tetapi tidak ada satu kumpulan pun daripada kami ke dalam teras.

β€” Pada masa yang sama, adakah anda membangunkan banyak alatan anda di sekitar Kubernetes?

Dmitry: Strateginya ialah: kita pergi dan tarik permintaan kepada semua yang sudah wujud. Jika permintaan tarik tidak diterima di sana, kami hanya menolaknya sendiri dan hidup sehingga ia diterima dengan binaan kami. Kemudian, apabila ia sampai ke hulu, kita kembali ke versi huluan.

Sebagai contoh, kami mempunyai operator Prometheus, yang dengannya kami beralih ke hulu ke hilir pemasangan kami mungkin sudah 5 kali. Kami memerlukan beberapa jenis ciri, kami menghantar permintaan tarik, kami perlu melancarkannya esok, tetapi kami tidak mahu menunggu ia dikeluarkan ke hulu. Sehubungan itu, kami memasang sendiri, melancarkan pemasangan kami dengan ciri kami, yang kami perlukan atas sebab tertentu, kepada semua kluster kami. Kemudian, sebagai contoh, mereka menyerahkannya kepada kami di hulu dengan perkataan: "Kawan-kawan, mari kita lakukan untuk kes yang lebih umum," kita, atau orang lain, menyelesaikannya, dan lama-kelamaan ia bergabung semula.

Kami cuba membangunkan semua yang ada. Banyak elemen yang belum wujud, belum lagi dicipta, atau sudah dicipta, tetapi belum sempat untuk dilaksanakan - kita lakukan. Dan bukan kerana kami menyukai proses atau pembinaan basikal sebagai industri, tetapi semata-mata kerana kami memerlukan alat ini. Persoalan yang sering ditanya, mengapa kita melakukan ini atau perkara itu? Jawapannya mudah - ya, kerana kami perlu pergi lebih jauh, menyelesaikan beberapa masalah praktikal, dan kami menyelesaikannya dengan tula ini.

Jalannya sentiasa seperti ini: kami mencari dengan sangat berhati-hati dan, jika kami tidak menemui sebarang penyelesaian tentang cara membuat bas troli daripada sebuku roti, maka kami membuat roti sendiri dan bas troli kami sendiri.

Alat Flanta

β€” Saya tahu bahawa Flant kini mempunyai operator addon, operator shell dan alat dapp/werf. Seperti yang saya faham, ini adalah instrumen yang sama dalam penjelmaan yang berbeza. Saya juga faham bahawa terdapat banyak lagi alatan yang berbeza dalam Flaunt. Ini adalah benar?

Dmitry: Kami mempunyai banyak lagi di GitHub. Daripada apa yang saya ingat sekarang, kami mempunyai peta status - panel untuk Grafana yang semua orang jumpa. Ia disebut dalam hampir setiap artikel kedua tentang pemantauan Kubernetes pada Medium. Adalah mustahil untuk menerangkan secara ringkas apa itu peta status - ia memerlukan artikel yang berasingan, tetapi ia adalah perkara yang sangat berguna untuk memantau status dari semasa ke semasa, kerana dalam Kubernetes kita sering perlu menunjukkan status dari semasa ke semasa. Kami juga mempunyai LogHouse - ini adalah perkara berdasarkan ClickHouse dan ilmu hitam untuk mengumpul log dalam Kubernetes.

Banyak utiliti! Dan akan ada lebih banyak lagi, kerana beberapa penyelesaian dalaman akan dikeluarkan tahun ini. Daripada yang sangat besar berdasarkan pengendali addon, terdapat sekumpulan tambahan untuk Kubernetes, seperti cara memasang pengurus sert dengan betul - alat untuk menguruskan sijil, cara memasang Prometheus dengan sekumpulan aksesori dengan betul - ini adalah kira-kira dua puluh berbeza binari yang mengeksport data dan mengumpul sesuatu, ke Prometheus ini mempunyai grafik dan makluman yang paling menakjubkan. Semua ini hanyalah sekumpulan tambahan kepada Kubernetes, yang dipasang dalam kelompok, dan ia bertukar daripada mudah kepada sejuk, canggih, automatik, yang mana banyak isu telah diselesaikan. Ya, banyak yang kami lakukan.

Pembangunan ekosistem

"Saya nampaknya ini adalah sumbangan yang sangat besar kepada pembangunan instrumen ini dan kaedah penggunaannya." Bolehkah anda menganggarkan secara kasar siapa lagi yang akan membuat sumbangan yang sama kepada pembangunan ekosistem?

Dmitry: Di Rusia, syarikat yang beroperasi di pasaran kita, tiada siapa yang rapat. Sudah tentu, ini adalah kenyataan yang kuat, kerana terdapat pemain utama seperti Mail dan Yandex - mereka juga melakukan sesuatu dengan Kubernetes, tetapi mereka tidak mendekati sumbangan syarikat di seluruh dunia yang melakukan lebih banyak daripada kita. Sukar untuk membandingkan Flant, yang mempunyai kakitangan seramai 80 orang, dan Red Hat, yang mempunyai 300 jurutera bagi setiap Kubernetes sahaja, jika saya tidak silap. Sukar untuk dibandingkan. Kami mempunyai 6 orang di bahagian RnD, termasuk saya, yang memotong semua alat kami. 6 orang berbanding 300 jurutera Red Hat - entah bagaimana sukar untuk dibandingkan.

- Walau bagaimanapun, apabila 6 orang ini boleh melakukan sesuatu yang benar-benar berguna dan mengasingkan, apabila mereka berhadapan dengan masalah praktikal dan memberikan penyelesaian kepada masyarakat - satu kes yang menarik. Saya faham bahawa dalam syarikat teknologi besar, di mana mereka mempunyai pasukan pembangunan dan sokongan Kubernetes mereka sendiri, pada dasarnya, alat yang sama boleh dibangunkan. Ini adalah contoh untuk mereka tentang apa yang boleh dibangunkan dan diberikan kepada komuniti, memberikan dorongan kepada seluruh komuniti yang menggunakan Kubernetes.

Dmitry: Ini mungkin ciri penyepadu, keanehannya. Kami mempunyai banyak projek dan kami melihat banyak situasi yang berbeza. Bagi kami, cara utama untuk mencipta nilai tambah adalah dengan menganalisis kes ini, mencari persamaan dan menjadikannya semurah mungkin untuk kami. Kami sedang giat mengusahakan perkara ini. Sukar untuk saya bercakap tentang Rusia dan dunia, tetapi kami mempunyai kira-kira 40 jurutera DevOps dalam syarikat yang bekerja di Kubernetes. Saya tidak fikir terdapat banyak syarikat di Rusia dengan bilangan pakar yang setanding yang memahami Kubernetes, jika ada sama sekali.

Saya memahami segala-galanya tentang jawatan jurutera DevOps, semua orang memahami segala-galanya dan sudah biasa memanggil jurutera DevOps sebagai jurutera DevOps, kami tidak akan membincangkan perkara ini. Kesemua 40 jurutera DevOps yang hebat ini menghadapi dan menyelesaikan masalah setiap hari, kami hanya menganalisis pengalaman ini dan cuba membuat generalisasi. Kami faham bahawa jika ia kekal di dalam diri kita, maka dalam satu atau dua tahun alat itu akan menjadi sia-sia, kerana di suatu tempat dalam komuniti Tula siap sedia akan muncul. Tidak ada gunanya mengumpul pengalaman ini secara dalaman - ia hanya menghabiskan tenaga dan masa ke dev/null. Dan kami tidak berasa menyesal sama sekali. Kami menerbitkan segala-galanya dengan gembira dan memahami bahawa ia perlu diterbitkan, dibangunkan, dipromosikan, dipromosikan, supaya orang ramai menggunakannya dan menambah pengalaman mereka - kemudian semuanya berkembang dan hidup. Kemudian selepas dua tahun instrumen itu tidak pergi ke timbunan sampah. Tidak sayang untuk terus mencurahkan kekuatan, kerana jelas bahawa seseorang menggunakan alat anda, dan selepas dua tahun semua orang menggunakannya.

Ini adalah sebahagian daripada strategi besar kami dengan dapp/werf. Saya tidak ingat bila kami mula membuatnya, ia kelihatan seperti 3 tahun lalu. Pada mulanya, ia biasanya pada cangkerang. Ia adalah bukti konsep yang hebat, kami menyelesaikan beberapa masalah khusus kami - ia berkesan! Tetapi terdapat masalah dengan shell, mustahil untuk mengembangkannya lagi, pengaturcaraan pada shell adalah tugas lain. Kami mempunyai tabiat menulis dalam Ruby, oleh itu, kami membuat semula sesuatu dalam Ruby, dibangunkan, dibangunkan, dibangunkan, dan terserempak dengan fakta bahawa komuniti, orang ramai yang tidak berkata β€œkami mahu atau tidak mahu, ” memalingkan hidungnya pada Ruby, kelakarkah itu? Kami menyedari bahawa kami harus menulis semua perkara ini dalam Go hanya untuk memenuhi perkara pertama pada senarai semak: Alat DevOps mestilah binari statik. Untuk menjadi Go atau tidak adalah tidak begitu penting, tetapi binari statik yang ditulis dalam Go adalah lebih baik.

Kami menghabiskan tenaga kami, menulis semula dapp dalam Go dan memanggilnya werf. Dapp tidak lagi disokong, tidak dibangunkan, berjalan dalam beberapa versi terkini, tetapi terdapat laluan naik taraf mutlak ke bahagian atas, dan anda boleh mengikutinya.

Mengapa dapp dicipta?

β€” Bolehkah anda beritahu kami secara ringkas mengapa dapp dicipta, apakah masalah yang diselesaikannya?

Dmitry: Sebab pertama adalah dalam perhimpunan. Pada mulanya, kami menghadapi masalah serius dengan binaan apabila Docker tidak mempunyai keupayaan berbilang peringkat, jadi kami membuat berbilang peringkat sendiri. Kemudian kami mempunyai banyak lagi isu dengan membersihkan imej. Setiap orang yang melakukan CI/CD, lebih cepat daripada kemudian, berhadapan dengan masalah bahawa terdapat sekumpulan imej yang dikumpul, anda perlu entah bagaimana membersihkan apa yang tidak diperlukan dan meninggalkan apa yang diperlukan.

Sebab kedua ialah penempatan. Ya, ada Helm, tetapi ia hanya menyelesaikan beberapa masalah. Lucunya, ada tertulis bahawa "Helm ialah Pengurus Pakej untuk Kubernetes." Betul-betul apa "yang". Terdapat juga perkataan "Pengurus Pakej" - apakah jangkaan biasa daripada Pengurus Pakej? Kami berkata: "Pengurus Pakej - pasang pakej!" dan kami menjangkakan dia memberitahu kami: "Pakej telah dihantar."

Adalah menarik bahawa kami berkata: "Helm, pasang pakej," dan apabila dia menjawab bahawa dia memasangnya, ternyata dia baru sahaja memulakan pemasangan - dia menunjukkan Kubernetes: "Lancarkan perkara ini!", dan sama ada ia bermula atau tidak. , sama ada ia berfungsi atau tidak , Helm tidak menyelesaikan isu ini sama sekali.

Ternyata Helm hanyalah prapemproses teks yang memuatkan data ke dalam Kubernetes.

Tetapi sebagai sebahagian daripada sebarang penempatan, kami ingin tahu sama ada aplikasi itu telah dikeluarkan untuk pengeluaran atau tidak? Dilancarkan untuk prod bermakna aplikasi telah berpindah ke sana, versi baharu telah digunakan, dan sekurang-kurangnya ia tidak ranap di sana dan bertindak balas dengan betul. Helm tidak menyelesaikan masalah ini dalam apa cara sekalipun. Untuk menyelesaikannya, anda perlu menghabiskan banyak usaha, kerana anda perlu memberi Kubernetes arahan untuk melancarkan dan memantau apa yang berlaku di sana - sama ada ia digunakan atau dilancarkan. Dan terdapat juga banyak tugas yang berkaitan dengan penempatan, pembersihan dan pemasangan.

Rancangan

Tahun ini kita akan memulakan pembangunan tempatan. Kami mahu mencapai apa yang ada dalam Vagrant sebelum ini - kami menaip "vagrant up" dan kami menggunakan mesin maya. Kami ingin sampai ke tahap di mana terdapat projek dalam Git, kami menulis "werf up" di sana, dan ia memaparkan salinan tempatan projek ini, digunakan dalam mini-Kub tempatan, dengan semua direktori yang mudah untuk pembangunan disambungkan . Bergantung pada bahasa pembangunan, ini dilakukan secara berbeza, tetapi bagaimanapun, supaya pembangunan tempatan boleh dilakukan dengan mudah di bawah fail yang dipasang.

Langkah seterusnya untuk kita ialah melabur dalam kemudahan untuk pemaju. Untuk menggunakan projek secara tempatan dengan cepat dengan satu alat, bangunkannya, tolaknya ke dalam Git, dan ia juga akan dilancarkan ke peringkat atau ujian, bergantung pada saluran paip, dan kemudian gunakan alat yang sama untuk pergi ke pengeluaran. Perpaduan, penyatuan, kebolehulangan infrastruktur ini daripada persekitaran tempatan kepada jualan adalah titik yang sangat penting bagi kami. Tetapi ini belum lagi di werf - kami hanya merancang untuk melakukannya.

Tetapi laluan ke dapp/werf sentiasa sama seperti Kubernetes pada mulanya. Kami menghadapi masalah, menyelesaikannya dengan penyelesaian - kami menghasilkan beberapa penyelesaian untuk diri kami sendiri pada shell, tentang apa sahaja. Kemudian mereka cuba entah bagaimana meluruskan penyelesaian ini, menyamaratakan dan menggabungkannya menjadi binari dalam kes ini, yang kami kongsikan sahaja.

Terdapat cara lain untuk melihat keseluruhan cerita ini, dengan analogi.

Kubernetes ialah rangka kereta dengan enjin. Tiada pintu, kaca, radio, pokok Krismas - tiada langsung. Hanya bingkai dan enjin. Dan ada Helm - ini adalah stereng. Sejuk - terdapat stereng, tetapi anda juga memerlukan pin stereng, rak stereng, kotak gear dan roda, dan anda tidak boleh melakukannya tanpanya.

Dalam kes werf, ini adalah komponen lain kepada Kubernetes. Cuma sekarang dalam versi alpha werf, sebagai contoh, Helm disusun di dalam werf, kerana kami bosan melakukannya sendiri. Terdapat banyak sebab untuk melakukan ini, saya akan memberitahu anda secara terperinci tentang sebab kami menyusun keseluruhan helm bersama-sama dengan tiller inside werf pada laporan di RIT++.

Kini werf adalah komponen yang lebih bersepadu. Kami mendapat stereng siap, pin stereng - Saya tidak begitu mahir dalam kereta, tetapi ini adalah blok besar yang sudah menyelesaikan pelbagai masalah yang agak luas. Kami tidak perlu menyemak katalog itu sendiri, pilih satu bahagian untuk bahagian yang lain, fikirkan cara menyatukannya. Kami mendapat gabungan siap yang menyelesaikan sejumlah besar masalah sekaligus. Tetapi di dalamnya dibina daripada komponen sumber terbuka yang sama, ia masih menggunakan Docker untuk pemasangan, Helm untuk beberapa fungsi, dan terdapat beberapa perpustakaan lain. Ini ialah alat bersepadu untuk mengeluarkan CI/CD yang sejuk daripada kotak dengan cepat dan mudah.

Adakah Kubernetes sukar untuk dikekalkan?

β€” Anda bercakap tentang pengalaman anda mula menggunakan Kubernetes, ini adalah bingkai untuk anda, enjin, dan anda boleh menggantung banyak perkara berbeza padanya: badan, stereng, skru pada pedal, tempat duduk. Timbul persoalan - betapa sukarnya sokongan Kubernetes untuk anda? Anda mempunyai banyak pengalaman, berapa banyak masa dan sumber yang anda belanjakan untuk menyokong Kubernetes secara berasingan daripada segala-galanya?

Dmitry: Ini adalah soalan yang sangat sukar dan untuk dijawab, kita perlu memahami apa itu sokongan dan apa yang kita mahu daripada Kubernetes. Mungkin anda boleh mendedahkan?

β€” Setakat yang saya tahu dan seperti yang saya lihat, kini banyak pasukan ingin mencuba Kubernetes. Semua orang memanfaatkan diri mereka, meletakkannya pada lutut mereka. Saya mempunyai perasaan bahawa orang tidak selalu memahami kerumitan sistem ini.

Dmitry: Macam tu lah.

β€” Seberapa sukar untuk mengambil dan memasang Kubernetes dari awal supaya ia siap untuk pengeluaran?

Dmitry: Pada pendapat anda, betapa sukarnya untuk memindahkan jantung? Saya faham ini adalah soalan berkompromi. Menggunakan pisau bedah dan tidak membuat kesilapan tidaklah begitu sukar. Jika mereka memberitahu anda di mana untuk memotong dan di mana untuk menjahit, maka prosedur itu sendiri tidak rumit. Sukar untuk menjamin dari semasa ke semasa bahawa semuanya akan berjaya.

Memasang Kubernetes dan membuatnya berfungsi adalah mudah: anak ayam! β€” dipasang, terdapat banyak kaedah pemasangan. Tetapi apa yang berlaku apabila masalah timbul?

Soalan selalu timbul - apa yang belum kita ambil kira? Apa yang belum kita buat? Parameter kernel Linux manakah yang dinyatakan secara salah? Tuhan, adakah kami menyebut mereka?! Komponen Kubernetes yang manakah telah kami hantar dan yang mana belum kami? Beribu-ribu soalan timbul, dan untuk menjawabnya, anda perlu menghabiskan 15-20 tahun dalam industri ini.

Saya mempunyai contoh terbaru mengenai topik ini yang mungkin mendedahkan maksud masalah "Adakah Kubernetes sukar untuk dikekalkan?" Beberapa waktu lalu kami serius mempertimbangkan sama ada kami harus cuba melaksanakan Cilium sebagai rangkaian dalam Kubernetes.

Biar saya terangkan apa itu Cilium. Kubernetes mempunyai banyak pelaksanaan subsistem rangkaian yang berbeza, dan salah satunya adalah sangat keren - Cilium. Apakah maksudnya? Dalam kernel, beberapa ketika dahulu ia menjadi mungkin untuk menulis cangkuk untuk kernel, yang dalam satu cara atau yang lain menyerang subsistem rangkaian dan pelbagai subsistem lain, dan membolehkan anda memintas ketulan besar dalam kernel.

Kernel Linux mengikut sejarah mempunyai ip rout, overfilter, bridges dan banyak komponen lama yang berbeza yang berusia 15, 20, 30 tahun. Secara umum, mereka bekerja, semuanya hebat, tetapi kini mereka telah menimbun bekas, dan ia kelihatan seperti menara 15 bata di atas satu sama lain, dan anda berdiri di atasnya dengan satu kaki - perasaan yang aneh. Sistem ini telah dibangunkan secara sejarah dengan banyak nuansa, seperti apendiks dalam badan. Dalam sesetengah situasi terdapat isu prestasi, contohnya.

Terdapat BPF yang hebat dan keupayaan untuk menulis cangkuk untuk kernel - lelaki itu menulis cangkuk mereka sendiri untuk kernel. Pakej itu masuk ke dalam kernel Linux, mereka mengeluarkannya tepat pada input, memprosesnya sendiri sebagaimana mestinya tanpa jambatan, tanpa TCP, tanpa timbunan IP - ringkasnya, memintas semua yang ditulis dalam kernel Linux, dan kemudian meludah ia keluar ke dalam bekas.

Apa yang berlaku? Prestasi yang sangat hebat, ciri yang hebat - sungguh hebat! Tetapi kami melihat ini dan melihat bahawa pada setiap mesin terdapat program yang menyambung ke API Kubernetes dan, berdasarkan data yang diterima daripada API ini, menjana kod C dan menyusun binari yang dimuatkan ke dalam kernel supaya cangkuk ini berfungsi dalam ruang kernel.

Apa yang berlaku jika berlaku masalah? Kami tidak tahu. Untuk memahami perkara ini, anda perlu membaca semua kod ini, memahami semua logik, dan sangat mengagumkan betapa sukarnya ia. Tetapi, sebaliknya, terdapat jambatan ini, penapis bersih, penghapusan ip - Saya belum membaca kod sumbernya, dan juga 40 jurutera yang bekerja di syarikat kami. Mungkin hanya segelintir sahaja yang memahami beberapa bahagian.

Dan apa bezanya? Ternyata terdapat ip rout, kernel Linux, dan terdapat alat baru - apakah perbezaannya, kami tidak memahami satu atau yang lain. Tetapi kita takut untuk menggunakan sesuatu yang baru - mengapa? Kerana jika alat itu berumur 30 tahun, maka dalam 30 tahun semua pepijat telah ditemui, semua kesilapan telah dipijak dan anda tidak perlu tahu tentang segala-galanya - ia berfungsi seperti kotak hitam dan sentiasa berfungsi. Semua orang tahu pemutar skru diagnostik mana yang hendak dilekatkan di tempat yang mana, tcpdump mana yang hendak dijalankan pada saat mana. Semua orang mengetahui utiliti diagnostik dengan baik dan memahami cara set komponen ini berfungsi dalam kernel Linux - bukan cara ia berfungsi, tetapi cara menggunakannya.

Dan Cilium yang mengagumkan itu belum berusia 30 tahun, ia belum berumur lagi. Kubernetes mempunyai masalah yang sama, salin. Bahawa Cilium dipasang dengan sempurna, bahawa Kubernetes dipasang dengan sempurna, tetapi apabila berlaku masalah dalam pengeluaran, adakah anda dapat memahami dengan cepat dalam situasi kritikal apa yang berlaku?

Apabila kita katakan sukar untuk mengekalkan Kubernetes - tidak, ia sangat mudah, dan ya, ia adalah sangat sukar. Kubernetes berfungsi hebat dengan sendirinya, tetapi dengan satu bilion nuansa.

Mengenai pendekatan "Saya akan bertuah".

β€” Adakah terdapat syarikat di mana nuansa ini hampir dijamin untuk muncul? Katakan Yandex tiba-tiba memindahkan semua perkhidmatan ke Kubernetes, akan ada beban yang besar di sana.

Dmitry: Tidak, ini bukan perbualan tentang beban, tetapi tentang perkara yang paling mudah. Sebagai contoh, kami mempunyai Kubernetes, kami menggunakan aplikasi di sana. Bagaimana anda tahu ia berfungsi? Tiada alat siap sedia untuk memahami bahawa aplikasi tidak ranap. Tiada sistem siap sedia yang menghantar makluman; anda perlu mengkonfigurasi makluman ini dan setiap jadual. Dan kami sedang mengemas kini Kubernetes.

Saya mempunyai Ubuntu 16.04. Anda boleh mengatakan bahawa ini adalah versi lama, tetapi kami masih menggunakannya kerana ia adalah LTS. Terdapat systemd, nuansanya ialah ia tidak membersihkan kumpulan C. Kubernetes melancarkan pod, mencipta kumpulan C, kemudian memadamkan pod, dan entah bagaimana ternyata - saya tidak ingat butirannya, maaf - kepingan sistemd kekal. Ini membawa kepada fakta bahawa dari masa ke masa, mana-mana kereta mula perlahan dengan kuat. Ini bukan soalan pun tentang highload. Jika pod kekal dilancarkan, contohnya, jika terdapat Cron Job yang sentiasa menghasilkan pod, maka mesin dengan Ubuntu 16.04 akan mula perlahan selepas seminggu. Purata beban akan sentiasa tinggi disebabkan fakta bahawa sekumpulan kumpulan C telah dicipta. Inilah masalah yang akan dihadapi oleh mana-mana orang yang hanya memasang Ubuntu 16 dan Kubernetes di atas.

Katakan dia mengemas kini systemd atau sesuatu yang lain, tetapi dalam kernel Linux sehingga 4.16 ia lebih lucu - apabila anda memadam kumpulan-C, ia bocor dalam kernel dan sebenarnya tidak dipadamkan. Oleh itu, selepas sebulan bekerja pada mesin ini, adalah mustahil untuk melihat statistik memori untuk perapian. Kami mengeluarkan fail, melancarkannya dalam program, dan satu fail melancarkan selama 15 saat, kerana kernel mengambil masa yang sangat lama untuk mengira satu juta kumpulan C dalam dirinya sendiri, yang nampaknya dipadamkan, tetapi tidak - mereka bocor .

Masih banyak perkara kecil sebegitu di sana sini. Ini bukan isu yang kadangkala dihadapi oleh syarikat gergasi di bawah beban yang sangat berat - tidak, ia adalah perkara harian. Orang ramai boleh hidup seperti ini selama berbulan-bulan - mereka memasang Kubernetes, menggunakan aplikasi - nampaknya berfungsi. Bagi kebanyakan orang ini adalah perkara biasa. Mereka tidak akan tahu bahawa aplikasi ini akan ranap atas sebab tertentu, mereka tidak akan menerima amaran, tetapi bagi mereka ini adalah perkara biasa. Sebelum ini, kami hidup di mesin maya tanpa pemantauan, kini kami berpindah ke Kubernetes, juga tanpa pemantauan - apa bezanya?

Persoalannya ialah apabila kita berjalan di atas ais, kita tidak pernah tahu ketebalannya melainkan kita mengukurnya terlebih dahulu. Ramai orang berjalan dan jangan risau, kerana mereka pernah berjalan sebelum ini.

Dari sudut pandangan saya, nuansa dan kerumitan mengendalikan mana-mana sistem adalah untuk memastikan bahawa ketebalan ais adalah tepat untuk menyelesaikan masalah kita. Ini yang kita bincangkan.

Dalam IT, nampaknya saya, terdapat terlalu banyak pendekatan "Saya akan bertuah". Ramai orang memasang perisian dan menggunakan perpustakaan perisian dengan harapan mereka akan bertuah. Secara umum, ramai orang bertuah. Itulah sebabnya ia berfungsi.

β€” Daripada penilaian pesimis saya, ia kelihatan seperti ini: apabila risikonya tinggi, dan aplikasi mesti berfungsi, maka sokongan diperlukan daripada Flaunt, mungkin daripada Red Hat, atau anda memerlukan pasukan dalaman anda sendiri yang didedikasikan khusus untuk Kubernetes, yang sedia untuk menariknya.

Dmitry: Secara objektif, begini. Menyertai cerita Kubernetes untuk pasukan kecil sendiri melibatkan beberapa risiko.

Adakah kita memerlukan bekas?

β€” Bolehkah anda memberitahu kami betapa meluasnya Kubernetes di Rusia?

Dmitry: Saya tidak mempunyai data ini dan saya tidak pasti orang lain memilikinya. Kami menyebut: "Kubernetes, Kubernetes," tetapi ada cara lain untuk melihat isu ini. Saya juga tidak tahu betapa meluasnya kontena, tetapi saya tahu angka dari laporan di Internet bahawa 70% kontena didalangi oleh Kubernetes. Ia adalah sumber yang boleh dipercayai untuk sampel yang agak besar di seluruh dunia.

Kemudian soalan lain - adakah kita memerlukan bekas? Perasaan peribadi saya dan kedudukan keseluruhan syarikat Flant ialah Kubernetes adalah standard de facto.

Tidak akan ada apa-apa selain Kubernetes.

Ini adalah pengubah permainan mutlak dalam bidang pengurusan infrastruktur. Hanya mutlak - itu sahaja, tiada lagi Ansible, Chef, mesin maya, Terraform. Saya tidak bercakap tentang kaedah ladang kolektif lama. Kubernetes adalah pengubah mutlak, dan kini ia hanya akan menjadi seperti ini.

Adalah jelas bahawa untuk sesetengah orang memerlukan beberapa tahun, dan bagi yang lain beberapa dekad, untuk merealisasikannya. Saya tidak ragu-ragu bahawa tidak akan ada apa-apa selain Kubernetes dan rupa baharu ini: kami tidak lagi merosakkan sistem pengendalian, tetapi menggunakan infrastruktur sebagai kod, hanya bukan dengan kod, tetapi dengan yml - infrastruktur yang diterangkan secara deklaratif. Saya mempunyai perasaan bahawa ia akan sentiasa seperti ini.

β€” Iaitu, syarikat-syarikat yang belum beralih kepada Kubernetes pasti akan beralih kepadanya atau kekal dalam kelalaian. Saya faham awak dengan betul?

Dmitry: Ini juga tidak benar sepenuhnya. Sebagai contoh, jika kita mempunyai tugas untuk menjalankan pelayan DNS, maka ia boleh dijalankan pada FreeBSD 4.10 dan ia boleh berfungsi dengan sempurna selama 20 tahun. Hanya bekerja dan itu sahaja. Mungkin dalam 20 tahun sesuatu perlu dikemas kini sekali. Jika kita bercakap tentang perisian dalam format yang kami lancarkan dan ia sebenarnya berfungsi selama bertahun-tahun tanpa sebarang kemas kini, tanpa membuat perubahan, maka, sudah tentu, tidak akan ada Kubernetes. Dia tidak diperlukan di sana.

Segala-galanya yang berkaitan dengan CI/CD - di mana sahaja Penghantaran Berterusan diperlukan, di mana anda perlu mengemas kini versi, membuat perubahan aktif, di mana sahaja anda perlu membina toleransi kesalahan - hanya Kubernetes.

Mengenai perkhidmatan mikro

- Di sini saya mempunyai sedikit percanggahan. Untuk bekerja dengan Kubernetes, anda memerlukan sokongan luaran atau dalaman - ini adalah perkara pertama. Kedua, apabila kami baru memulakan pembangunan, kami adalah syarikat permulaan yang kecil, kami belum mempunyai apa-apa lagi, pembangunan untuk Kubernetes atau seni bina perkhidmatan mikro secara amnya boleh menjadi sukar dan tidak selalunya wajar dari segi ekonomi. Saya berminat dengan pendapat anda - adakah syarikat pemula perlu segera mula menulis untuk Kubernetes dari awal, atau adakah mereka masih boleh menulis monolit, dan kemudian hanya datang ke Kubernetes?

Dmitry: Soalan sejuk. Saya ada bercakap tentang perkhidmatan mikro "Perkhidmatan Mikro: Saiz Penting." Banyak kali saya berjumpa dengan orang yang cuba memalu paku dengan mikroskop. Pendekatan itu sendiri adalah betul; kami sendiri mereka bentuk perisian dalaman kami dengan cara ini. Tetapi apabila anda melakukan ini, anda perlu memahami dengan jelas apa yang anda lakukan. Perkataan yang paling saya benci tentang perkhidmatan mikro ialah "mikro." Dari segi sejarah, perkataan ini berasal dari sana, dan atas sebab tertentu orang berfikir bahawa mikro adalah sangat kecil, kurang daripada satu milimeter, seperti mikrometer. Ini adalah salah.

Sebagai contoh, terdapat monolit yang ditulis oleh 300 orang, dan semua orang yang mengambil bahagian dalam pembangunan memahami bahawa terdapat masalah di sana, dan ia harus dipecah menjadi kepingan mikro - kira-kira 10 keping, setiap satunya ditulis oleh 30 orang dalam versi minimum. Ini penting, perlu dan keren. Tetapi apabila permulaan datang kepada kami, di mana 3 lelaki yang sangat hebat dan berbakat menulis 60 perkhidmatan mikro pada lutut mereka, setiap kali saya mencari Corvalol.

Nampaknya kepada saya bahawa ini telah dibincangkan beribu-ribu kali - kami mendapat monolit yang diedarkan dalam satu bentuk atau yang lain. Ini tidak wajar secara ekonomi, ia sangat sukar secara umum dalam segala-galanya. Saya baru sahaja melihat ini berkali-kali sehingga ia sangat menyakitkan saya, jadi saya terus bercakap mengenainya.

Kepada soalan awal, terdapat percanggahan antara fakta bahawa, di satu pihak, Kubernetes menakutkan untuk digunakan, kerana tidak jelas apa yang mungkin pecah di sana atau tidak berfungsi, sebaliknya, jelas bahawa semuanya berjalan di sana. dan tiada apa pun selain Kubernetes yang akan wujud . Jawapan - timbangkan jumlah faedah yang datang, jumlah tugasan yang boleh anda selesaikan. Ini adalah pada satu sisi skala. Sebaliknya, terdapat risiko yang berkaitan dengan masa henti atau dengan pengurangan masa tindak balas, tahap ketersediaan - dengan penurunan dalam penunjuk prestasi.

Ini dia - sama ada kami bergerak dengan pantas, dan Kubernetes membolehkan kami melakukan banyak perkara dengan lebih pantas dan lebih baik, atau kami menggunakan penyelesaian yang boleh dipercayai dan diuji masa, tetapi bergerak dengan lebih perlahan. Ini adalah pilihan yang mesti dibuat oleh setiap syarikat. Anda boleh menganggapnya sebagai laluan di dalam hutan - apabila anda berjalan untuk kali pertama, anda boleh bertemu ular, harimau atau luak gila, dan apabila anda telah berjalan 10 kali, anda telah memijak laluan itu, dikeluarkan dahan dan berjalan lebih mudah. Setiap kali laluan semakin luas. Kemudian ia adalah jalan asfalt, dan kemudian sebuah boulevard yang indah.

Kubernetes tidak berdiam diri. Soalan sekali lagi: Kubernetes, dalam satu pihak, adalah 4-5 binari, sebaliknya, ia adalah keseluruhan ekosistem. Ini adalah sistem pengendalian yang kami ada pada mesin kami. Apakah ini? Ubuntu atau Curios? Ini adalah kernel Linux, sekumpulan komponen tambahan. Semua perkara ini di sini, seekor ular berbisa dibuang dari jalan, pagar didirikan di sana. Kubernetes berkembang dengan sangat cepat dan dinamik, dan volum risiko, volum yang tidak diketahui semakin berkurangan setiap bulan dan, oleh itu, skala ini mengimbangi semula.

Menjawab soalan tentang perkara yang perlu dilakukan oleh permulaan, saya akan berkata - datang ke Flaunt, bayar 150 ribu rubel dan dapatkan perkhidmatan mudah DevOps turnkey. Jika anda seorang pemula kecil dengan beberapa pembangun, ini berfungsi. Daripada mengupah DevOps anda sendiri, yang perlu belajar cara menyelesaikan masalah anda dan membayar gaji pada masa ini, anda akan mendapat penyelesaian turnkey untuk semua isu. Ya, terdapat beberapa kelemahan. Kami, sebagai penyumber luar, tidak boleh terlibat dan bertindak balas dengan cepat terhadap perubahan. Tetapi kami mempunyai banyak kepakaran dan amalan sedia ada. Kami menjamin bahawa dalam apa jua keadaan kami pasti akan segera memikirkannya dan membangkitkan mana-mana Kubernete daripada kematian.

Saya amat mengesyorkan penyumberan luar kepada syarikat pemula dan perniagaan yang mantap sehingga saiz di mana anda boleh mendedikasikan pasukan 10 orang untuk operasi, kerana jika tidak, tiada gunanya. Sudah tentu masuk akal untuk menyumber luar ini.

Mengenai Amazon dan Google

β€” Bolehkah hos daripada penyelesaian daripada Amazon atau Google dianggap sebagai sumber luar?

Dmitry: Ya, sudah tentu, ini menyelesaikan beberapa isu. Tetapi sekali lagi terdapat nuansa. Anda masih perlu memahami cara menggunakannya. Sebagai contoh, terdapat seribu perkara kecil dalam kerja Amazon AWS: Pengimbang Beban perlu dipanaskan atau permintaan mesti ditulis terlebih dahulu bahawa "kawan-kawan, kami akan menerima lalu lintas, panaskan Pengimbang Beban untuk kami!" Anda perlu mengetahui nuansa ini.

Apabila anda beralih kepada orang yang pakar dalam hal ini, anda akan menutup hampir semua perkara biasa. Kami kini mempunyai 40 jurutera, pada akhir tahun ini mungkin akan ada 60 - kami pasti telah menghadapi semua perkara ini. Walaupun kami menghadapi masalah ini sekali lagi dalam beberapa projek, kami segera bertanya antara satu sama lain dan mengetahui cara menyelesaikannya.

Mungkin jawapannya - sudah tentu, cerita yang dihoskan menjadikan beberapa bahagian lebih mudah. Persoalannya ialah sama ada anda bersedia untuk mempercayai hos ini dan sama ada mereka akan menyelesaikan masalah anda. Amazon dan Google telah melakukannya dengan baik. Untuk semua kes kami - betul-betul. Kami tidak mempunyai pengalaman positif lagi. Semua awan lain yang kami cuba bekerjasama mencipta banyak masalah - Ager, dan semua yang ada di Rusia, dan semua jenis OpenStack dalam pelaksanaan berbeza: Headster, Overage - apa sahaja yang anda mahukan. Mereka semua mencipta masalah yang anda tidak mahu selesaikan.

Oleh itu, jawapannya adalah ya, tetapi, sebenarnya, tidak banyak penyelesaian yang dihoskan secara matang.

Siapa yang memerlukan Kubernetes?

β€” Namun, siapa yang memerlukan Kubernetes? Siapa yang sepatutnya bertukar kepada Kubernetes, siapakah pelanggan Flaunt biasa yang datang khusus untuk Kubernetes?

Dmitry: Ini adalah soalan yang menarik, kerana sekarang, selepas Kubernetes, ramai orang datang kepada kami: "Kawan-kawan, kami tahu bahawa anda sedang melakukan Kubernetes, lakukan untuk kami!" Kami menjawab mereka: "Tuan-tuan, kami tidak melakukan Kubernetes, kami mendorong dan semua yang berkaitan dengannya." Kerana pada masa ini adalah mustahil untuk membuat produk tanpa melakukan semua CI/CD dan keseluruhan cerita ini. Semua orang telah berpindah dari bahagian yang kita ada pembangunan melalui pembangunan, dan kemudian eksploitasi dengan eksploitasi.

Pelanggan kami mengharapkan perkara yang berbeza, tetapi semua orang sedang menunggu keajaiban yang baik bahawa mereka mempunyai masalah tertentu, dan sekarang - hop! β€” Kubernetes akan menyelesaikannya. Orang percaya kepada keajaiban. Dalam fikiran mereka, mereka memahami bahawa tidak akan ada keajaiban, tetapi dalam jiwa mereka mereka berharap - bagaimana jika Kubernetes ini kini akan menyelesaikan segala-galanya untuk kita, mereka banyak bercakap mengenainya! Tiba-tiba dia sekarang - bersin! - dan peluru perak, bersin! β€” dan kami mempunyai 100% masa beroperasi, semua pembangun boleh mengeluarkan apa sahaja yang masuk ke dalam pengeluaran 50 kali, dan ia tidak ranap. Secara umum, satu keajaiban!

Apabila orang seperti itu datang kepada kami, kami berkata: "Maaf, tetapi tidak ada yang namanya keajaiban." Untuk menjadi sihat, anda perlu makan dengan baik dan bersenam. Untuk mempunyai produk yang boleh dipercayai, ia perlu dibuat dengan pasti. Untuk mempunyai CI/CD yang mudah, anda perlu membuatnya seperti ini. Itu banyak kerja yang perlu dilakukan.

Menjawab soalan siapa yang memerlukan Kubernetes - tiada siapa yang memerlukan Kubernetes.

Sesetengah orang mempunyai tanggapan salah bahawa mereka memerlukan Kubernetes. Orang ramai memerlukan, mereka mempunyai keperluan yang mendalam untuk berhenti berfikir, belajar, dan berminat dalam semua masalah infrastruktur dan masalah menjalankan aplikasi mereka. Mereka mahu aplikasi hanya berfungsi dan hanya digunakan. Bagi mereka, Kubernetes adalah harapan bahawa mereka akan berhenti mendengar cerita bahawa "kami berbaring di sana," atau "kami tidak boleh melancarkan," atau sesuatu yang lain.

Pengarah teknikal biasanya datang kepada kami. Mereka bertanya kepadanya dua perkara: di satu pihak, memberi kita ciri, sebaliknya, kestabilan. Kami mencadangkan anda mengambilnya sendiri dan melakukannya. Peluru perak, atau lebih tepatnya bersalut perak, ialah anda akan berhenti memikirkan masalah ini dan membuang masa. Anda akan mempunyai orang istimewa yang akan menutup isu ini.

Perkataan yang kami atau orang lain perlukan Kubernetes adalah tidak betul.

Pentadbir sangat memerlukan Kubernetes, kerana ia adalah mainan yang sangat menarik yang anda boleh bermain dan bermain-main. Sejujurnya - semua orang sukakan mainan. Kita semua adalah kanak-kanak di suatu tempat, dan apabila kita melihat yang baru, kita mahu memainkannya. Bagi sesetengah orang, ini tidak digalakkan, contohnya, dalam pentadbiran, kerana mereka sudah cukup bermain dan sudah letih sehingga mereka tidak mahu. Tetapi ini tidak hilang sepenuhnya kepada sesiapa. Sebagai contoh, jika saya sudah lama bosan dengan mainan dalam bidang pentadbiran sistem dan DevOps, maka saya masih menyukai mainan itu, saya masih membeli beberapa yang baharu. Semua orang, satu cara atau yang lain, masih mahukan sejenis mainan.

Tidak perlu bermain dengan produksi. Apa sahaja yang saya cadangkan untuk tidak lakukan dan apa yang saya lihat sekarang secara beramai-ramai: "Oh, mainan baharu!" β€” mereka berlari untuk membelinya, membelinya dan: "Mari kita bawa ke sekolah sekarang dan tunjukkan kepada semua rakan kita." Jangan buat begitu. Saya minta maaf, anak-anak saya baru membesar, saya sentiasa melihat sesuatu pada kanak-kanak, perhatikan dalam diri saya, dan kemudian umumkannya kepada orang lain.

Jawapan akhir ialah: anda tidak memerlukan Kubernetes. Anda perlu menyelesaikan masalah anda.

Apa yang anda boleh capai ialah:

  • prod tidak jatuh;
  • walaupun dia cuba jatuh, kita tahu tentangnya terlebih dahulu, dan kita boleh meletakkan sesuatu di dalamnya;
  • kita boleh mengubahnya pada kelajuan yang diperlukan oleh perniagaan kita, dan kita boleh melakukannya dengan mudah; ia tidak mendatangkan sebarang masalah kepada kita.

Terdapat dua keperluan sebenar: kebolehpercayaan dan kedinamikan/fleksibiliti pelancaran. Setiap orang yang sedang melakukan beberapa jenis projek IT, tidak kira dalam apa jenis perniagaan - lembut untuk memudahkan dunia, dan yang memahami perkara ini, perlu menyelesaikan keperluan ini. Kubernetes dengan pendekatan yang betul, dengan pemahaman yang betul dan dengan pengalaman yang mencukupi membolehkan anda menyelesaikannya.

Mengenai tanpa pelayan

β€” Jika anda melihat lebih jauh ke masa depan, kemudian cuba menyelesaikan masalah ketiadaan sakit kepala dengan infrastruktur, dengan kelajuan pelancaran dan kelajuan perubahan aplikasi, penyelesaian baharu muncul, sebagai contoh, tanpa pelayan. Adakah anda merasakan sebarang potensi ke arah ini dan, katakan, bahaya untuk Kubernetes dan penyelesaian yang serupa?

Dmitry: Di sini kita perlu membuat kenyataan sekali lagi bahawa saya bukan pelihat yang melihat ke hadapan dan berkata - ia akan menjadi seperti ini! Walaupun saya hanya melakukan perkara yang sama. Saya melihat kaki saya dan melihat banyak masalah di sana, sebagai contoh, bagaimana transistor berfungsi dalam komputer. kelakar kan? Kami menghadapi beberapa pepijat dalam CPU.

Jadikan tanpa pelayan agak boleh dipercayai, murah, cekap dan mudah, menyelesaikan semua isu ekosistem. Di sini saya bersetuju dengan Elon Musk bahawa planet kedua diperlukan untuk mewujudkan toleransi kesalahan untuk manusia. Walaupun saya tidak tahu apa yang dia katakan, saya faham bahawa saya sendiri belum bersedia untuk terbang ke Marikh dan ia tidak akan berlaku esok.

Dengan tanpa pelayan jelas jelas bahawa ini adalah perkara yang betul dari segi ideologi, seperti toleransi kesalahan untuk manusia - mempunyai dua planet adalah lebih baik daripada satu. Tetapi bagaimana untuk melakukannya sekarang? Menghantar satu ekspedisi tidak menjadi masalah jika anda menumpukan usaha anda padanya. Menghantar beberapa ekspedisi dan menempatkan beberapa ribu orang di sana, saya fikir, juga realistik. Tetapi untuk menjadikannya benar-benar toleran terhadap kesalahan supaya separuh daripada manusia tinggal di sana, nampaknya saya kini mustahil, tidak dipertimbangkan.

Dengan tanpa pelayan satu lawan satu: perkara itu hebat, tetapi ia jauh daripada masalah 2019. Lebih dekat dengan 2030 - mari kita hayati untuk melihatnya. Saya tidak ragu-ragu bahawa kita akan hidup, kita pasti akan hidup (ulang sebelum tidur), tetapi sekarang kita perlu menyelesaikan masalah lain. Ia seperti mempercayai cerita dongeng kuda poni Rainbow. Ya, beberapa peratus kes telah diselesaikan, dan ia diselesaikan dengan sempurna, tetapi secara subjektif, tanpa pelayan adalah pelangi... Bagi saya, topik ini terlalu jauh dan tidak dapat difahami. Saya tidak bersedia untuk bercakap. Pada tahun 2019, anda tidak boleh menulis satu aplikasi tanpa pelayan.

Bagaimana Kubernetes akan berkembang

β€” Semasa kita menuju ke arah masa depan jauh yang berpotensi indah ini, pada pendapat anda, bagaimanakah Kubernetes dan ekosistem di sekelilingnya akan berkembang?

Dmitry: Saya telah banyak memikirkan perkara ini dan saya mempunyai jawapan yang jelas. Yang pertama adalah statefull - lagipun, stateless lebih mudah dilakukan. Kubernetes pada mulanya melabur lebih banyak dalam ini, semuanya bermula dengannya. Stateless berfungsi hampir sempurna di Kubernetes, tiada apa yang perlu dirungut. Masih terdapat banyak masalah, atau lebih tepatnya, nuansa. Segala-galanya di sana sudah sesuai untuk kami, tetapi itulah kami. Ia akan mengambil masa sekurang-kurangnya beberapa tahun lagi untuk ini berfungsi untuk semua orang. Ini bukan penunjuk yang dikira, tetapi perasaan saya dari kepala saya.

Pendek kata, statefull harus - dan akan - berkembang dengan sangat kuat, kerana semua aplikasi kami menyimpan status; tiada aplikasi tanpa kewarganegaraan. Ini adalah ilusi; anda sentiasa memerlukan beberapa jenis pangkalan data dan sesuatu yang lain. Statefull adalah mengenai meluruskan segala yang mungkin, membetulkan semua pepijat, memperbaiki semua masalah yang sedang dihadapi - mari kita panggil ia diterima pakai.

Tahap yang tidak diketahui, tahap masalah yang tidak dapat diselesaikan, tahap kebarangkalian untuk menghadapi sesuatu akan menurun dengan ketara. Ini cerita penting. Dan pengendali - segala-galanya yang berkaitan dengan pengekodan logik pentadbiran, logik kawalan untuk mendapatkan perkhidmatan yang mudah: perkhidmatan mudah MySQL, perkhidmatan mudah RabbitMQ, perkhidmatan mudah Memcache - secara amnya, semua komponen ini yang kita perlu dijamin untuk bekerja daripada kotak itu. Ini hanya menyelesaikan masalah yang kami mahukan pangkalan data, tetapi kami tidak mahu mentadbirnya, atau kami mahu Kubernetes, tetapi kami tidak mahu mentadbirnya.

Kisah pembangunan operator ini dalam satu bentuk atau yang lain akan menjadi penting dalam beberapa tahun akan datang.

Saya rasa kemudahan penggunaan harus meningkat dengan banyak - kotak akan menjadi lebih dan lebih hitam, lebih dan lebih dipercayai, dengan lebih banyak tombol mudah.

Saya pernah mendengar wawancara lama dengan Isaac Asimov dari tahun 80-an di YouTube pada Saturday Night Live - program seperti Urgant, hanya menarik. Mereka bertanya kepadanya tentang masa depan komputer. Dia berkata bahawa masa depan adalah dalam kesederhanaan, sama seperti radio. Penerima radio pada asalnya adalah perkara yang kompleks. Untuk menangkap gelombang, anda perlu memusing tombol selama 15 minit, memusingkan lidi dan secara amnya tahu bagaimana semuanya berfungsi, memahami fizik penghantaran gelombang radio. Akibatnya, hanya tinggal satu tombol di radio.

Sekarang pada 2019 radio apa? Di dalam kereta, penerima radio mencari semua gelombang dan nama stesen. Fizik proses tidak berubah dalam 100 tahun, tetapi kemudahan penggunaan telah. Sekarang, dan bukan sahaja sekarang, sudah pada tahun 1980, apabila ada temu bual dengan Azimov, semua orang menggunakan radio dan tiada siapa yang memikirkan bagaimana ia berfungsi. Ia sentiasa berkesan - itu sudah tentu.

Azimov kemudian berkata bahawa ia akan menjadi sama dengan komputer - kemudahan penggunaan akan meningkat. Walaupun pada tahun 1980 anda perlu dilatih untuk menekan butang pada komputer, itu tidak akan berlaku pada masa hadapan.

Saya mempunyai perasaan bahawa dengan Kubernetes dan dengan infrastruktur juga akan terdapat peningkatan yang besar dalam kemudahan penggunaan. Ini, pada pendapat saya, adalah jelas - ia terletak di permukaan.

Apa yang perlu dilakukan dengan jurutera?

β€” Apakah yang akan berlaku kepada jurutera dan pentadbir sistem yang menyokong Kubernetes?

Dmitry: Apa yang berlaku kepada akauntan selepas kemunculan 1C? Lebih kurang sama. Sebelum ini, mereka mengira di atas kertas - kini dalam program. Produktiviti buruh telah meningkat mengikut urutan magnitud, tetapi buruh itu sendiri tidak hilang. Jika sebelum ini memerlukan 10 jurutera untuk mentol lampu, kini sudah memadai.

Jumlah perisian dan bilangan tugas, nampaknya saya, kini berkembang pada kadar yang lebih cepat daripada DevOps baharu yang muncul dan kecekapan meningkat. Terdapat kekurangan tertentu dalam pasaran sekarang dan ia akan bertahan lama. Kemudian, semuanya akan kembali kepada beberapa jenis normal, di mana kecekapan kerja akan meningkat, akan semakin banyak tanpa pelayan, neuron akan dilampirkan pada Kubernetes, yang akan memilih semua sumber tepat seperti yang diperlukan, dan secara umum akan melakukan segala-galanya sendiri, seperti yang sepatutnya - orang itu hanya melangkah pergi dan tidak campur tangan.

Tetapi seseorang masih perlu membuat keputusan. Jelas bahawa tahap kelayakan dan pengkhususan orang ini lebih tinggi. Sekarang, dalam bahagian perakaunan, anda tidak memerlukan 10 orang pekerja menyimpan buku supaya tangan mereka tidak letih. Ia tidak perlu. Banyak dokumen diimbas secara automatik dan diiktiraf oleh sistem pengurusan dokumen elektronik. Seorang ketua akauntan yang bijak sudah memadai, sudah mempunyai kemahiran yang lebih hebat, dengan pemahaman yang baik.

Secara umum, ini adalah cara untuk pergi dalam semua industri. Ia sama dengan kereta: sebelum ini, sebuah kereta datang dengan seorang mekanik dan tiga pemandu. Pada masa kini, memandu kereta adalah proses yang mudah di mana kita semua mengambil bahagian setiap hari. Tiada siapa yang berfikir bahawa kereta adalah sesuatu yang rumit.

DevOps atau kejuruteraan sistem tidak akan hilang - kerja dan kecekapan peringkat tinggi akan meningkat.

β€” Saya juga mendengar idea menarik bahawa kerja itu sebenarnya akan meningkat.

Dmitry: Sudah tentu, seratus peratus! Kerana jumlah perisian yang kami tulis sentiasa berkembang. Bilangan isu yang kami selesaikan dengan perisian sentiasa berkembang. Jumlah kerja semakin meningkat. Kini pasaran DevOps terlalu panas. Ini boleh dilihat dalam jangkaan gaji. Dengan cara yang baik, tanpa pergi ke perincian, perlu ada junior yang mahu X, pertengahan yang mahu 1,5X, dan senior yang mahu 2X. Dan sekarang, jika anda melihat pasaran gaji Moscow DevOps, seorang junior mahu dari X kepada 3X dan seorang senior mahu dari X kepada 3X.

Tiada siapa tahu berapa harganya. Tahap gaji diukur dengan keyakinan anda - rumah gila yang lengkap, sejujurnya, pasaran yang terlalu panas.

Sudah tentu, keadaan ini akan berubah tidak lama lagi - beberapa ketepuan harus berlaku. Ini tidak berlaku dengan pembangunan perisian - walaupun pada hakikatnya semua orang memerlukan pembangun, dan semua orang memerlukan pembangun yang baik, pasaran memahami siapa yang berbaloi - industri telah tenang. Itu tidak berlaku dengan DevOps hari ini.

β€” Daripada apa yang saya dengar, saya menyimpulkan bahawa pentadbir sistem semasa tidak perlu terlalu risau, tetapi sudah tiba masanya untuk meningkatkan kemahirannya dan bersedia untuk fakta bahawa esok akan ada lebih banyak kerja, tetapi ia akan menjadi lebih berkelayakan.

Dmitry: Seratus peratus. Secara umum, kita hidup pada tahun 2019 dan peraturan hidup adalah ini: pembelajaran sepanjang hayat - kita belajar sepanjang hidup kita. Nampaknya sekarang semua orang sudah tahu dan merasakan ini, tetapi tidak cukup untuk mengetahui - anda perlu melakukannya. Setiap hari kita mesti berubah. Jika kita tidak melakukan ini, maka lambat laun kita akan digugurkan di luar kerjaya.

Bersedia untuk pusingan tajam 180 darjah. Saya tidak menolak situasi di mana sesuatu berubah secara radikal, sesuatu yang baru dicipta - ia berlaku. Hop! - dan kita kini bertindak secara berbeza. Adalah penting untuk bersedia untuk ini dan jangan risau. Ia mungkin berlaku bahawa esok semua yang saya lakukan akan menjadi tidak perlu - tidak ada, saya telah belajar sepanjang hidup saya dan bersedia untuk belajar sesuatu yang lain. Ia tidak menjadi masalah. Tidak perlu takut dengan keselamatan kerja, tetapi anda perlu bersedia untuk sentiasa mempelajari sesuatu yang baru.

Hasrat dan satu minit pengiklanan

- Adakah anda mempunyai sebarang keinginan?

Dmitry: Ya, saya mempunyai beberapa keinginan.

Pertama dan mercantile - melanggan Youtube. Pembaca yang dihormati, pergi ke YouTube dan langgan saluran kami. Dalam masa kira-kira sebulan kami akan memulakan pengembangan aktif pada perkhidmatan video. Kami akan mempunyai banyak kandungan pendidikan tentang Kubernetes, terbuka dan pelbagai: daripada perkara praktikal, sehingga ke makmal, kepada perkara teori asas yang mendalam dan cara menggunakan Kubernetes di tahap prinsip dan corak.

Hasrat dagangan kedua - pergi ke GitHub dan letakkan bintang kerana kita memakannya. Jika anda tidak memberi kami bintang, kami tidak akan mempunyai apa-apa untuk dimakan. Ia seperti mana dalam permainan komputer. Kami melakukan sesuatu, kami lakukan, kami cuba, seseorang mengatakan bahawa ini adalah basikal yang dahsyat, seseorang yang semuanya salah sama sekali, tetapi kami meneruskan dan bertindak dengan jujur. Kami melihat masalah, menyelesaikannya dan berkongsi pengalaman kami. Oleh itu, berikan kami bintang, ia tidak akan pergi dari anda, tetapi ia akan datang kepada kami, kerana kami memakannya.

Keinginan ketiga, penting, dan bukan lagi dagangan - berhenti mempercayai cerita dongeng. Anda profesional. DevOps ialah profesion yang sangat serius dan bertanggungjawab. Berhenti bermain di tempat kerja. Biarkan ia klik untuk anda dan anda akan memahaminya. Bayangkan anda datang ke hospital, dan di sana doktor sedang bereksperimen dengan anda. Saya faham bahawa ini mungkin menyinggung perasaan seseorang, tetapi, kemungkinan besar, ini bukan tentang anda, tetapi tentang orang lain. Beritahu orang lain untuk berhenti juga. Ini benar-benar merosakkan kehidupan kita semua - ramai yang mula menganggap operasi, pentadbir dan DevOps sebagai lelaki yang telah melanggar sesuatu lagi. Ini adalah "pecah" paling kerap disebabkan oleh fakta bahawa kami pergi bermain, dan tidak melihat dengan kesedaran dingin bahawa ini adalah bagaimana ia, dan itulah bagaimana ia adalah.

Ini tidak bermakna anda tidak perlu mencuba. Kita perlu bereksperimen, kita lakukan sendiri. Sejujurnya, kita sendiri kadang-kadang bermain permainan - ini, sudah tentu, sangat buruk, tetapi tidak ada manusia yang asing bagi kita. Mari kita isytiharkan tahun 2019 sebagai tahun percubaan yang serius, difikirkan dengan baik, dan bukan permainan dalam pengeluaran. Mungkin begitu.

- Terima kasih banyak - banyak!

Dmitry: Terima kasih, Vitaly, untuk masa dan untuk temu duga. Pembaca yang dihormati, terima kasih banyak jika anda tiba-tiba sampai ke tahap ini. Saya harap kami membawa anda sekurang-kurangnya beberapa pemikiran.

Dalam temu bual itu, Dmitry menyentuh isu werf. Sekarang ini adalah pisau Swiss universal yang menyelesaikan hampir semua masalah. Tetapi ia tidak selalu begitu. hidup DevOpsConf  di hari raya RIT++ Dmitry Stolyarov akan memberitahu anda tentang alat ini secara terperinci. dalam laporan tersebut "werf ialah alat kami untuk CI/CD dalam Kubernetes" akan ada segala-galanya: masalah dan nuansa tersembunyi Kubernetes, pilihan untuk menyelesaikan masalah ini dan pelaksanaan werf semasa secara terperinci. Sertai kami pada 27 dan 28 Mei, kami akan mencipta alat yang sempurna.

Sumber: www.habr.com

Tambah komen