Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Laporan kasebut dikhususake kanggo masalah praktis ngembangake operator ing Kubernetes, ngrancang arsitektur lan prinsip operasi dhasar.

Ing bagean pisanan saka laporan, kita bakal nimbang:

  • apa operator ing Kubernetes lan apa iku perlu;
  • carane persis operator nyederhanakake manajemen sistem kompleks;
  • apa operator bisa lan apa operator ora bisa.

Sabanjure, ayo nerusake kanggo ngrembug struktur internal operator. Coba arsitektur lan operasi operator langkah demi langkah. Ayo analisa kanthi rinci:

  • interaksi antarane operator lan Kubernetes;
  • fungsi apa operator njupuk lan apa delegasi kanggo Kubernetes.

Coba ngatur pecahan lan replika database ing Kubernetes.
Sabanjure, kita bakal ngrembug masalah panyimpenan data:

  • carane nggarap Persistent Storage saka sudut pandang operator;
  • pitfalls nggunakake Storage Lokal.

Ing bagean pungkasan saka laporan, kita bakal nimbang conto praktis saka aplikasi operator clickhouse karo Amazon utawa Google Cloud Service. Laporan kasebut adhedhasar conto pangembangan lan pengalaman operasi operator kanggo ClickHouse.

Video:

Jenengku Vladislav Klimenko. Dina iki aku pengin ngomong babagan pengalaman ngembangake lan ngoperasikake operator, lan iki minangka operator khusus kanggo ngatur klompok database. Tuladhane ClickHouse-operator kanggo ngatur kluster ClickHouse.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Napa kita duwe kesempatan kanggo ngomong babagan operator lan ClickHouse?

  • Kita ndhukung lan ngembangake ClickHouse.
  • Ing wayahe, kita nyoba alon-alon nggawe kontribusi kanggo pangembangan ClickHouse. Lan kita nomer loro sawise Yandex babagan jumlah owah-owahan sing digawe ing ClickHouse.
  • Kita nyoba nggawe proyek tambahan kanggo ekosistem ClickHouse.

Aku seneng ngomong babagan salah sawijining proyek kasebut. Iki babagan ClickHouse-operator kanggo Kubernetes.

Ing laporanku, aku pengin ndemek rong topik:

  • Topik pisanan yaiku kepiye operator basis data ClickHouse ing Kubernetes.
  • Topik kapindho yaiku cara kerja operator, yaiku cara sesambungan karo Kubernetes.

Nanging, loro pitakonan iki bakal intersect saindhenging laporan sandi.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Sapa sing kepengin ngrungokake apa sing dakkandhakake?

  • Sing paling menarik yaiku sing ngeksploitasi operator.
  • Utawa kanggo wong-wong sing pengin nggawe dhewe kanggo ngerti cara kerjane nang, carane operator sesambungan karo Kubernetes, lan apa pitfalls bisa katon.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Supaya luwih ngerti apa sing bakal kita bahas dina iki, luwih becik ngerti cara kerja Kubernetes lan duwe latar mburi dhasar ing komputasi awan.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Apa ClickHouse? Iki minangka basis data kolom kanthi spesifik ing pangolahan pitakon analitis online. Lan iku rampung mbukak sumber.

Lan kita mung kudu ngerti rong perkara. Sampeyan kudu ngerti yen iki database, supaya apa sing bakal dakkandhakake bakal ditrapake kanggo meh kabeh database. Lan kasunyatan manawa skala ClickHouse DBMS kanthi apik menehi skalabilitas meh linear. Lan mulane, negara kluster minangka negara alami kanggo ClickHouse. Lan kita paling kasengsem ing rembugan carane ngawula kluster ClickHouse ing Kubernetes.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Napa dheweke dibutuhake ing kana? Napa kita ora bisa terus ngoperasikake dhewe? Lan jawaban kasebut sebagian teknis lan sebagian organisasi.

  • Ing praktik, kita luwih kerep nemoni kahanan ing perusahaan gedhe meh kabeh komponen wis ana ing Kubernetes. Tetep database njaba.
  • Lan liyane lan liyane asring pitakonan: "Apa bisa diselehake ing njero?". Mula, perusahaan gedhe nyoba ngasilake manunggale manajemen maksimal supaya bisa cepet ngatur gudang data.
  • Lan iki utamané mbantu yen sampeyan butuh kesempatan maksimum kanggo mbaleni bab sing padha ing panggonan anyar, sing, portability maksimum.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Carane gampang utawa angel iku? Iki, mesthi, bisa ditindakake kanthi tangan. Nanging iki ora supaya gampang, amarga kita nambah munggah kerumitan ngatur Kubernetes dhewe, nanging ing wektu sing padha spesifik ClickHouse dileksanakake. Lan pranyata agregasi kuwi.

Lan kabeh, iki menehi teknologi sing cukup gedhe, sing wis dadi angel diatur, amarga Kubernetes nggawa masalah saben dinane, lan ClickHouse nggawa masalah kanggo operasi saben dina. Utamane yen kita duwe sawetara ClickHouses, lan kita kudu terus-terusan nindakake apa wae karo dheweke.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

ClickHouse kanthi konfigurasi dinamis nduweni masalah sing cukup akeh sing nggawe beban konstan ing DevOps:

  • Nalika kita pengin ngganti soko ing ClickHouse, contone, nambah replika, shard, banjur kita kudu ngatur konfigurasi.
  • Banjur ganti skema data, amarga ClickHouse duwe metode sharding tartamtu. Ana perlu kanggo lay out skema data, lay out konfigurasi.
  • Sampeyan kudu nyiyapake ngawasi.
  • Koleksi log kanggo shards anyar, kanggo replika anyar.
  • Jaga pemulihan.
  • Lan miwiti maneh.

