{"id":91199,"date":"2020-08-10T01:42:03","date_gmt":"2020-08-09T23:42:03","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kubernetes-v-domklik-kak-spat-spokojno-upravlyaya-klasterom-na-1000-mikroservisov"},"modified":"2020-08-10T01:42:03","modified_gmt":"2020-08-09T23:42:03","slug":"kubernetes-v-domklik-kak-spat-spokojno-upravlyaya-klasterom-na-1000-mikroservisov","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kubernetes-v-domklik-kak-spat-spokojno-upravlyaya-klasterom-na-1000-mikroservisov","title":{"rendered":"Kubernetes in DomClick: come dormire tranquilli gestendo un cluster di 1000 microservizi.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Mi chiamo Viktor Yagofarov e mi occupo dello sviluppo della piattaforma Kubernetes presso DomKlik in qualit\u00e0 di responsabile tecnico dello sviluppo nel team Ops (operazioni). Vorrei raccontarvi come sono organizzati i nostri processi Dev &lt;-&gt; Ops, le peculiarit\u00e0 della gestione di uno dei pi\u00f9 grandi cluster k8s in Russia e le pratiche DevOps\/SRE adottate dal nostro team.<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes in DomClick: come dormire tranquilli gestendo un cluster di 1000 microservizi.\" src=\"\/wp-content\/uploads\/2020\/08\/6c908104c734b36cc7a960fbe4d65e3f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Team Ops<\/h4>\n<p>\nAttualmente nel team Ops lavorano 15 persone. Tre di loro si occupano dell'ufficio, due lavorano in un altro fuso orario e sono disponibili anche di notte. In questo modo, c'\u00e8 sempre qualcuno del team Ops davanti al monitor, pronto a reagire a un incidente di qualsiasi complessit\u00e0. Non abbiamo turni notturni, il che preserva la nostra salute mentale e consente a tutti di riposare e trascorrere il tempo libero non solo davanti al computer.<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes in DomClick: come dormire tranquilli gestendo un cluster di 1000 microservizi.\" src=\"\/wp-content\/uploads\/2020\/08\/47051db273f116df376e64bad67c6f37.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLe competenze variano: ci sono esperti di rete, DBA, specialisti del stack ELK, amministratori\/developers di Kubernetes, monitoraggio, virtualizzazione, hardware, ecc. Ci\u00f2 che ci unisce \u00e8 che ognuno di noi pu\u00f2 sostituire in qualche modo un altro: ad esempio, introdurre nuovi nodi in un cluster k8s, aggiornare PostgreSQL, scrivere pipeline CI\/CD + Ansible, automatizzare qualcosa in Python\/Bash\/Go, collegare hardware nel data center. Una forte competenza in un determinato settore non esclude di cambiare direzione e iniziare a svilupparsi in un altro campo. Ad esempio, sono entrato in un'azienda come specialista di PostgreSQL, e ora il mio principale ambito di responsabilit\u00e0 sono i cluster Kubernetes. Nella squadra, ogni crescita \u00e8 benvenuta e c'\u00e8 un forte senso di sostegno reciproco.<\/p>\n<p>A proposito, stiamo cercando personale. I requisiti per i candidati sono abbastanza standard. Personalmente, \u00e8 importante per me che la persona si integri nel team, sia collaborativa, ma anche capace di difendere il proprio punto di vista, desideri crescere e non teme di provare qualcosa di nuovo, proponendo le proprie idee. Inoltre, \u00e8 fondamentale avere competenze nella programmazione in linguaggi script, conoscenza di base di Linux e della lingua inglese. L'inglese \u00e8 necessario semplicemente affinch\u00e9 la persona possa cercare la soluzione a un problema in caso di difficolt\u00e0 in 10 secondi anzich\u00e9 in 10 minuti. Con specialisti con una profonda conoscenza di Linux \u00e8 attualmente molto difficile: \u00e8 divertente, ma due candidati su tre non riescono a rispondere alla domanda 'Che cos'\u00e8 il Load Average? Di cosa si compone?', e considerano la domanda 'Come creare un core dump da un programma in C' qualcosa proveniente dal mondo dei supereroi... o dei dinosauri. Dobbiamo accettarlo, poich\u00e9 di solito le persone hanno sviluppato fortemente altre competenze, e noi insegneremo il 'Linux'. La risposta alla domanda 'perch\u00e9 \u00e8 tutto ci\u00f2 che un ingegnere DevOps deve sapere nel mondo moderno del cloud' dovr\u00e0 rimanere al di fuori di questo articolo, ma se dovessimo riassumerlo in tre parole: \u00e8 tutto necessario.<\/p>\n<h4>Team Tools<\/h4>\n<p>\nUn ruolo importante nell'automazione \u00e8 ricoperto dal team Tools. Il loro compito principale \u00e8 creare strumenti grafici e CLI accessibili per gli sviluppatori. Ad esempio, il nostro strumento interno Confer consente di rilasciare un'applicazione in Kubernetes con pochi semplici clic, configurandone risorse, chiavi da vault, ecc. In passato utilizzavamo Jenkins + Helm 2, ma abbiamo dovuto sviluppare uno strumento proprio per eliminare la copia e incolla e garantire coerenza nel ciclo di vita del software.<\/p>\n<p>Il team Ops non scrive pipeline per gli sviluppatori, ma pu\u00f2 fornire consulenza su qualsiasi questione relativa alla loro scrittura (alcuni utilizzano ancora Helm 3).<\/p>\n<h4>DevOps<\/h4>\n<p>\nPer quanto riguarda DevOps, lo vediamo in questo modo:<\/p>\n<p>I team di sviluppo scrivono codice e lo rilasciano tramite Confer in dev -&gt; qa\/stage -&gt; prod. La responsabilit\u00e0 di garantire che il codice non si blocchi e non generi errori ricade sui team di sviluppo e operazioni. Durante il giorno, la persona di guardia del team Ops deve reagire agli incidenti relativi alla propria applicazione, mentre di sera e di notte l'amministratore di guardia (Ops) deve svegliare il developer di guardia se sa con certezza che il problema non \u00e8 dovuto all'infrastruttura. Tutte le metriche e gli alert nel monitoraggio appaiono automaticamente o semi-automaticamente.<\/p>\n<p>L'area di responsabilit\u00e0 di Ops inizia al momento del rilascio dell'applicazione in produzione, ma la responsabilit\u00e0 di Dev non finisce qui: stiamo facendo lo stesso lavoro e siamo nella stessa barca.<\/p>\n<p>Gli sviluppatori consultano gli amministratori se hanno bisogno di aiuto nella scrittura di un microservizio per gli amministratori (ad esempio, backend Go + HTML5), mentre gli amministratori consultano gli sviluppatori su qualsiasi questione relativa all'infrastruttura o a problematiche legate a k8s.<\/p>\n<p>A proposito, non abbiamo affatto un monolite, solo microservizi. Il loro numero oscilla attualmente tra 900 e 1000 nel cluster k8s di produzione, se lo si misura in base al numero di <i>deployments<\/i>. Il numero di nodi varia tra 1700 e 2000. Attualmente ci sono circa 2000 nodi nel cluster di produzione.<\/p>\n<p>Non posso fornire numeri esatti, poich\u00e9 monitoriamo i microservizi non necessari e li rimuoviamo in modo semi-automatico. Ci aiuta a tenere traccia delle entit\u00e0 superflue in k8s <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Nastradamus\/useless-operator\">useless-operator<\/a><\/noindex>, il che consente di risparmiare risorse e denaro.<\/p>\n<h2> Gestione delle risorse <\/h2>\n<p><\/p>\n<h4> Monitoraggio <\/h4>\n<p>\nUn elemento fondamentale per la gestione di un grande cluster \u00e8 un monitoraggio ben strutturato e informativo. Fino ad ora non abbiamo trovato una soluzione universale che copra il 100% di tutte le esigenze di monitoraggio, quindi periodicamente sviluppiamo diverse soluzioni personalizzate in questo ambiente.<\/p>\n<ul>\n<li><b>Zabbix<\/b>. Il monitoraggio tradizionale, concepito principalmente per tenere sotto controllo lo stato generale dell'infrastruttura. Ci informa quando una nodo non risponde a causa di CPU, memoria, disco, rete e cos\u00ec via. Niente di straordinario, ma abbiamo anche un DaemonSet di agenti che utilizziamo per monitorare lo stato del DNS nel cluster: cerchiamo i pod coredns in difficolt\u00e0, verifichiamo la disponibilit\u00e0 degli host esterni. Potrebbe sembrare superfluo, ma con grandi volumi di traffico, questo componente rappresenta un importante punto di failure. In precedenza ho gi\u00e0 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/domclick\/blog\/495450\/\">descritto<\/a><\/noindex>, come ho affrontato le problematiche di performance del DNS nel cluster.<\/li>\n<li><b>Prometheus Operator<\/b>. Un insieme di diversi esportatori fornisce una panoramica completa di tutti i componenti del cluster. Successivamente, visualizziamo tutto questo su ampi dashboard in Grafana, utilizzando alertmanager per le notifiche.\n<\/li>\n<\/ul>\n<p>\nUn altro strumento utile per noi \u00e8 stato <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Nastradamus\/list-ingress\">list-ingress<\/a><\/noindex>. \u041c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0435\u0433\u043e \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0435\u0439, \u043a\u043e\u0433\u0434\u0430 \u043e\u0434\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0438\u043c\u0438 \u043f\u0443\u0442\u044f\u043c\u0438 Ingress \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 50x. \u0421\u0435\u0439\u0447\u0430\u0441 \u043f\u0435\u0440\u0435\u0434 \u0434\u0435\u043f\u043b\u043e\u0435\u043c \u043d\u0430 \u043f\u0440\u043e\u0434 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442, \u0447\u0442\u043e \u043d\u0438\u043a\u043e\u0433\u043e \u043d\u0435 \u0437\u0430\u0434\u0435\u043d\u0443\u0442, \u0430 \u0434\u043b\u044f \u043c\u043e\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0439 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 Ingress&#8217;\u0430\u043c\u0438. \u0417\u0430\u0431\u0430\u0432\u043d\u043e, \u0447\u0442\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0435\u0433\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0434\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u043e\u0432 \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b \u043e\u043d \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u00ab\u0442\u043e\u043f\u043e\u0440\u043d\u043e\u00bb, \u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043f\u043e\u043b\u044e\u0431\u0438\u043b\u0441\u044f dev-\u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c, \u043e\u043d \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0438\u043b\u0441\u044f \u0438 \u0441\u0442\u0430\u043b \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043d\u0435 \u043a\u0430\u043a \u00ab\u0430\u0434\u043c\u0438\u043d \u0441\u0434\u0435\u043b\u0430\u043b \u0432\u0435\u0431-\u043c\u043e\u0440\u0434\u0443 \u0434\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u043e\u0432\u00bb. \u0421\u043a\u043e\u0440\u043e \u043c\u044b \u043e\u0442\u043a\u0430\u0436\u0435\u043c\u0441\u044f \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u0430\u043b\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0435\u0449\u0435 \u0434\u043e \u0432\u044b\u043a\u0430\u0442\u043a\u0438 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430.<\/p>\n<h4>Risorse dei team in \"Kube\"<\/h4>\n<p>\nPrima di procedere con gli esempi, \u00e8 importante spiegare come funzionano le risorse allocate per <i>microservizi<\/i>.<\/p>\n<p>Per comprendere quali team e in che quantit\u00e0 utilizzano le proprie <i>risorse<\/i> (processore, memoria, SSD locale), assegniamo a ciascun team le proprie <i>namespace<\/i> \u0432 \u00ab\u041a\u0443\u0431\u0435\u00bb \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0443, \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0434\u0438\u0441\u043a\u0443, \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u0433\u043e\u0432\u043e\u0440\u0438\u0432 \u043d\u0443\u0436\u0434\u044b \u043a\u043e\u043c\u0430\u043d\u0434. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043e\u0434\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u0432 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043d\u0435 \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u0434\u043b\u044f \u0434\u0435\u043f\u043b\u043e\u044f \u0432\u0435\u0441\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u0432\u044b\u0434\u0435\u043b\u0438\u0432 \u0441\u0435\u0431\u0435 \u0442\u044b\u0441\u044f\u0447\u0438 \u044f\u0434\u0435\u0440 \u0438 \u0442\u0435\u0440\u0430\u0431\u0430\u0439\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438. \u0414\u043e\u0441\u0442\u0443\u043f\u044b \u0432 namespace \u0432\u044b\u0434\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 AD (\u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c RBAC). Namespace&#8217;\u044b \u0438 \u0438\u0445 \u043b\u0438\u043c\u0438\u0442\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043f\u0443\u043b-\u0440\u0435\u043a\u0432\u0435\u0441\u0442 \u0432 GIT-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u0430 \u0434\u0430\u043b\u0435\u0435 \u0447\u0435\u0440\u0435\u0437 Ansible-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d \u0432\u0441\u0451 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0440\u0430\u0441\u043a\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>Example of resource allocation for a team:<\/p>\n<pre><code class=\"go\">namespaces:\n\n  chat-team:\n    pods: 23\n    limits:\n      cpu: 11\n      memory: 20Gi\n    requests:\n      cpu: 11\n      memory: 20Gi\n<\/code><\/pre>\n<p><\/p>\n<h4>Requests and limits<\/h4>\n<p>\nIn 'Kube' <i>Richiesta<\/i> \u2014 is the amount of resources guaranteed to be reserved for <i>pod<\/i> (\u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0434\u043e\u043a\u0435\u0440-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432) \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435. Limit \u2014 \u044d\u0442\u043e \u043d\u0435\u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c. \u0427\u0430\u0441\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0430\u0445, \u043a\u0430\u043a \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u043b\u0430 \u0441\u0435\u0431\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0440\u0435\u043a\u0432\u0435\u0441\u0442\u043e\u0432 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0434\u0435\u043f\u043b\u043e\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u00ab\u041a\u0443\u0431\u00bb, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u0434 \u0438\u0445 namespace \u0432\u0441\u0435 request&#8217;\u044b \u0443\u0436\u0435 \u00ab\u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u044b\u00bb.<\/p>\n<p>The correct way out of such a situation: monitor actual resource consumption and compare it with the requested amount (Request).<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes in DomClick: come dormire tranquilli gestendo un cluster di 1000 microservizi.\" src=\"\/wp-content\/uploads\/2020\/08\/417373d4421064f28d57a03b6bb5bf94.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"Kubernetes in DomClick: come dormire tranquilli gestendo un cluster di 1000 microservizi.\" src=\"\/wp-content\/uploads\/2020\/08\/3168ad6dc8b159059b21e1177e145376.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNegli screenshot sopra, si pu\u00f2 vedere che le CPU \u00abrichieste\u00bb (Requested) si adattano al reale numero di thread, mentre i Limiti possono superare il numero reale di thread dei processori centrali =)<\/p>\n<p>Ora esaminiamo in dettaglio un namespace (ho scelto il namespace kube-system \u2014 il namespace di sistema per i componenti del 'Cubo') e vediamo il rapporto tra il tempo di CPU e la memoria realmente utilizzati rispetto a ci\u00f2 che \u00e8 stato richiesto:<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes in DomClick: come dormire tranquilli gestendo un cluster di 1000 microservizi.\" src=\"\/wp-content\/uploads\/2020\/08\/ed6160de5397b8cd39cbae172d4bb872.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c8 ovvio che \u00e8 riservata molta pi\u00f9 memoria e CPU per i servizi di sistema rispetto a ci\u00f2 che viene realmente utilizzato. Nel caso di kube-system, ci\u00f2 \u00e8 giustificato: \u00e8 successo che il controller nginx ingress o nodelocaldns a picco richiedessero tanto CPU e consumassero molta RAM, quindi in questo caso \u00e8 valido avere tale margine. Inoltre, non possiamo affidarci ai grafici delle ultime 3 ore: \u00e8 preferibile vedere metriche storiche su un lungo periodo di tempo.<\/p>\n<p>\u00c8 stato sviluppato un sistema di \u00abraccomandazioni\u00bb. Ad esempio, qui si possono vedere a quali risorse sarebbe meglio aumentare i \u00ablimiti\u00bb (il tetto consentito), per evitare il \u00abthrottling\u00bb: il momento in cui si \u00e8 gi\u00e0 consumata CPU o memoria per il quantum di tempo assegnato e si \u00e8 in attesa che vengano 'sbloccati':<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes in DomClick: come dormire tranquilli gestendo un cluster di 1000 microservizi.\" src=\"\/wp-content\/uploads\/2020\/08\/f23aece10a585e6847bcacfe947031d1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCi sono per\u00f2 dei pod che bisognerebbe moderare:<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes in DomClick: come dormire tranquilli gestendo un cluster di 1000 microservizi.\" src=\"\/wp-content\/uploads\/2020\/08\/1ec9996ce6355aeba603008d51aac209.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRiguardo <i>throttling<\/i> + il monitoraggio delle risorse pu\u00f2 dar vita a pi\u00f9 di un articolo, quindi non esitate a porre domande nei commenti. Posso dire in poche parole che l'automazione di queste metriche \u00e8 piuttosto complessa e richiede molto tempo e destrezza con le funzioni 'window' e 'CTE' in Prometheus \/ VictoriaMetrics (questi termini sono tra virgolette poich\u00e9 in PromQL non esistono cose simili, e bisogna costruire query piuttosto complesse che occupano pi\u00f9 schermi di testo e ottimizzarle).<\/p>\n<p>Alla fine, gli sviluppatori dispongono di strumenti per monitorare i propri namespaces in Kubernetes, e possono decidere autonomamente dove e quando a quali applicazioni \u2018tagliare\u2019 le risorse, e a quali pod si pu\u00f2 concedere tutta la CPU per tutta la notte.<\/p>\n<h4>Metodologie<\/h4>\n<p>\nNell'azienda, come ora <i>\u00e8 di moda<\/i>, seguiamo pratiche DevOps e <i>SRE<\/i>-pratiche. Quando in azienda ci sono 1000 microservizi, circa 350 sviluppatori e 15 amministratori per tutta l'infrastruttura, \u00e8 necessario 'essere alla moda': dietro a tutti questi 'buzzword' si nasconde un'urgenza nel automatizzare tutto, e gli amministratori non devono diventare il collo di bottiglia nei processi.<\/p>\n<p>Come Ops, forniamo diverse metriche e dashboard per gli sviluppatori relative alla velocit\u00e0 di risposta dei servizi e ai loro errori.<\/p>\n<p>Utilizziamo metodologie come: <noindex><a rel=\"nofollow\" href=\"https:\/\/thenewstack.io\/monitoring-microservices-red-method\/\">RED<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.brendangregg.com\/usemethod.html\">USE<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/forepaas\/distributed-monitoring-101-the-four-golden-signals-305bbbc33d35\">Golden Signals<\/a><\/noindex>, combinandole insieme. Cerchiamo di ridurre al minimo il numero di dashboard in modo che sia chiaro a colpo d'occhio quale servizio sta attualmente degradando (ad esempio, i codici di risposta al secondo, il tempo di risposta al percentile 99), e cos\u00ec via. Non appena servono nuove metriche per i dashboard generali, le realizziamo e le aggiungiamo subito.<\/p>\n<p><i>Non ho disegnato grafici da un mese. Probabilmente \u00e8 un buon segno: significa che la maggior parte delle \"richieste\" \u00e8 gi\u00e0 stata realizzata. A volte, in una settimana, disegnavo almeno un nuovo grafico al giorno.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes in DomClick: come dormire tranquilli gestendo un cluster di 1000 microservizi.\" src=\"\/wp-content\/uploads\/2020\/08\/574f1b4d2be78fb779f1771bffac51dd.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Kubernetes in DomClick: come dormire tranquilli gestendo un cluster di 1000 microservizi.\" src=\"\/wp-content\/uploads\/2020\/08\/6ab2aa05f912839b14bdbcf84faaeb3a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl risultato ottenuto \u00e8 prezioso poich\u00e9 ora gli sviluppatori raramente si rivolgono agli amministratori con domande su \"dove posso vedere una certa metrica\".<\/p>\n<p>Implementazione <i>Service Mesh<\/i> \u00e8 imminente e dovrebbe semplificare notevolmente la vita di tutti; i colleghi di Tools sono gi\u00e0 prossimi all'implementazione dell'astratto \u00abIstio del robusto\u00bb: il ciclo di vita di ogni richiesta HTTP(s) sar\u00e0 visibile nel monitoraggio, e sar\u00e0 sempre possibile capire \u00abin quale fase si \u00e8 rotto tutto\u00bb durante le interazioni tra servizi (e non solo). Iscriviti per ricevere aggiornamenti dal hub di DomClick. =)<\/p>\n<h2>Supporto per l'infrastruttura Kubernetes<\/h2>\n<p>\nStoricamente, utilizziamo una versione patchata di <i>Kubespray<\/i> \u2014 un ruolo Ansible per il deployment, l'espansione e l'aggiornamento di Kubernetes. A un certo punto, il supporto per le installazioni non kubeadm \u00e8 stato rimosso dal ramo principale, e non \u00e8 stata proposta una transizione a kubeadm. Alla fine, la compagnia Southbridge ha creato un proprio fork (con supporto per kubeadm e una rapida risoluzione dei problemi critici). <\/p>\n<p>Il processo di aggiornamento di tutti i cluster k8s \u00e8 il seguente:<\/p>\n<ul>\n<li>Prendiamo <i>Kubespray<\/i> da Southbridge, confrontiamo con il nostro ramo e facciamo il merge.<\/li>\n<li>Applichiamo l'aggiornamento a <i>Stress<\/i>-\u00abKube\u00bb.<\/li>\n<li>Applichiamo l'aggiornamento a un nodo alla volta (in Ansible si tratta di \u00abserial: 1\u00bb) a <i>Dev<\/i>-\u00abKube\u00bb.<\/li>\n<li>Aggiorniamo <i>Prod<\/i> sabato sera, nodo per nodo.<\/li>\n<\/ul>\n<p>\nIn futuro, ci sono piani per sostituire <i>Kubespray<\/i> con qualcosa di pi\u00f9 veloce e passare a <i>kubeadm<\/i>.<\/p>\n<p>In totale abbiamo tre \u201cCubi\u201d: Stress, Dev e Prod. Prevediamo di lanciare un altro (<i>hot standby<\/i>) Cubo Prod nel secondo data center. <i>Stress<\/i> e <i>Dev<\/i> Vivono in \u201cmacchine virtuali\u201d (oVirt per Stress e VMWare cloud per Dev). <i>Prod<\/i>-Cubo vive su \u201chardware nudo\u201d (bare metal): sono nodi identici con 32 thread CPU, 64-128 GB di RAM e 300 GB SSD RAID 10 \u2014 in totale sono 50. Tre nodi \u201csnelli\u201d sono dedicati ai \u201cmaster\u201d <i>Prod<\/i>-Cubo: 16 GB di RAM, 12 thread CPU.<\/p>\n<p>Per la produzione preferiamo utilizzare \u201chardware nudo\u201d ed evitiamo strati intermedi come <i>OpenStack<\/i>: non abbiamo bisogno di \u201cvicini rumorosi\u201d e CPU <i>steal time<\/i>. Inoltre, la complessit\u00e0 dell'amministrazione raddoppia nel caso di OpenStack in-house.<\/p>\n<p>Per i componenti infrastrutturali e i CI\/CD \u201cCubo\u201d utilizziamo un server GIT separato, Helm 3 (abbiamo fatto la transizione in modo piuttosto doloroso da Helm 2, ma siamo molto contenti della funzionalit\u00e0 <i>atomic<\/i>), Jenkins, Ansible e Docker. Amiamo le feature branch e il deployment in diversi ambienti da un unico repository.<\/p>\n<h3>Conclusione<\/h3>\n<p><img decoding=\"async\" alt=\"Kubernetes in DomClick: come dormire tranquilli gestendo un cluster di 1000 microservizi.\" src=\"\/wp-content\/uploads\/2020\/08\/34ddcd1f275c63c1ad821218d16b5abb.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nCos\u00ec, in linea generale, il processo DevOps in casa DomClick appare dal punto di vista dell'ingegnere operativo. L'articolo \u00e8 risultato meno tecnico di quanto mi aspettassi: pertanto, seguite le notizie di DomClick su Habr: ci saranno articoli pi\u00f9 \u201chardcore\u201d su Kubernetes e non solo.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/domclick\/blog\/501122\/\">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 \u0412\u0438\u043a\u0442\u043e\u0440 \u042f\u0433\u043e\u0444\u0430\u0440\u043e\u0432, \u0438 \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\u043c Kubernetes-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0414\u043e\u043c\u041a\u043b\u0438\u043a \u0432 \u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 Ops (\u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f). \u042f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 Dev &lt;-&gt; Ops, \u043e\u0431 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 k8s-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0432 \u0420\u043e\u0441\u0441\u0438\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e DevOps\/SRE-\u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u043d\u0430\u0448\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 Ops \u0412 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 Ops [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":91200,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-91199","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0412\u0438\u043a\u0442\u043e\u0440 \u042f\u0433\u043e\u0444\u0430\u0440\u043e\u0432, \u0438 \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\u043c Kubernetes-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0414\u043e\u043c\u041a\u043b\u0438\u043a \u0432 \u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 Ops (\u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f). \u042f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 Dev Ops, \u043e\u0431 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 k8s-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0432 \u0420\u043e\u0441\u0441\u0438\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e DevOps\/SRE-\u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u043d\u0430\u0448\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 Ops \u0412 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 Ops\" \/>\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\/it\/blog\/administrirovanie\/kubernetes-v-domklik-kak-spat-spokojno-upravlyaya-klasterom-na-1000-mikroservisov\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\udd47Kubernetes \u0432 \u0414\u043e\u043c\u041a\u043b\u0438\u043a: \u043a\u0430\u043a \u0441\u043f\u0430\u0442\u044c \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u043c \u043d\u0430 1000 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0412\u0438\u043a\u0442\u043e\u0440 \u042f\u0433\u043e\u0444\u0430\u0440\u043e\u0432, \u0438 \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\u043c Kubernetes-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0414\u043e\u043c\u041a\u043b\u0438\u043a \u0432 \u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 Ops (\u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f). \u042f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 Dev Ops, \u043e\u0431 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 k8s-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0432 \u0420\u043e\u0441\u0441\u0438\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e DevOps\/SRE-\u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u043d\u0430\u0448\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 Ops \u0412 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 Ops\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kubernetes-v-domklik-kak-spat-spokojno-upravlyaya-klasterom-na-1000-mikroservisov\" \/>\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=\"2020-08-09T23:42:03+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-09T23:42:03+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\udd47Kubernetes in DomClick: come dormire sonni tranquilli gestendo un cluster di 1000 microservizi | ProHoster","description":"Mi chiamo Viktor Yagofarov e mi occupo dello sviluppo della piattaforma Kubernetes presso DomClick come responsabile tecnico dello sviluppo nel team Ops (operazioni). Vorrei parlare dell'organizzazione dei nostri processi DevOps, delle peculiarit\u00e0 della gestione di uno dei pi\u00f9 grandi cluster k8s in Russia, cos\u00ec come delle pratiche DevOps\/SRE che utilizziamo nel nostro team.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kubernetes-v-domklik-kak-spat-spokojno-upravlyaya-klasterom-na-1000-mikroservisov","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\udd47Kubernetes \u0432 \u0414\u043e\u043c\u041a\u043b\u0438\u043a: \u043a\u0430\u043a \u0441\u043f\u0430\u0442\u044c \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u043c \u043d\u0430 1000 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 | ProHoster","og:description":"\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0412\u0438\u043a\u0442\u043e\u0440 \u042f\u0433\u043e\u0444\u0430\u0440\u043e\u0432, \u0438 \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\u043c Kubernetes-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0414\u043e\u043c\u041a\u043b\u0438\u043a \u0432 \u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 Ops (\u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f). \u042f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 Dev Ops, \u043e\u0431 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 k8s-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0432 \u0420\u043e\u0441\u0441\u0438\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e DevOps\/SRE-\u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u043d\u0430\u0448\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 Ops \u0412 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 Ops","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kubernetes-v-domklik-kak-spat-spokojno-upravlyaya-klasterom-na-1000-mikroservisov","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":"2020-08-09T23:42:03+00:00","article:modified_time":"2020-08-09T23:42:03+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"91199","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:32:23","updated":"2022-09-28 06:43:59"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/91199","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=91199"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/91199\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/91200"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=91199"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=91199"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=91199"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}