{"id":33773,"date":"2019-10-31T21:54:36","date_gmt":"2019-10-31T18:54:36","guid":{"rendered":"https:\/\/prohoster.info\/blog\/rezervirovanie-v-kubernetes-ono-sushhestvuet\/"},"modified":"2019-10-31T21:54:36","modified_gmt":"2019-10-31T18:54:36","slug":"rezervirovanie-v-kubernetes-ono-sushhestvuet","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/rezervirovanie-v-kubernetes-ono-sushhestvuet","title":{"rendered":"Z\u00e1lohov\u00e1n\u00ed v Kubernetes: Existuje","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Jmenuji se Sergej, jsem ze spole\u010dnosti ITSumma a r\u00e1d bych v\u00e1m pov\u011bd\u011bl, jak p\u0159istupujeme k z\u00e1lohov\u00e1n\u00ed v Kubernetes. V posledn\u00ed dob\u011b se hodn\u011b v\u011bnuji poradensk\u00e9 pr\u00e1ci na implementaci r\u016fzn\u00fdch devops \u0159e\u0161en\u00ed pro r\u016fzn\u00e9 t\u00fdmy, a zejm\u00e9na t\u011bsn\u011b spolupracuji na projektech vyu\u017e\u00edvaj\u00edc\u00edch K8s. Na konferenci Uptime day 4, kter\u00e1 byla v\u011bnov\u00e1na z\u00e1lohov\u00e1n\u00ed v komplikovan\u00fdch architektur\u00e1ch, jsem vystoupil s prezentac\u00ed o z\u00e1lohov\u00e1n\u00ed \u201ekosti\u010dky\u201c, a zde je jej\u00ed voln\u00e9 shrnut\u00ed. Jen p\u0159edem varuji, \u017ee to nen\u00ed p\u0159\u00edm\u00fd n\u00e1vod k akci, ale sp\u00ed\u0161e souhrn \u00favah na dan\u00e9 t\u00e9ma.<\/p>\n<p><img decoding=\"async\" alt=\"Z\u00e1lohov\u00e1n\u00ed v Kubernetes: Existuje\" src=\"\/wp-content\/uploads\/2019\/05\/4797b240a8e9fd4bbbce4370b9b44108.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV z\u00e1sad\u011b monitoring a z\u00e1lohov\u00e1n\u00ed \u2014 to jsou dva z\u00e1kladn\u00ed n\u00e1stroje pro zvy\u0161ov\u00e1n\u00ed odolnosti jak\u00e9hokoli projektu. Ale v\u017edy\u0165 v Kubernetes se v\u0161e samo vyva\u017euje, \u0159eknete, v\u0161e se samo \u0161k\u00e1luje, a pokud se n\u011bco stane \u2014 samo se spust\u00ed\u2026 To znamen\u00e1, \u017ee p\u0159i prvn\u00edm povrchov\u00e9m prozkoum\u00e1n\u00ed tohoto t\u00e9matu mi internet na ot\u00e1zku, jak kdo p\u0159istupuje k z\u00e1lohov\u00e1n\u00ed K8s, odpov\u011bd\u011bl \u201epro\u010d?\u201c Mnoz\u00ed si mysl\u00ed, \u017ee Kubernetes je takov\u00e1 magick\u00e1 v\u011bc, kter\u00e1 zbavuje v\u0161ech infrastrukturn\u00edch probl\u00e9m\u016f a zaji\u0161\u0165uje, \u017ee projekt nikdy nepadne. Ale\u2026 sv\u011bt nen\u00ed to, \u010d\u00edm se zd\u00e1 b\u00fdt.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nJak jsme k procesu z\u00e1lohov\u00e1n\u00ed p\u0159istupovali d\u0159\u00edve? M\u011bli jsme identick\u00e9 platformy pro nasazen\u00ed \u2014 bu\u010f to byly virtu\u00e1ln\u00ed stroje, nebo to byly fyzick\u00e9 servery, <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/cs\/server\/\"   title=\"servery\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1830\">servery<\/a>, k nim\u017e jsme uplat\u0148ovali t\u0159i z\u00e1kladn\u00ed praktiky: <\/p>\n<ol>\n<li>synchronizace k\u00f3du a statiky<\/li>\n<li>synchronizace konfigurac\u00ed<\/li>\n<li>replikace datab\u00e1ze<\/li>\n<\/ol>\n<p>\nA voila: kdykoli p\u0159epneme na z\u00e1lo\u017en\u00ed platformu, v\u0161ichni jsou \u0161\u0165astn\u00ed, postav\u00edme se a rozch\u00e1z\u00edme. <\/p>\n<p><img decoding=\"async\" alt=\"Z\u00e1lohov\u00e1n\u00ed v Kubernetes: Existuje\" src=\"\/wp-content\/uploads\/2019\/05\/4c2164d4469efb7ebbfe9c02970d7ae9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nCo n\u00e1m nab\u00edzej\u00ed pro zv\u00fd\u0161en\u00ed trval\u00e9 dostupnosti na\u0161\u00ed aplikace Kubernetes? Prvn\u00ed, o \u010dem se zmi\u0148uje neofici\u00e1ln\u00ed dokumentace, je nasadit v\u00edce stroj\u016f, vytvo\u0159it v\u00edce master\u016f \u2014 jejich po\u010det by m\u011bl splnit podm\u00ednky pro dosa\u017een\u00ed kv\u00f3ra uvnit\u0159 clusteru, a aby na ka\u017ed\u00e9m z master\u016f b\u011b\u017eel etcd, api, MC, scheduler\u2026 A vypad\u00e1 to skv\u011ble: p\u0159i selh\u00e1n\u00ed n\u011bkolika pracovn\u00edch uzl\u016f nebo master\u016f se n\u00e1\u0161 cluster p\u0159eorganizuje a aplikace bude pokra\u010dovat v pr\u00e1ci. Op\u011bt to vypad\u00e1 jako magie! Ale \u010dasto se n\u00e1\u0161 cluster nach\u00e1z\u00ed v r\u00e1mci jednoho datov\u00e9ho centra a to m\u016f\u017ee vyvolat ur\u010dit\u00e9 ot\u00e1zky. Co kdy\u017e p\u0159ijede bagr a vykopne kabel, ude\u0159il blesk, do\u0161lo k glob\u00e1ln\u00ed povodni? V\u0161echno je pry\u010d, n\u00e1\u0161 cluster u\u017e neexistuje. Jak se k z\u00e1lohov\u00e1n\u00ed postavit s ohledem na tuto str\u00e1nku probl\u00e9mu? <\/p>\n<p>P\u0159edev\u0161\u00edm byste m\u011bli m\u00edt dal\u0161\u00ed cluster v hork\u00e9 z\u00e1loze, co\u017e znamen\u00e1 cluster, na kter\u00fd se m\u016f\u017eete kdykoli p\u0159epnout. Z pohledu Kubernetes mus\u00ed b\u00fdt infrastruktura zcela identick\u00e1. To znamen\u00e1, \u017ee pokud existuj\u00ed n\u011bjak\u00e9 nestandardn\u00ed pluginy pro pr\u00e1ci se souborov\u00fdm syst\u00e9mem, vlastn\u00ed \u0159e\u0161en\u00ed pro ingress, mus\u00ed b\u00fdt zcela identick\u00e9 na va\u0161ich dvou (nebo t\u0159ech, nebo deseti, z\u00e1le\u017e\u00ed na tom, kolik m\u00e1te pen\u011bz a sil administr\u00e1tor\u016f) clusterech. Je nutn\u00e9 jasn\u011b definovat dv\u011b sady aplikac\u00ed (deployments, statefulsets, daemonsets, cronjobs atd.): kter\u00e9 z nich mohou neust\u00e1le b\u011b\u017eet na z\u00e1lo\u017en\u00edm clusteru a kter\u00e9 je lep\u0161\u00ed nespou\u0161t\u011bt, dokud nedojde k p\u0159epnut\u00ed. <\/p>\n<p>M\u011bl by tedy n\u00e1\u0161 z\u00e1lo\u017en\u00ed cluster b\u00fdt zcela identick\u00fd s na\u0161\u00edm produk\u010dn\u00edm clusterem? Ne. Kdy\u017e jsme pracovali s monolitick\u00fdmi projekty a fyzickou infrastrukturou, udr\u017eovali jsme prakticky zcela identick\u00e9 prost\u0159ed\u00ed, ale v r\u00e1mci Kubernetes, se domn\u00edv\u00e1m, \u017ee to tak b\u00fdt nemus\u00ed. Poj\u010fme se pod\u00edvat, pro\u010d.<\/p>\n<p>Nap\u0159\u00edklad za\u010dneme od z\u00e1kladn\u00edch entit Kubernetes \u2014 deployments \u2014 kter\u00e9 by m\u011bly b\u00fdt identick\u00e9. Mus\u00ed b\u00fdt spu\u0161t\u011bny aplikace, kter\u00e9 v ka\u017ed\u00e9m okam\u017eiku mohou p\u0159evz\u00edt zpracov\u00e1n\u00ed provozu a umo\u017enit na\u0161emu projektu d\u00e1le fungovat. Pokud mluv\u00edme o konfigura\u010dn\u00edch souborech, je t\u0159eba se pod\u00edvat, zda by m\u011bly b\u00fdt identick\u00e9 nebo ne. To znamen\u00e1, \u017ee pokud jsme chyt\u0159\u00ed lid\u00e9, nepou\u017e\u00edv\u00e1me \u017e\u00e1dn\u00e9 zak\u00e1zan\u00e9 l\u00e1tky a nedr\u017e\u00edme datab\u00e1zi v K8s, pak v configmaps mus\u00edme m\u00edt nastaven\u00ed p\u0159\u00edstup\u016f k produk\u010dn\u00ed datab\u00e1zi (proces z\u00e1lohov\u00e1n\u00ed, kter\u00fd byl postaven samostatn\u011b). Odpov\u00eddaj\u00edc\u00edm zp\u016fsobem pro zaji\u0161t\u011bn\u00ed p\u0159\u00edstup\u016f k z\u00e1lo\u017en\u00edmu exempl\u00e1\u0159i datab\u00e1ze mus\u00edme m\u00edt samostatn\u00fd konfigura\u010dn\u00ed soubor (configmap). P\u0159esn\u011b tak pracujeme i se secret \u2019y: hesly pro p\u0159\u00edstup do datab\u00e1ze, api kl\u00ed\u010di; v ka\u017ed\u00e9m okam\u017eiku m\u016f\u017ee fungovat bu\u010f produk\u010dn\u00ed secret, nebo z\u00e1lo\u017en\u00ed. Tedy m\u00e1me ji\u017e dv\u011b entity Kubernetes, jejich\u017e z\u00e1lo\u017en\u00ed verze by nem\u011bly b\u00fdt identick\u00e9 s produk\u010dn\u00edmi. Dal\u0161\u00ed entitou, na kter\u00e9 se zastavit, je cronjob. Cronjoby na z\u00e1loze nesm\u00ed b\u00fdt v \u017e\u00e1dn\u00e9m p\u0159\u00edpad\u011b identick\u00e9 se sadou cronjob\u016f produk\u010dn\u00edho clusteru! Pokud zvedneme z\u00e1lo\u017en\u00ed cluster a spust\u00edme ho kompletn\u011b se v\u0161emi zapnut\u00fdmi cronjoby \u2014 lid\u00e9 od v\u00e1s dostanou nap\u0159\u00edklad dv\u011b emaily najednou m\u00edsto jednoho. Nebo n\u011bjak\u00e1 synchronizace dat s extern\u00edmi zdroji prob\u011bhne dvakr\u00e1t, co\u017e zp\u016fsob\u00ed, \u017ee za\u010dneme onemocn\u011bt, plakat, k\u0159i\u010det a h\u00e1dat se. <\/p>\n<p><img decoding=\"async\" alt=\"Z\u00e1lohov\u00e1n\u00ed v Kubernetes: Existuje\" src=\"\/wp-content\/uploads\/2019\/05\/38be6370f08d75e5c48bce7b4304e861.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nA jak n\u00e1m nab\u00edzej\u00ed uspo\u0159\u00e1dat z\u00e1lo\u017en\u00ed cluster lid\u00e9 z internetu? Druh\u00e1 nejpopul\u00e1rn\u011bj\u0161\u00ed odpov\u011b\u010f po \u201epro\u010d?\u201c \u2014 pou\u017eit\u00ed Kubernetes Federation. <\/p>\n<p>Co to je? Je to, \u0159ekn\u011bme, velk\u00fd meta-klastr. Pokud si p\u0159edstav\u00edme architekturu Kubernetes \u2014 kde m\u00e1me master a n\u011bkolik uzl\u016f \u2014 z pohledu federace m\u00e1me tak\u00e9 master a n\u011bkolik uzl\u016f, jen ka\u017ed\u00e1 uzel je samostatn\u00fd klastr. Pracujeme tedy s t\u011bmi sam\u00fdmi entitami a primitivy, jako u jednotliv\u00e9ho Kubernetes, jen m\u00edsto fyzick\u00fdch stroj\u016f manipulujeme s cel\u00fdmi klastry. V r\u00e1mci federace prob\u00edh\u00e1 \u00fapln\u00e1 synchronizace federativn\u00edch zdroj\u016f od rodi\u010d\u016f k potomk\u016fm. Nap\u0159\u00edklad, pokud spust\u00edme n\u011bjakou nasazen\u00ed p\u0159es federaci \u2014 nasad\u00ed se na ka\u017ed\u00e9m na\u0161em dce\u0159in\u00e9m klastru. Pokud vezmeme n\u011bjak\u00fd configmap, tajemstv\u00ed a rozlo\u017e\u00edme ho p\u0159es federaci \u2014 roz\u0161\u00ed\u0159\u00ed se do v\u0161ech na\u0161ich dce\u0159in\u00fdch klastr\u016f; p\u0159i\u010dem\u017e federace umo\u017e\u0148uje p\u0159izp\u016fsobit na\u0161e zdroje na potomc\u00edch. To znamen\u00e1, \u017ee vezmeme n\u011bjak\u00fd configmap, nasad\u00edme ho p\u0159es federaci a pokud pot\u0159ebujeme n\u011bco upravit na konkr\u00e9tn\u00edch klastry, p\u016fjdeme to upravit na jednotliv\u00e9m klastru, a tato zm\u011bna se u\u017e nikam nesynchronizuje. <\/p>\n<p>Kubernetes Federation je n\u00e1stroj, kter\u00fd existuje jen ned\u00e1vno a nepodporuje zdaleka cel\u00fd soubor zdroj\u016f, kter\u00e9 nab\u00edz\u00ed samotn\u00fd K8s: v dob\u011b vyd\u00e1n\u00ed jedn\u00e9 z prvn\u00edch verz\u00ed dokumentace se uv\u00e1d\u011blo, \u017ee jsou podporov\u00e1ny pouze config maps, deployment pod replica set a ingress. Tajn\u00e9 kl\u00ed\u010de nebyly podporov\u00e1ny, ani pr\u00e1ce s volume. Je to p\u0159\u00edli\u0161 omezen\u00fd soubor. Zvl\u00e1\u0161\u0165 pokud r\u00e1di experimentujeme \u2014 nap\u0159\u00edklad p\u0159ed\u00e1v\u00e1n\u00edm sv\u00fdch vlastn\u00edch zdroj\u016f K8s prost\u0159ednictv\u00edm custom resource definition \u2014 do federace je ji\u017e nem\u016f\u017eeme dostat. Jin\u00fdmi slovy\u2026 je to velmi podobn\u00e9 pravd\u011b \u0159e\u0161en\u00ed, ale zp\u016fsobuje n\u00e1m to, \u017ee si ob\u010das st\u0159\u00edl\u00edme do nohy. Na druhou stranu, federace umo\u017e\u0148uje flexibiln\u011b spravovat n\u00e1\u0161 replicaset. Nap\u0159\u00edklad, chceme m\u00edt spu\u0161t\u011bno 10 replik na\u0161\u00ed aplikace, federace toto \u010d\u00edslo ve v\u00fdchoz\u00edm nastaven\u00ed rozd\u011bl\u00ed proporcion\u00e1ln\u011b mezi po\u010det cluster\u016f. A to v\u0161e lze je\u0161t\u011b nakonfigurovat! M\u016f\u017eeme tedy ur\u010dit, \u017ee na produk\u010dn\u00edm clusteru pot\u0159ebujeme m\u00edt 6 replik na\u0161\u00ed aplikace, a na rezerva\u010dn\u00edm clusteru, kv\u016fli \u00faspo\u0159e zdroj\u016f, nebo pro n\u011bjak\u00e9 vlastn\u00ed pobaven\u00ed \u2014 pouze 4 repliky na\u0161\u00ed aplikace. To je tak\u00e9 docela pohodln\u00e9. Ale s federac\u00ed mus\u00edme pou\u017e\u00edvat n\u011bjak\u00e1 nov\u00e1 \u0159e\u0161en\u00ed, n\u011bco deployovat za chodu, nutit se p\u0159em\u00fd\u0161let trochu v\u00edc\u2026 <\/p>\n<p>M\u016f\u017eeme p\u0159istoupit k procesu z\u00e1lohov\u00e1n\u00ed Kubernetes n\u011bjak jednodu\u0161eji? Jak\u00e9 n\u00e1stroje m\u00e1me k dispozici?<\/p>\n<p>Za prv\u00e9, v\u017edy m\u00e1me n\u011bjak\u00fd syst\u00e9m CI\/CD, tak\u017ee ru\u010dn\u011b neprov\u00e1d\u00edme p\u0159\u00edkazy create\/apply na serverech. Syst\u00e9m generuje YAML soubory pro na\u0161e kontejnery. <\/p>\n<p>Za druh\u00e9, m\u00e1me n\u011bkolik cluster\u016f, bu\u010f m\u00e1me jedno nebo v\u00edce (pokud jsme chyt\u0159\u00ed) registr\u016f, kter\u00e9 jsme tak\u00e9 vzali a rezervovali. A existuje skv\u011bl\u00fd n\u00e1stroj kubectl, kter\u00fd m\u016f\u017ee pracovat s n\u011bkolika clustery sou\u010dasn\u011b. <\/p>\n<p><img decoding=\"async\" alt=\"Z\u00e1lohov\u00e1n\u00ed v Kubernetes: Existuje\" src=\"\/wp-content\/uploads\/2019\/05\/e4276c4d5bf4dfd9e3abe7210e345343.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nTak\u017ee podle m\u00e9ho n\u00e1zoru je t\u00edm nejjednodu\u0161\u0161\u00edm a nejspolehliv\u011bj\u0161\u00edm \u0159e\u0161en\u00edm pro vybudov\u00e1n\u00ed z\u00e1lo\u017en\u00edho clusteru jednoduch\u00fd paraleln\u00ed deployment. Existuje n\u011bjak\u00fd pipeline v ci\/cd syst\u00e9mu; nejprve buildujeme na\u0161e kontejnery, testujeme a nasazujeme aplikace pomoc\u00ed kubectl na n\u011bkolik nez\u00e1visl\u00fdch cluster\u016f. M\u016f\u017eeme prov\u00e1d\u011bt simult\u00e1nn\u00ed nasazen\u00ed na n\u011bkolik cluster\u016f. Odpov\u00eddaj\u00edc\u00edm zp\u016fsobem tak\u00e9 \u0159e\u0161\u00edme doru\u010dov\u00e1n\u00ed konfigurac\u00ed v t\u00e9to f\u00e1zi. M\u016f\u017eeme p\u0159edem definovat sadu konfigurac\u00ed pro n\u00e1\u0161 produk\u010dn\u00ed cluster, sadu konfigurac\u00ed pro z\u00e1lo\u017en\u00ed cluster a na \u00farovni ci\/cd syst\u00e9mu nasazovat produk\u010dn\u00ed prost\u0159ed\u00ed do produk\u010dn\u00edho clusteru, z\u00e1lo\u017en\u00ed prost\u0159ed\u00ed do z\u00e1lo\u017en\u00edho clusteru. Ve srovn\u00e1n\u00ed s federac\u00ed nen\u00ed pot\u0159eba chodit po ur\u010den\u00ed federativn\u00edho zdroje na ka\u017ed\u00fd pod\u0159\u00edzen\u00fd cluster a n\u011bco p\u0159edefinov\u00e1vat. Ud\u011blali jsme to dop\u0159edu. Jsme skv\u011bl\u00ed.<\/p>\n<p>Ale\u2026 existuje\u2026 byl jsem napsal, \u017ee existuje \u201eko\u0159en v\u0161ech zla\u201c, ale ve skute\u010dnosti jsou dva. Prvn\u00edm je souborov\u00fd syst\u00e9m. Existuje n\u011bjak\u00fd PV, nebo pou\u017e\u00edv\u00e1me extern\u00ed \u00falo\u017ei\u0161t\u011b. Pokud ukl\u00e1d\u00e1me soubory uvnit\u0159 clusteru, mus\u00edme jednat podle star\u00fdch praktik, kter\u00e9 z\u016fstaly z doby \u017eelezn\u00fdch infrastruktur: nap\u0159\u00edklad synchronizac\u00ed pomoc\u00ed lsync. No nebo jak\u00fdmkoli jin\u00fdm preferovan\u00fdm \u0159e\u0161en\u00edm. Rozprost\u0159eme v\u0161e na dal\u0161\u00ed stroje a \u017eijeme.<\/p>\n<p>Za druh\u00e9, a ve skute\u010dnosti je\u0161t\u011b d\u016fle\u017eit\u011bj\u0161\u00ed m\u00edsto \u00faskal\u00ed \u2014 datab\u00e1ze. Pokud jsme chyt\u0159\u00ed lid\u00e9 a nedr\u017e\u00edme datab\u00e1zi v kubernetes, proces z\u00e1lohov\u00e1n\u00ed dat podle star\u00e9ho sch\u00e9matu \u2014 master-slave replikace, pak p\u0159ep\u00edn\u00e1n\u00ed, replikaci dohon\u00edme a budeme \u017e\u00edt dob\u0159e. Ale pokud budeme m\u00edt na\u0161i DB uvnit\u0159 clusteru, existuje spousta hotov\u00fdch \u0159e\u0161en\u00ed pro organizaci stejn\u00e9 replikace master-slave, spousta \u0159e\u0161en\u00ed pro spu\u0161t\u011bn\u00ed DB uvnit\u0159 kubernetes. <br \/>\n O z\u00e1lohov\u00e1n\u00ed datab\u00e1z\u00ed u\u017e bylo p\u0159e\u010dteno miliardy p\u0159edn\u00e1\u0161ek, naps\u00e1no miliardy \u010dl\u00e1nk\u016f, nic nov\u00e9ho tu vlastn\u011b nen\u00ed. Obecn\u011b sledujte sv\u00e9 sny, \u017eijte, jak chcete, vym\u00fd\u0161lejte si tak\u00e9 n\u011bjak\u00e9 slo\u017eit\u00e9 \u0159e\u0161en\u00ed, ale ur\u010dit\u011b p\u0159em\u00fd\u0161lejte, jak to v\u0161echno budete z\u00e1lohovat.<\/p>\n<p>A te\u010f o tom, jak bude prob\u00edhat proces p\u0159epnut\u00ed na z\u00e1lo\u017en\u00ed lokalitu v p\u0159\u00edpad\u011b po\u017e\u00e1ru. Za prv\u00e9, paraleln\u011b nasazujeme stateless aplikace. Tyto aplikace nemaj\u00ed vliv na obchodn\u00ed logiku na\u0161ich aplikac\u00ed, na\u0161eho projektu, m\u016f\u017eeme m\u00edt neust\u00e1le spu\u0161t\u011bn\u00e9 dva soubory aplikac\u00ed, kter\u00e9 mohou za\u010d\u00edt p\u0159ij\u00edmat provoz. Je velmi d\u016fle\u017eit\u00e9 v procesu p\u0159epnut\u00ed na z\u00e1lo\u017en\u00ed lokalitu se ur\u010dit\u011b pod\u00edvat \u2014 je pot\u0159eba redefinovat konfigurace? Nap\u0159\u00edklad m\u00e1me produk\u010dn\u00ed Kubernetes cluster, m\u00e1me z\u00e1lo\u017en\u00ed Kubernetes cluster, m\u00e1me extern\u00ed datab\u00e1zi master, m\u00e1me z\u00e1lo\u017en\u00ed datab\u00e1zi master. M\u00e1me \u010dty\u0159i varianty, jak mohou tyto aplikace v produkci za\u010d\u00edt mezi sebou interagovat. M\u016f\u017ee se p\u0159epnout datab\u00e1ze, a vyjde najevo, \u017ee je pot\u0159eba p\u0159epnout provoz na novou datab\u00e1zi v produk\u010dn\u00edm clusteru, nebo n\u00e1m m\u016f\u017ee spadnout cluster \u2014 a my jsme p\u0159e\u0161li na z\u00e1lo\u017en\u00ed, ale pokra\u010dujeme v pr\u00e1ci s produk\u010dn\u00ed datab\u00e1z\u00ed, a t\u0159et\u00ed varianta je, kdy\u017e se n\u00e1m to i to rozpadne, a p\u0159epneme ob\u011b aplikace, redefinujeme na\u0161i konfiguraci, abychom nov\u00e9 aplikace mohly pracovat s novou datab\u00e1z\u00ed. <\/p>\n<p>A co z toho v\u0161eho m\u016f\u017eeme vyvodit? <\/p>\n<p><img decoding=\"async\" alt=\"Z\u00e1lohov\u00e1n\u00ed v Kubernetes: Existuje\" src=\"\/wp-content\/uploads\/2019\/05\/e055f1b4aaa99c5e70d735f4c9fe61e2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrvn\u00ed z\u00e1v\u011br: se z\u00e1lohou se \u017eije dob\u0159e. Ale draze. Ide\u00e1ln\u011b by se nem\u011blo \u017e\u00edt jen s jednou z\u00e1lohou. Ide\u00e1ln\u011b bychom m\u011bli m\u00edt n\u011bkolik z\u00e1loh. Za prv\u00e9, z\u00e1loha by m\u011bla b\u00fdt alespo\u0148 ne v jednom datov\u00e9m centru, a za druh\u00e9, alespo\u0148 u jin\u00e9ho poskytovatele. \u010casto se to st\u00e1valo \u2014 a na m\u00e9 praxi to bylo. Projekty bohu\u017eel nemohu zm\u00ednit, kdy\u017e do\u0161lo k po\u017e\u00e1ru v datov\u00e9m centru... \u0158\u00edkal jsem: p\u0159ep\u00edn\u00e1me na z\u00e1lohu! A z\u00e1lo\u017en\u00ed servery st\u00e1ly ve stejn\u00e9 sk\u0159\u00edni...<\/p>\n<p>Nebo si p\u0159edstavte, \u017ee Amazon byl zak\u00e1z\u00e1n v Rusku (a n\u011bco takov\u00e9ho se stalo). A co te\u010f: jak\u00fd m\u00e1 v\u00fdznam, \u017ee na\u0161e z\u00e1loha le\u017e\u00ed v jin\u00e9m Amazonu? Ten tak\u00e9 nen\u00ed dostupn\u00fd. Tak\u017ee znovu opakuji: udr\u017eujeme z\u00e1lohu, alespo\u0148 v jin\u00e9m datov\u00e9m centru, a ide\u00e1ln\u011b \u2014 u jin\u00e9ho poskytovatele. <\/p>\n<p>Druh\u00fd z\u00e1v\u011br: pokud m\u00e1 va\u0161e aplikace v kubernetes komunikaci s n\u011bjak\u00fdmi extern\u00edmi zdroji (to m\u016f\u017ee b\u00fdt jak datab\u00e1ze, tak n\u011bjak\u00e9 extern\u00ed API), ur\u010dit\u011b ji definujte jako slu\u017ebu s extern\u00edm endpointem, abyste p\u0159i p\u0159ep\u00edn\u00e1n\u00ed nemuseli redeployovat 15 va\u0161ich aplikac\u00ed, kter\u00e9 se p\u0159ipojuj\u00ed ke stejn\u00e9 datab\u00e1zi. Definujte datab\u00e1zi jako samostatnou slu\u017ebu, p\u0159ipojujte se k n\u00ed, jako by byla uvnit\u0159 va\u0161eho clusteru: pokud va\u0161e datab\u00e1ze sel\u017ee, zm\u011bn\u00edte IP na jednom m\u00edst\u011b a pokra\u010dujete \u0161\u0165astn\u011b d\u00e1l. <\/p>\n<p>A nakonec: j\u00e1 \u201ekube\u201c m\u00e1m r\u00e1d, stejn\u011b jako experimenty s n\u00edm. A tak\u00e9 r\u00e1d sd\u00edl\u00edm v\u00fdsledky t\u011bchto experiment\u016f a obecn\u011b sv\u00e9 osobn\u00ed zku\u0161enosti. Proto jsem nato\u010dil s\u00e9rii webin\u00e1\u0159\u016f o K8s, v\u00edtejte na <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=Qmac8MNlhmg&amp;list=PLVSuF-7tjVUgPSW-YAhrGjnShRsW9gA7_\">na\u0161em youtube kan\u00e1lu<\/a><\/noindex> pro podrobnosti.<br \/>\n<br \/>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/itsumma\/blog\/452078\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0421\u0435\u0440\u0433\u0435\u0439, \u044f \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 ITSumma, \u0438 \u044f \u0445\u043e\u0447\u0443 \u0432\u0430\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u043c\u044b \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043c \u043a \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0432 Kubernetes. \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u044f \u043c\u043d\u043e\u0433\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u043a\u043e\u043d\u0441\u0443\u043b\u044c\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u043f\u043e \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044e \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0445 devops-\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434, \u0438, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043f\u043b\u043e\u0442\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u043f\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c K8s. \u041d\u0430 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 Uptime day 4, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b\u043b\u0430 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0432 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":25449,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-33773","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.5 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0421\u0435\u0440\u0433\u0435\u0439, \u044f \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 ITSumma, \u0438 \u044f \u0445\u043e\u0447\u0443 \u0432\u0430\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u043c\u044b \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043c \u043a \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0432 Kubernetes.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/rezervirovanie-v-kubernetes-ono-sushhestvuet\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0420\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 Kubernetes: \u043e\u043d\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0421\u0435\u0440\u0433\u0435\u0439, \u044f \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 ITSumma, \u0438 \u044f \u0445\u043e\u0447\u0443 \u0432\u0430\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u043c\u044b \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043c \u043a \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0432 Kubernetes.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/rezervirovanie-v-kubernetes-ono-sushhestvuet\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:54:36+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:54:36+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Z\u00e1lohov\u00e1n\u00ed v Kubernetes: existuje | ProHoster","description":"Jmenuji se Sergej, jsem z firmy ITSumma a chci v\u00e1m \u0159\u00edct, jak p\u0159istupujeme k z\u00e1lohov\u00e1n\u00ed v Kubernetes.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/rezervirovanie-v-kubernetes-ono-sushhestvuet","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0420\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 Kubernetes: \u043e\u043d\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 | ProHoster","og:description":"\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0421\u0435\u0440\u0433\u0435\u0439, \u044f \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 ITSumma, \u0438 \u044f \u0445\u043e\u0447\u0443 \u0432\u0430\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u043c\u044b \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043c \u043a \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0432 Kubernetes.","og:url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/rezervirovanie-v-kubernetes-ono-sushhestvuet","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:54:36+00:00","article:modified_time":"2019-10-31T18:54:36+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"33773","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-02-09 17:03:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:33:25","updated":"2026-02-09 17:03:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/33773","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=33773"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/33773\/revisions"}],"predecessor-version":[{"id":159074,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/33773\/revisions\/159074"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/25449"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=33773"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=33773"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=33773"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}