Iki minangka karya rutin sing dakkarepake supaya bisa ditindakake.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Kubernetes dhewe mbantu akeh ing operasi, nanging ing bab sistem dhasar.

Kubernetes apik banget kanggo nggampangake lan ngotomatisasi kaya:

  • Pamulihan
  • Baleni meneh.
  • Manajemen panyimpenan.

Iku apik, sing arah tengen, nanging wis rampung metu saka tutul karo carane operate cluster database.

Aku pengin liyane, Aku pengin kabeh database bisa kanggo kita ing Kubernetes.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Aku pengin njaluk kaya tombol abang sihir gedhe sing sampeyan pencet lan sampeyan duwe kluster sing dipasang lan dikelola ing saindhenging siklus urip kanthi tugas saben dina sing kudu dirampungake. Kluster ClickHouse ing Kubernetes.

Lan kita nyoba nggawe solusi sing bakal mbantu nggampangake karya kasebut. Iki ClickHouse-operator kanggo Kubernetes saka Altinity.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Operator minangka program sing tugas utamane yaiku ngatur program liyane, yaiku manajer.

Lan ngandhut pola prilaku. Sampeyan bisa nyebataken kawruh kodifikasi babagan area subyek.

Lan tugas utamane yaiku nggawe urip luwih gampang kanggo DevOps lan nyuda micromanagement supaya dheweke (DevOps) wis mikir ing syarat-syarat tingkat dhuwur, yaiku, supaya dheweke (DevOps) ora micromanage, supaya ora ngatur kabeh kanthi manual. rincian.

Lan mung operator minangka asisten robot sing berjuang karo microtasks lan mbantu DevOps.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Napa operator dibutuhake? Dheweke unggul ing rong bidang:

  • Nalika spesialis ClickHouse ora duwe pengalaman sing cukup, nanging wis dibutuhake kanggo ngoperasikake ClickHouse, operator nggampangake operasi lan ngidini sampeyan ngoperasikake kluster ClickHouse kanthi konfigurasi sing rada rumit, nanging ora rinci babagan cara kerjane ing njero. . Sampeyan mung menehi tugas tingkat dhuwur, lan kerjane.
  • Lan tugas kaloro sing paling apik yaiku yen perlu ngotomatisasi akeh tugas khas. Mbusak microtasks saka sysadmins.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Iki paling dibutuhake dening wong-wong sing lagi miwiti lelungan, utawa wong-wong sing kudu nindakake akeh otomatisasi.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Apa bedane pendekatan adhedhasar operator lan sistem liyane? Ana uga Helm. Iku uga mbantu kanggo nginstal ClickHouse, sampeyan bisa tarik denah helm, kang malah bakal nginstal kabèh ClickHouse cluster. Apa banjur prabédan antarane operator lan saka padha, contone, Helm?

Bentenane dhasar utama yaiku Helm babagan manajemen paket, lan operator dadi luwih maju. Iki minangka dhukungan saka kabeh siklus urip. Iki ora mung instalasi, iki minangka tugas saben dina sing kalebu skala, sharding, yaiku kabeh sing kudu ditindakake sajrone siklus urip (yen perlu, mbusak uga) - kabeh iki diputusake dening operator. Iki nyoba ngotomatisasi lan nglayani kabeh siklus urip piranti lunak. Iki minangka prabédan dhasar saka solusi liyane sing ditampilake.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Iki minangka pambuka, ayo nerusake.

Kepiye carane mbangun operator kita? Kita nyoba nyedhaki masalah kasebut supaya bisa ngatur kluster ClickHouse minangka sumber tunggal.

Ing kene kita duwe data input ing sisih kiwa gambar. Iki YAML karo specification kluster, kang klasik liwat kubectl kanggo Kubernetes. Ing kana, operator kita njupuk, nindakake sihir. Lan minangka asil, kita entuk skema kasebut. Iki minangka implementasi ClickHouse ing Kubernetes.

Banjur kita bakal alon-alon ndeleng cara kerja operator, apa tugas khas sing bisa ditanggulangi. Kita bakal nimbang mung tugas khas, amarga kita duwe wektu winates. Lan ora bakal dicritakake babagan kabeh sing bisa ditindakake operator.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Ayo miwiti saka latihan. Proyek kita pancen mbukak sumber, supaya sampeyan bisa ndeleng cara kerjane ing GitHub. Lan sampeyan bisa nerusake saka pertimbangan, yen sampeyan mung pengin miwiti, sampeyan bisa miwiti karo Pandhuan Mulai cepet.

Yen sampeyan pengin ngerti kanthi rinci, banjur kita nyoba kanggo njaga dokumentasi ing wangun sing luwih utawa kurang prayoga.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Ayo dadi miwiti karo masalah praktis. Tugas pisanan kita kabeh pengin miwiti karo iku kanggo mbukak conto pisanan piye wae. Kepiye carane miwiti ClickHouse kanthi bantuan operator, tanpa ngerti cara kerjane? Kita nulis manifesto, amarga kabeh komunikasi karo k8s komunikasi liwat manifests.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Iki minangka manifesto sing kompleks. Apa sing wis disorot nganggo warna abang yaiku sing kudu kita fokusake. Kita takon operator nggawe klompok sing jenenge demo.

Saiki, iki minangka conto dhasar. Panyimpenan durung diterangake, nanging kita bakal bali menyang panyimpenan mengko. Saiki, kita bakal mirsani pangembangan kluster ing dinamika.

Kita wis nggawe manifesto iki. We feed menyang operator kita. Dheweke kerja, dheweke nindakake sihir.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

We katon ing console. Telung komponen sing menarik - yaiku Pod, loro Service-a, StatefulSet.

Operator wis kerja, lan kita bisa ndeleng apa sing digawe.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Dheweke nggawe kaya iki. Kita duwe StatefulSet, Pod, ConfigMap kanggo saben replika, ConfigMap kanggo kabeh kluster. Mesthi layanan minangka titik entri menyang kluster.

Layanan minangka Pusat Load Balancer Service lan bisa kanggo saben replika, kanggo saben beling.

Punika kluster dhasar kita katon kaya iki. Dheweke saka siji simpul.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Ayo dadi luwih, kita bakal rumit. Sampeyan kudu ngrusak kluster.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Tugas kita tambah akeh, dinamika diwiwiti. Kita pengin nambah beling. Kita tindakake pembangunan. Kita ngganti spesifikasi kita. Kita nuduhake yen kita pengin rong shards.

Iki minangka file sing padha sing dikembangake kanthi dinamis kanthi tuwuhing sistem. Ora ana panyimpenan, panyimpenan bakal dibahas luwih lanjut, iki minangka masalah sing kapisah.

We feed operator YAML lan ndeleng apa mengkono.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Operator mikir lan nggawe entitas ing ngisor iki. Kita wis duwe rong Pod, telung Layanan lan, dumadakan, 2 StatefulSets. Kenapa 2 StatefulSets?

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Kaya iki ing diagram - iki minangka negara wiwitan, nalika kita duwe siji pod.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Dadi kaya iki. Nganti saiki, kabeh prasaja, wis diduplikasi.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Lan kenapa StatefulSet dadi loro? Ing kene, kita kudu nyimpang lan ngrembug babagan carane Pods dikelola ing Kubernetes.

Ana obyek kasebut sing diarani StatefulSet, sing ngidini sampeyan nggawe set Pod saka cithakan. Faktor kunci ing kene yaiku Cithakan. Lan sampeyan bisa mbukak akeh Pod ing siji StatefulSet miturut siji cithakan. Lan tembung kunci ing kene yaiku "siji cithakan akeh Pod".

Lan ana godaan gedhe kanggo nggawe kabeh kluster, ngemas dadi siji StatefulSet. Bakal bisa, ora ana masalah. Nanging ana siji caveat. Yen kita pengin ngumpulake kluster heterogen, yaiku saka sawetara versi ClickHouse, banjur pitakonan kita diwiwiti. Ya, StatefulSet bisa nindakake nganyari rolling, nanging ing kana sampeyan bisa muter versi anyar, nerangake yen sampeyan kudu nyoba ora luwih saka akeh kelenjar ing wektu sing padha.

Nanging yen kita extrapolate tugas lan ngomong sing kita pengin nggawe kluster rampung heterogen lan ora pengin ngganti saka versi lawas menyang anyar nggunakake nganyari rolling, nanging mung pengin nggawe kluster heterogen loro ing syarat-syarat versi beda. saka ClickHouse lan babagan panyimpenan sing beda. Kita pengin, contone, kanggo nggawe sawetara replika ing disk kapisah, ing alon, ing umum, kanggo rampung mbangun kluster heterogen. Lan amarga kasunyatane StatefulSet nggawe solusi standar saka siji cithakan, mula ora ana cara kanggo nindakake iki.

Sawise sawetara pamikiran, diputusake yen kita nindakake kaya iki. Kita duwe saben replika ing StatefulSet dhewe. Ana sawetara drawbacks kanggo solusi iki, nanging ing laku iku kabeh rampung encapsulates operator. Lan ana akeh keuntungan. Kita bisa mbangun kluster kaya sing dikarepake, contone, sing pancen heterogen. Mulane, ing kluster kang kita duwe loro shards karo siji tiron, kita bakal duwe 2 StatefulSets lan 2 Pods sabenere amarga kita milih pendekatan iki amarga alasan ndhuwur kanggo kemampuan kanggo mbangun klompok heterogen.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Ayo bali menyang tugas praktis. Ing kluster kita, kita kudu ngatur pangguna, i.e. sampeyan kudu nindakake sawetara konfigurasi ClickHouse ing Kubernetes. Operator nyedhiyakake kabeh kemungkinan kanggo iki.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Kita bisa nulis apa sing dikarepake langsung ing YAML. Kabeh opsi konfigurasi langsung dipetakan saka YAML iki menyang konfigurasi ClickHouse, sing banjur disebarake ing saindhenging kluster.

Sampeyan uga bisa nulis kaya iki. Iki kanggo conto. Sandi bisa dienkripsi. Pancen kabeh opsi konfigurasi ClickHouse didhukung. Punika mung conto.

Konfigurasi kluster disebarake minangka ConfigMap. Ing laku, nganyari ConfigMap ora kelakon langsung, supaya yen ana kluster gedhe, banjur proses push konfigurasi njupuk sawetara wektu. Nanging kabeh iki trep banget kanggo nggunakake.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

We complicate tugas. Kluster berkembang. Kita pengin niru data. Tegese, kita wis duwe rong pecahan, siji replika saben, pangguna dikonfigurasi. Kita tuwuh lan pengin niru.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Apa sing kita butuhake kanggo replikasi?

We kudu ZooKeeper. Ing ClickHouse, replikasi dibangun nggunakake ZooKeeper. ZooKeeper dibutuhake supaya replika ClickHouse sing beda duwe konsensus babagan pamblokiran data ing ClickHouse.

ZooKeeper bisa digunakake dening sapa wae. Yen perusahaan duwe ZooKeeper eksternal, mula bisa digunakake. Yen ora, sampeyan bisa nginstal saka repositori kita. Ana installer sing nggawe kabeh iki luwih gampang.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Lan skema interaksi kabeh sistem dadi kaya iki. Kita duwe Kubernetes minangka platform. Iku nglakokake statement ClickHouse. ZooKeeper aku gambar kene. Lan operator sesambungan karo ClickHouse lan ZooKeeper. Sing, interaksi dipikolehi.

Lan kabeh iki perlu kanggo ClickHouse kasil niru data kanggo k8s.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Saiki ayo goleki tugas kasebut, kepiye tampilan replikasi.

Kita nambah rong bagean menyang manifest kita. Pisanan yaiku kanggo entuk ZooKeeper, sing bisa ana ing jero Kubernetes utawa eksternal. Iki mung gambaran. Lan kita pesen replika. Sing. kita pengin loro replika. Secara total, kita kudu duwe 4 pods ing output. We elinga bab panyimpenan, iku bakal bali sethitik luwih. Panyimpenan minangka lagu sing kapisah.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Iku kaya iki.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Dadi kaya iki. Replika ditambahake. Kaping 4 ora cocog, kita percaya manawa ana akeh. Lan ZooKeeper ditambahake ing sisih. Pola dadi luwih rumit.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Lan wektu kanggo nambah tugas sabanjure. Kita bakal nambah Storage Persistent.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)Kanggo Storage Persistent, kita duwe opsi implementasine beda.

Yen kita mlaku ing panyedhiya maya, contone, nggunakake Amazon, Google, banjur ana godaan gedhe kanggo nggunakake panyimpenan maya. Trep banget, apik.

Lan ana pilihan kapindho. Iki kanggo panyimpenan lokal, nalika kita duwe disk lokal ing saben simpul. Opsi iki luwih angel ditindakake, nanging ing wektu sing padha luwih produktif.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Ayo ndeleng apa sing ana babagan panyimpenan awan.

Ana kaluwihan. Iku gampang banget kanggo ngatur. Kita mung supaya saka panyedhiya maya sing please menehi kita panyimpenan saka kapasitas kuwi lan kuwi, kelas kuwi lan kuwi. Kelas dicet dening panyedhiya independen.

Lan ana drawback. Kanggo sawetara, iki minangka kekurangan sing ora kritis. Mesthi, bakal ana sawetara overlay kinerja. Iku trep banget kanggo nggunakake, dipercaya, nanging ana sawetara drawdowns potensial ing kinerja.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Lan wiwit ClickHouse fokus ing kinerja, sampeyan bisa malah ngomong sing squeezes metu kabeh sing bisa, supaya akeh klien nyoba kanggo remet metu kinerja maksimum.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Lan kanggo entuk paling akeh, kita butuh panyimpenan lokal.

Kubernetes nyedhiyakake telung abstraksi kanggo nggunakake panyimpenan lokal ing Kubernetes. Iki:

  • KosongDir
  • HostPath.
  • local

Coba kepiye bedane, kepiye padha.

Kaping pisanan, ing kabeh telung pendekatan, kita duwe panyimpenan - iki minangka disk lokal sing dumunung ing simpul k8s fisik sing padha. Nanging padha duwe sawetara beda.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Ayo diwiwiti kanthi sing paling gampang, yaiku kosongDir. Apa iku ing laku? Kita sing takon sistem containerization (paling asring Docker) saka specification kita kanggo nyedhiyani kita akses menyang folder ing disk lokal.

Ing laku, docker nggawe folder sauntara nang endi wae ing dalan dhewe, nyebataken hash dawa. Lan menehi antarmuka kanggo ngakses.

Carane bakal nindakake ing syarat-syarat kinerja? Iki bakal mbukak ing kacepetan disk lokal, i.e. iki akses lengkap kanggo meneng Panjenengan.

Nanging kasus iki duwe drawback. Persistent ing kasus iki rada ragu. Ing gerakan pisanan docker karo kontaner, Persistent ilang. Yen Kubernetes pengin mindhah Pod iki menyang disk liyane sakperangan alesan, banjur data bakal ilang.

Pendekatan iki apik kanggo tes, amarga wis nuduhake kacepetan normal, nanging pilihan iki ora cocok kanggo soko serius.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Mulane, ana pendekatan kapindho. Iki hostPath. Yen sampeyan ndeleng slide sadurunge lan iki, sampeyan bisa ndeleng mung siji prabédan. Folder kita ninggalake docker langsung menyang simpul Kubernetes. Ing kene rada cepet. Kita langsung nulis path ing sistem file lokal ing ngendi kita pengin nyimpen data kita.

Cara iki nduweni kaluwihan. Iki wis Persistent nyata, lan klasik. Ing disk kita, data bakal ditulis menyang sawetara alamat.

Ana uga kekurangan. Iki minangka kerumitan manajemen. Kubernetes kita bisa uga pengin mindhah Pod menyang simpul fisik liyane. Iki ngendi DevOps main. Sampeyan kudu njelasake kanthi bener menyang kabeh sistem yen sampeyan mung bisa mindhah polong kasebut menyang simpul kasebut sing sampeyan duwe barang sing dipasang ing sadawane dalan kasebut, lan ora luwih saka siji simpul sekaligus. Cukup angel.

Utamane kanggo tujuan kasebut, kita wis nggawe template ing operator kanggo ndhelikake kabeh kerumitan iki. Lan sampeyan mung bisa ngomong: "Aku pengin duwe siji Kayata ClickHouse saben simpul fisik lan ing sadawane dalan lan kuwi."

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Nanging kabutuhan iki ora mung kanggo kita, mula para priyayi saka Kubernetes dhewe uga ngerti manawa wong pengin duwe akses menyang disk fisik, mula nyedhiyakake tingkat katelu.

Iki diarani lokal. Ora ana bedane saka slide sadurunge. Mung sadurunge iku perlu kanggo nindakake karo tangan kita ora bisa nransfer pods iki saka simpul menyang simpul, amarga padha kudu ditempelake ing dalan iki lan kuwi menyang disk fisik lokal, lan saiki kabeh kawruh iki encapsulated ing Kubernetes dhewe. Lan dadi luwih gampang kanggo ngatur.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Ayo bali menyang tugas praktis. Ayo bali menyang cithakan YAML. Kene kita duwe panyimpenan nyata. Kita bali menyang iki. Kita nyetel template VolumeClaim klasik kaya ing k8s. Lan kita njlèntrèhaké jenis panyimpenan sing dikarepake.

Sawise iku, k8s bakal njaluk panyimpenan. Alokasi kanggo kita ing StatefulSet. Lan ing pungkasan, bakal metu ing pembuangan ClickHouse.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Kita duwe skema kaya ngono. Panyimpenan Persistent kita abang, sing katon minangka tandha yen kudu ditindakake.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Lan dadi ijo. Saiki skema kluster ClickHouse ing k8s wis rampung. We have shards, replika, ZooKeeper, kita duwe Persistent nyata, kang dipun ginakaken ing salah siji cara utawa liyane. Skema kasebut wis berfungsi kanthi lengkap.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Kita terus urip. Kluster kita tambah akeh. Lan Aleksey nyoba lan ngeculake versi anyar saka ClickHouse.

Ana tugas praktis - kanggo nyoba versi anyar ClickHouse ing kluster kita. Lan, mesthi, aku ora arep kanggo muter kabeh metu, Aku pengin sijine versi anyar nang endi wae ing sudhut adoh ing siji tiron, utawa Mungkin ora siji versi anyar, nanging loro bebarengan, amarga padha metu asring.

Apa sing bisa kita ucapake babagan iki?

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Ing kene kita duwe kesempatan kaya ngono. Iki minangka template pod. Sampeyan bisa Paint, operator kita rampung ngijini sampeyan kanggo mbangun kluster heterogen. Sing. ngatur, miwiti saka kabeh tiron ing Bunch, pungkasan karo saben tiron pribadi, kang versi kita arep ClickHouse, kang versi kita pengin panyimpenan. Kita bisa ngatur kluster kanthi konfigurasi kaya sing dibutuhake.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Ayo luwih jero rada jero. Sadurunge, kita ngedika bab carane ClickHouse-operator dianggo ing hubungan kanggo spesifik ClickHouse.

Saiki aku arep ngomong sawetara tembung babagan cara kerja operator ing umum, uga cara sesambungan karo K8s.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Coba interaksi karo K8s kanggo miwiti. Apa sing kedadeyan nalika kita ngetrapake kubectl? Liwat API, obyek kita katon ing etcd.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Contone, obyek Kubernetes dhasar: pod, StatefulSet, layanan, lan liya-liyane liwat dhaptar.

Nanging, durung ana kedadeyan fisik. Objek kasebut kudu diwujudake ing kluster.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Iki ngendi controller teka ing. Controller minangka komponen k8s khusus sing bisa ngetrapake katrangan kasebut. Dheweke ngerti carane lan apa sing kudu ditindakake kanthi fisik. Dheweke ngerti carane mbukak kontaner, apa sing kudu dikonfigurasi ana supaya server bisa digunakake.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Lan materializes obyek kita ing K8s.

Nanging kita pengin operate ora mung karo pods, StatefulSets, kita pengin nggawe ClickHouseInstallation, yaiku obyek saka jinis ClickHouse, supaya bisa digunakake kanthi sakabehe. Nganti saiki, ora ana kemungkinan kasebut.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Nanging K8s duwe bab liyane becik. Kita pengin duwe entitas sing kompleks ing endi wae, ing ngendi kluster kita bakal dirakit saka pods lan StatefulSet.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Lan apa sing kudu ditindakake kanggo iki? First, Custom Resource Definition lumebu ing pemandangan. Opo iki? Iki minangka katrangan kanggo K8 sing bakal duwe jinis data liyane sing pengin ditambahake menyang pod, StatefulSet, sumber daya khusus sing bakal dadi kompleks. Iki minangka gambaran saka struktur data.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Kita uga ngirim ana liwat kubectl aplikasi. Kubernetes seneng njupuk.

Lan saiki ing panyimpenan kita, obyek ing etcd duwe kesempatan kanggo nulis sumber daya khusus sing diarani ClickHouseInstallation.

Nanging saiki, ora ana sing bakal kelakon. Yaiku, yen saiki kita nggawe file YAML sing kita nimbang kanthi katrangan babagan beling, replika lan ujar "kubectl ditrapake", banjur Kubernetes bakal nampa, dilebokake ing etcd lan ujar: "Apik, nanging aku ora ngerti. apa apa karo. Aku ora ngerti carane njaga ClickHouseInstallation."

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Mula, kita butuh wong kanggo nulungi Kubernetes ngladeni jinis data anyar. Ing sisih kiwa, kita duwe pengontrol saham Kubernetes sing bisa digunakake karo jinis data saham. Lan ing sisih tengen, kita kudu duwe pengontrol khusus sing bisa digunakake karo jinis data khusus.

Lan kanthi cara liya diarani operator. Aku khusus njupuk metu kene kanggo Kubernetes, amarga uga bisa kaleksanan njaba K8s. Paling asring, mesthi, kabeh statement dieksekusi ing Kubernetes, nanging ora ana sing ngalangi ngadeg ing njaba, supaya ing kene khusus digawa metu.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Lan saiki, pengontrol khusus, uga dikenal minangka operator, sesambungan karo Kubernetes liwat API. Dheweke wis ngerti carane sesambungan karo API. Lan dheweke wis ngerti carane nggawe skema kompleks sing pengin digawe saka sumber khusus. Iki persis apa sing ditindakake operator.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Kepiye cara kerja operator? Ayo goleki sisih tengen kanggo ndeleng kepiye dheweke nindakake. Kita bakal mangerteni carane operator materializes kabeh iki lan carane interaksi luwih karo K8s njupuk Panggonan.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Operator yaiku program. Dheweke orientasi acara. Operator langganan acara nggunakake API Kubernetes. API Kubernetes nduweni titik entri ing ngendi sampeyan bisa langganan acara. Lan yen ana owah-owahan ing K8s, banjur Kubernetes ngirim acara kanggo kabeh wong, i.e. sing langganan titik API iki bakal nampa kabar.

Operator langganan acara, lan kudu nindakake sawetara reaksi. Tugase kanggo nanggapi acara sing muncul.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Acara digawe dening sawetara nganyari. File YAML kita teka kanthi katrangan babagan ClickHouseInstallation. Dheweke lunga menyang etcd liwat aplikasi kubectl. Acara makarya ana, minangka asil, acara iki teka ClickHouse-operator. Operator nampa katrangan iki. Lan dheweke kudu nindakake apa wae. Yen nganyari teka menyang obyek ClickHouseInstallation, sampeyan kudu nganyari kluster. Lan tugas operator yaiku nganyari kluster.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Dheweke nyapo? Pisanan, kita kudu nggawe rencana aksi kanggo apa sing bakal ditindakake karo nganyari iki. Nganyari bisa cilik banget, yaiku. cilik ing eksekusi YAML, nanging bisa mimpin kanggo owah-owahan gedhe banget ing kluster. Mulane, operator nggawe rencana, lan banjur netepi.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Dheweke wiwit, miturut rencana iki, kanggo nggodhok struktur iki ing jero supaya bisa wujud pods, layanan, i.e. kanggo nindakake apa tugas utama. Iku kaya mbangun kluster ClickHouse ing Kubernetes.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Saiki ayo ndemek bab sing menarik. Iki minangka divisi tanggung jawab antarane Kubernetes lan operator, i.e. apa Kubernetes, apa operator, lan carane padha sesambungan karo saben liyane.

Kubernetes tanggung jawab kanggo bab sistem, i.e. kanggo pesawat dhasar obyek sing bisa ditafsiraké minangka sistem-ruang lingkup. Kubernetes ngerti carane miwiti pods, carane miwiti maneh kontaner, carane nindakake volume gunung, carane bisa karo ConfigMap, i.e. apa wae sing bisa diarani sistem.

Operator beroperasi ing wilayah subyek. Saben operator digawe kanggo wilayah subyek. Kita digawe kanggo ClickHouse.

Lan operator sesambungan kanthi tepat babagan area subyek, kayata nambah replika, nggawe skema, nyetel pemantauan. Ana divisi kuwi.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Ayo goleki conto praktis babagan pemisahan keprihatinan nalika nindakake tumindak replika.

Tugas teka operator - kanggo nambah replika. Apa sing ditindakake operator? Operator bakal ngetung sing perlu kanggo nggawe StatefulSet anyar, kang perlu kanggo njlèntrèhaké cithakan kuwi lan kuwi, volume pratelan.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Dheweke nyiapake kabeh lan diterusake menyang K8. Dheweke ujar manawa dheweke butuh ConfigMap, StatefulSet, Volume. Kubernetes makarya. Panjenenganipun materializes Unit dhasar karo kang operate.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Lan banjur ClickHouse-operator teka menyang muter maneh. Dheweke wis duwe pod fisik sing sampeyan bisa nindakake apa wae. Lan ClickHouse-operator maneh dianggo ing syarat-syarat wilayah subyek. Sing. Khusus, ClickHouse, kanggo nyakup replika ing kluster, sampeyan kudu, sepisanan, ngatur skema data sing ana ing kluster iki. Lan sing nomer loro, ujaran iki kudu dilebokake ing pemantauan supaya bisa dilacak kanthi jelas. Operator wis nyetel.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Lan mung sawise ClickHouse dhewe teka menyang muter, i.e. entitas liyane sing luwih dhuwur. Iku wis database. Nduwe conto dhewe, replika sing dikonfigurasi sabanjure, sing siap gabung ing kluster.

Pranyata rantai eksekusi lan pamisahan tanggung jawab nalika nambah replika cukup suwe.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Kita nerusake tugas praktis. Yen kluster wis ana, sampeyan bisa mindhah konfigurasi kasebut.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Kita nggawe supaya bisa ngliwati xml sing ana, sing dingerteni ClickHouse.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Sampeyan bisa nyempurnakake ClickHouse. Penyebaran zona mung sing dakkandhakake nalika nerangake hostPath, panyimpenan lokal. Iki carane nindakake panyebaran zona kanthi bener.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Tugas praktis sabanjure yaiku ngawasi.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Yen kluster kita ganti, mula kita kudu ngatur pemantauan kanthi periodik.

Ayo dideleng ing diagram. Kita wis nganggep panah ijo ing kene. Saiki ayo ndeleng panah abang. Iki carane kita pengin ngawasi kluster kita. Kepiye metrik saka kluster ClickHouse mlebu ing Prometheus, banjur menyang Grafana.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Apa masalah karo ngawasi? Yagene iki diwenehi minangka sawetara prestasi? Kangelan dumunung ing dinamika. Nalika kita duwe siji kluster lan iku statis, sampeyan bisa nyetel ngawasi sapisan lan ora keganggu maneh.

Nanging yen kita duwe akeh klompok, utawa ana sing saya ganti, mula proses kasebut dinamis. Lan terus-terusan reconfiguring ngawasi punika sampah sumber daya lan wektu; malah mung kesed. Iki kudu otomatis. Kangelan ana ing dinamika proses. Lan operator ngotomatisasi iki kanthi apik.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Kepiye klompok kita berkembang? Wiwitane dheweke kaya ngono.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Banjur dheweke kaya mangkene.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Ing pungkasan, dheweke dadi kaya iki.

Lan ngawasi kanthi otomatis ditindakake dening operator. Titik siji mlebu.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Lan kita mung katon ing metu ing dashboard Grafana, carane urip kluster kita godhok nang.

Miturut cara, dashboard Grafana uga disebarake karo operator kita ing kode sumber. Sampeyan bisa nyambung lan nggunakake. Gambar iki diwenehake dening DevOps kita.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Sabanjure kita arep menyang ngendi? Iki:

  • Ngembangake otomatisasi tes. Tugas utama yaiku tes otomatis versi anyar.
  • Kita uga pengin ngotomatisasi integrasi karo ZooKeeper. Lan plans kanggo nggabungake karo ZooKeeper-operator. Sing. operator wis ditulis kanggo ZooKeeper, lan iku logis sing loro operator wiwiti nggabungake kanggo mbangun solusi luwih trep.
  • Kita pengin nindakake pemeriksaan urip sing luwih rumit.
  • Aku disorot ing ijo sing kita duwe warisan Cithakan ing dalan - DONE, IE karo release sabanjuré operator, kita wis duwe warisan Cithakan. Iki minangka alat sing kuat sing ngidini sampeyan nggawe konfigurasi rumit saka potongan.
  • Lan kita pengin ngotomatisasi tugas rumit. Sing utama yaiku Re-sharding.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Ayo nindakake sawetara asil penengah.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Apa sing kita entuk minangka asil? Lan iku worth iku utawa ora? Apa aku kudu nyoba nyeret database menyang Kubernetes lan aplikasi operator ing umum lan operator Alitnity khusus.

Ing output kita entuk:

  • Nyederhanakake lan ngotomatisasi konfigurasi, panyebaran, lan pangopènan kanthi dramatis.
  • Langsung dibangun ing ngawasi.
  • Lan cithakan kodifikasi sing siap digunakake kanggo kahanan sing rumit. Wis tumindak saka jinis kanggo nambah tiron ora perlu rampung dening tangan. Iki ditindakake dening operator.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Mung pitakonan pungkasan tetep. Kita wis duwe database ing Kubernetes, virtualisasi. Apa babagan kinerja solusi kasebut, utamane wiwit ClickHouse dioptimalake kanggo kinerja?

Jawaban iki kabeh apik! Aku ora bakal njlèntrèhaké kanthi rinci, iki minangka topik laporan sing kapisah.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Nanging ana proyek kaya TSBS. Apa tugas utamane? Iki minangka tes kinerja database. Iki minangka upaya kanggo mbandhingake anget karo anget, alus karo alus.

Piye cara kerjane? Siji set data digawe. Banjur set data iki ing set tes sing padha ditindakake ing basis data sing beda. Lan saben database ngrampungake siji masalah kanthi cara sing bisa. Banjur sampeyan bisa mbandhingake asil.

Wis ndhukung akeh database. Aku wis nemtokake telung sing utama. Iki:

  • skala wektub.
  • InfluxDB.
  • clickhouse.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

A comparison uga digawe karo solusi liyane padha. Perbandingan karo RedShift. Perbandingan digawe ing Amazon. ClickHouse uga ndhisiki kabeh wong ing perkara iki.

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Apa kesimpulan sing bisa dijupuk saka apa sing dakkandhakake?

  • DB ing Kubernetes bisa. Mbokmenawa, sampeyan bisa nindakake apa wae, nanging ing umum katon kaya sampeyan bisa. ClickHouse ing Kubernetes mesthi bisa ditindakake kanthi bantuan operator kita.
  • Operator mbantu ngotomatisasi proses lan nyederhanakake urip.
  • Kinerja normal.
  • Lan, misale jek kita bisa lan kudu digunakake.

Open source - gabung karo kita!

Kaya sing dakkandhakake, operator kasebut minangka produk sumber terbuka, mula bakal apik banget yen jumlah maksimal wong sing digunakake. Gabung saiki! Kita ngenteni sampeyan kabeh!

Matur nuwun kabeh!

Pitakonan

Operator ing Kubernetes kanggo ngatur kluster database. Vladislav Klimenko (Altinity, 2019)

Matur nuwun kanggo laporan! Jenengku Anton. Aku saka SEMrush. Aku kepingin weruh apa karo logging. Kita krungu bab ngawasi, nanging apa-apa bab logging, yen kita pirembagan bab kabèh cluster. Contone, kita duwe kluster ing hardware. Lan kita nggunakake logging terpusat, kita ngumpulake ing tumpukan umum kanthi cara standar. Banjur saka kono entuk data sing menarik kanggo kita.

Pitakonan sing apik, yaiku mlebu dhaptar todo. Operator kita durung ngotomatisasi iki. Iku isih berkembang, proyek isih cukup enom. We ngerti perlu kanggo logging. Iki uga minangka topik sing penting banget. Lan mbokmenawa ora kurang penting tinimbang ngawasi. Nanging pisanan ing dhaptar kanggo implementasine yaiku ngawasi. Bakal ana logging. Alami, kita nyoba ngotomatisasi kabeh aspek urip kluster. Mulane, jawabane iku ing wayahe operator, sayangé, ora ngerti carane nindakake iki, nanging ana ing plans, kita bakal nindakake. Yen sampeyan pengin gabung, banjur tarik request, mangga.

Hello! Matur nuwun kanggo laporan! Aku duwe pitakonan standar sing ana gandhengane karo Volume Persistent. Nalika kita nggawe konfigurasi karo operator iki, carane operator nemtokake kang simpul kita duwe sawetara disk utawa folder? Kita kudu nerangake dhisik marang dheweke yen, mangga, pasang ClickHouse kita persis ing kelenjar iki sing duwe disk?

Sa adoh aku ngerti, pitakonan iki minangka kelanjutan saka panyimpenan lokal, utamane bagean hostPath kasebut. Kaya nerangake kabeh sistem yen polong kudu diluncurake persis ing simpul kasebut, ing ngendi kita duwe disk sing disambungake fisik, sing dipasang ing dalan kasebut. Iki minangka bagean kabeh sing dakdemek banget, amarga jawabane cukup gedhe.

Sedhela, katon kaya iki. Mesthi, kita kudu nggawe provisioning volume kasebut. Saiki, ora ana pranata dinamis ing panyimpenan lokal, mula DevOps kudu ngethok disk dhewe, iki volume kasebut. Lan kudu nerangake penyediaan Kubernetes, yen sampeyan bakal duwe volume Persistent saka kelas kasebut, sing dumunung ing kelenjar kasebut. Banjur perlu kanggo nerangake marang Kubernetes yen pod sing mbutuhake kelas panyimpenan lokal kasebut kudu dijadwalake miturut label mung kanggo simpul kasebut. Kanggo tujuan kasebut, operator nduweni kemampuan kanggo nemtokake sawetara jinis label lan siji saben conto host. Lan ternyata pods bakal diarahake dening Kubernetes kanggo mbukak mung ing simpul sing nyukupi syarat, label, kanthi prasaja. Administrator menehi label, nindakake provisioning disk kanthi tangan. Lan banjur timbangan.

Lan mung pilihan katelu lokal mbantu nggawe luwih gampang. Kaya sing wis dakkandhani, iki minangka karya tuning sing nyenengake, sing pungkasane mbantu entuk kinerja maksimal.

Aku duwe pitakon kapindho sing ana gandhengane karo iki. Kubernetes disusun kanthi cara sing ora dadi masalah apa kita kelangan simpul utawa ora. Apa sing kudu kita lakoni ing kasus iki yen kita wis ilang simpul ing ngendi kita duwe shard?

Ya, Kubernetes wiwitane dipanggonke yen hubungan kita karo polong kita kaya sapi, nanging ing kene saben disk dadi kaya pet. Ana masalah sing ora bisa dibuwang. Lan pangembangan Kubernetes dadi arah sing ora bisa ditindakake kanthi filosofis, minangka sumber daya sing dibuwang.

Saiki pitakonan praktis. Apa sing kudu ditindakake yen sampeyan ilang simpul ing disk kasebut? Ing kene masalah ditanggulangi ing tingkat sing luwih dhuwur. Ing kasus ClickHouse, kita duwe replika sing bisa digunakake ing tingkat sing luwih dhuwur, yaiku. ing tingkat ClickHouse.

Apa sing disposisi? DevOps tanggung jawab kanggo mesthekake yen data ora ilang. Sampeyan kudu nyiyapake replikasi kanthi bener lan kudu mesthekake yen replikasi wis mlaku. Ing replika ing tingkat ClickHouse, data kudu diduplikasi. Iki dudu tugas sing ditindakake operator. Lan ora tugas sing Kubernetes dhewe solves. Iki ing tingkat ClickHouse.

Apa sing kudu ditindakake yen simpul wesi sampeyan tiba? Lan pranyata bakal perlu kanggo nyelehake sing nomer loro, mindhah disk kanthi bener, aplikasi label. Lan sawise iku, bakal gawe marem syarat sing Kubernetes ing bisa mbukak conto pod. Kubernetes bakal miwiti. Jumlah polong sampeyan ora cukup kanggo sing wis ditemtokake. Iku bakal liwat siklus sing aku nuduhake. Lan ing tingkat paling dhuwur, ClickHouse bakal ngerti yen kita duwe replika sing dilebokake, isih kosong lan kita kudu miwiti nransfer data kasebut. Sing. proses iki isih kurang otomatis.

Matur nuwun kanggo laporan! Nalika macem-macem kedadeyan sing ora becik, operator nabrak lan miwiti maneh, lan nalika kedadeyan kasebut, apa sampeyan bisa ngolah iki?

Apa sing kedadeyan yen operator nabrak lan miwiti maneh, ya?

ya wis. Lan ing wektu iku acara teka.

Tugas apa sing kudu ditindakake ing kasus iki sebagian dibagi antarane operator lan Kubernetes. Kubernetes nduweni kemampuan kanggo muter maneh acara sing wis kedadeyan. Dheweke muter maneh. Lan tugas operator kanggo mesthekake yen nalika log acara dimainake maneh, acara kasebut idempoten. Lan supaya kedadeyan maneh acara sing padha ora ngrusak sistem kita. Lan operator kita ngrampungake tugas iki.

Hello! Matur nuwun kanggo laporan! Dmitry Zavialov, perusahaan Smedov. Apa direncanakake kanggo nambah opsi pangaturan dhewe karo haproxy kanggo operator? Sawetara balancer liyane menarik saliyane sing standar, supaya pinter lan ngerti yen ClickHouse nyata ing kono.

Apa sampeyan ngomong babagan Ingress?

Ya, ganti Ingress nganggo haproxy. Ing haproxy, sampeyan bisa nemtokake topologi kluster sing nduweni replika.

Nganti saiki, kita durung mikir babagan iki. Yen sampeyan butuh lan bisa nerangake apa sing dibutuhake, mula bisa ditindakake, utamane yen sampeyan pengin melu. Kita bakal seneng nimbang opsi kasebut. Jawaban singkat ora, saiki kita ora duwe fungsi kasebut. Thanks kanggo tip, kita bakal nliti iki. Lan yen sampeyan uga nerangake kasus panggunaan lan kenapa perlu ing praktik, umpamane, nggawe masalah ing GitHub, mula bakal apik.

Wis.

nggih. Kita mbukak kanggo saran apa wae. Lan haproxy dilebokake ing dhaptar todo. Daftar todo tambah akeh, durung surut. Nanging iki apik, tegese produk kasebut dikarepake.

Source: www.habr.com

Add a comment