{"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\/de\/blog\/administrirovanie\/kubernetes-v-domklik-kak-spat-spokojno-upravlyaya-klasterom-na-1000-mikroservisov","title":{"rendered":"Kubernetes bei DomClick: Wie man ruhig schlafen kann, w\u00e4hrend man ein Cluster mit 1000 Mikrodiensten verwaltet","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Mein Name ist Viktor Yagofarov, und ich bin als technischer Leiter f\u00fcr die Entwicklung des Kubernetes-Systems bei DomClick im Bereich Operations t\u00e4tig. Ich m\u00f6chte \u00fcber die Struktur unserer Dev  Ops-Prozesse, die Besonderheiten des Betriebs eines der gr\u00f6\u00dften K8s-Cluster in Russland sowie \u00fcber die DevOps\/SRE-Praktiken sprechen, die unser Team anwendet.<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes bei DomClick: Wie man ruhig schlafen kann, w\u00e4hrend man ein Cluster mit 1000 Mikrodiensten verwaltet\" 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>Operations-Team<\/h4>\n<p>\nIm Operations-Team arbeiten derzeit 15 Personen. Drei von ihnen sind f\u00fcr das B\u00fcro zust\u00e4ndig, zwei sind in einer anderen Zeitzone t\u00e4tig und stehen auch nachts zur Verf\u00fcgung. Somit ist immer jemand aus dem Ops-Team am Monitor und bereit, auf Vorf\u00e4lle jeder Art zu reagieren. Wir haben keine Nachtdienste, was unsere Psyche sch\u00fctzt und es allen erm\u00f6glicht, auszuschlafen und die Freizeit nicht nur vor dem Computer zu verbringen.<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes bei DomClick: Wie man ruhig schlafen kann, w\u00e4hrend man ein Cluster mit 1000 Mikrodiensten verwaltet\" src=\"\/wp-content\/uploads\/2020\/08\/47051db273f116df376e64bad67c6f37.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDie Kompetenzen sind vielf\u00e4ltig: Netzwerkadministratoren, Datenbankadministratoren, ELK-Stack-Spezialisten, Kubernetes-Administratoren\/-Entwickler, Monitoring-Experten, Virtualisierungsspezialisten, Hardware-Profis usw. Was uns vereint, ist das: Jeder kann in gewissem Ma\u00dfe jeden von uns ersetzen. Das bedeutet zum Beispiel, neue Knoten in ein k8s-Cluster einf\u00fcgen, PostgreSQL aktualisieren, eine CI\/CD-Pipeline mit Ansible schreiben, etwas mit Python\/Bash\/Go automatisieren oder Hardware im Rechenzentrum anschlie\u00dfen. Starke Kompetenzen in einem bestimmten Bereich hindern nicht daran, die Richtung zu wechseln und in einem anderen Bereich weiterzulernen. Zum Beispiel habe ich mich als PostgreSQL-Spezialist in einem Unternehmen beworben, und jetzt ist mein Hauptverantwortungsbereich die Kubernetes-Cluster-Administration. Im Team wird pers\u00f6nliches Wachstum stets begr\u00fc\u00dft und das Gef\u00fchl der Unterst\u00fctzung ist sehr ausgepr\u00e4gt.<\/p>\n<p>\u00dcbrigens, wir sind auf der Suche nach neuen Talenten. Die Anforderungen an die Bewerber sind ziemlich Standard. Besonders wichtig ist mir, dass die Person gut ins Team passt, konfliktf\u00e4hig ist, aber auch in der Lage ist, ihre Meinung zu vertreten, den Wunsch hat, sich weiterzuentwickeln und keine Angst hat, Neues zu probieren und eigene Ideen einzubringen. Au\u00dferdem sind Programmierkenntnisse in Skriptsprachen sowie Grundkenntnisse in Linux und Englisch erforderlich. Englisch ist notwendig, damit die Person im Falle eines Fehlers innerhalb von 10 Sekunden eine L\u00f6sung googeln kann, und nicht innerhalb von 10 Minuten. Es ist leider schwierig, Fachkr\u00e4fte mit fundierten Linux-Kenntnissen zu finden: Es ist zwar komisch, aber zwei von drei Kandidaten k\u00f6nnen die Frage nicht beantworten: \u201eWas ist der Load Average? Woraus setzt er sich zusammen?\u201c und sie betrachten die Frage \u201eWie erstellt man einen Core Dump aus einem C-Programm?\u201c als etwas aus der Welt der Supermenschen\u2026 oder Dinosaurier. Damit m\u00fcssen wir uns abfinden, da die Menschen in der Regel stark in anderen Kompetenzen sind, und das \u201eLinux\u201c bringen wir ihnen bei. Warum all das f\u00fcr einen DevOps-Ingenieur in der modernen Cloud-Welt wichtig ist, kann ich hier nicht im Detail erl\u00e4utern, aber wenn ich es in drei Worten sagen m\u00fcsste: Das alles ist notwendig.<\/p>\n<h4>Team Tools<\/h4>\n<p>\nEin wesentlicher Bestandteil der Automatisierung ist das Team Tools. Ihre Hauptaufgabe besteht darin, benutzerfreundliche grafische und CLI-Tools f\u00fcr Entwickler zu erstellen. Zum Beispiel erm\u00f6glicht unser internes Tool Confer, mit nur wenigen Klicks eine Anwendung in Kubernetes auszurollen, die Ressourcen und Schl\u00fcsseln aus einem Vault zu konfigurieren usw. Zuvor verwendeten wir Jenkins + Helm 2, aber es war notwendig, ein eigenes Tool zu entwickeln, um Copy-Paste zu vermeiden und Einheitlichkeit im Software-Lebenszyklus zu gew\u00e4hrleisten.<\/p>\n<p>Das Ops-Team schreibt keine Pipelines f\u00fcr die Entwickler, kann jedoch bei Fragen zur Erstellung beraten (einige verwenden immer noch Helm 3).<\/p>\n<h4>DevOps<\/h4>\n<p>\nWas DevOps betrifft, so verstehen wir es so:<\/p>\n<p>Die Dev-Teams schreiben Code und stellen ihn \u00fcber Confer in dev -&gt; qa\/stage -&gt; prod bereit. Die Verantwortung daf\u00fcr, dass der Code fl\u00fcssig l\u00e4uft und keine Fehler aufweist, liegt bei den Dev- und Ops-Teams. W\u00e4hrend der Tageszeit sollte in erster Linie der diensthabende Ops-Mitarbeiter auf Vorf\u00e4lle mit seiner Anwendung reagieren. In den Abend- und Nachtstunden muss der Ops-Administrator den diensthabenden Entwickler benachrichtigen, wenn er sicher ist, dass das Problem nicht in der Infrastruktur liegt. Alle Metriken und Alarme im Monitoring erscheinen automatisch oder halbautomatisch.<\/p>\n<p>Der Verantwortungsbereich von Ops beginnt mit der Bereitstellung der Anwendung in der Produktion, doch die Verantwortung von Dev endet damit nicht \u2014 wir arbeiten zusammen und befinden uns im selben Boot.<\/p>\n<p>Entwickler beraten die Administratoren, wenn Hilfe beim Schreiben eines Admin-Microservices ben\u00f6tigt wird (zum Beispiel Go-Backend + HTML5), w\u00e4hrend die Administratoren die Entwickler zu allen Infrastrukturfragen oder Fragen im Zusammenhang mit k8s beraten.<\/p>\n<p>\u00dcbrigens haben wir \u00fcberhaupt kein Monolithen, sondern nur Microservices. Ihre Anzahl schwankt derzeit zwischen 900 und 1000 im Prod-k8s-Cluster, gemessen an der Anzahl. <i>deployments<\/i>. Die Anzahl der Pods variiert zwischen 1700 und 2000. Im Prod-Cluster befinden sich derzeit etwa 2000 Pods.<\/p>\n<p>Genaue Zahlen kann ich nicht nennen, da wir uns um unn\u00f6tige Mikrodienste k\u00fcmmern und diese in einem halbautomatischen Modus entfernen. Die \u00dcberwachung \u00fcberfl\u00fcssiger Entit\u00e4ten in k8s erfolgt durch <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Nastradamus\/useless-operator\">useless-operator<\/a><\/noindex>, was Ressourcen und Kosten erheblich spart.<\/p>\n<h2> Ressourcenmanagement <\/h2>\n<p><\/p>\n<h4> \u00dcberwachung <\/h4>\n<p>\nEin gut strukturiertes und informatives Monitoring ist der Schl\u00fcssel zum Betrieb eines gro\u00dfen Clusters. Bisher haben wir keine universelle L\u00f6sung gefunden, die 100 % aller Anforderungen an das Monitoring abdeckt, deshalb entwickeln wir regelm\u00e4\u00dfig verschiedene ma\u00dfgeschneiderte L\u00f6sungen in diesem Bereich.<\/p>\n<ul>\n<li><b>Zabbix<\/b>. Die bew\u00e4hrte \u00dcberwachung, die in erster Linie dazu dient, den allgemeinen Zustand der Infrastruktur zu \u00fcberwachen. Sie informiert uns, wenn ein Knoten aufgrund von CPU, RAM, Speicher, Netzwerk usw. ausf\u00e4llt. Nichts Aufregendes, aber wir haben auch ein separates DaemonSet von Agenten, mit denen wir beispielsweise den Zustand von DNS im Cluster \u00fcberwachen: wir suchen nach h\u00e4ngenden Pods von coredns und \u00fcberpr\u00fcfen die Erreichbarkeit externer Hosts. Man k\u00f6nnte sich fragen, warum man sich damit besch\u00e4ftigen sollte, aber bei hohem Traffic ist dieses Element ein ernstzunehmender Ausfallpunkt. Zuvor habe ich bereits <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/domclick\/blog\/495450\/\">beschrieben.<\/a><\/noindex>, wie ich mit der DNS-Leistung im Cluster umgegangen bin.<\/li>\n<li><b>Prometheus Operator<\/b>. Eine Reihe von verschiedenen Exporteuren bietet einen umfassenden \u00dcberblick \u00fcber alle Clusterkomponenten. Anschlie\u00dfend visualisieren wir all das auf gro\u00dfen Dashboards in Grafana und verwenden alertmanager f\u00fcr die Benachrichtigungen.\n<\/li>\n<\/ul>\n<p>\nEin weiteres n\u00fctzliches Werkzeug f\u00fcr uns war <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>Teamressourcen im \u201eKubernetes\u201c<\/h4>\n<p>\nBevor wir mit den Beispielen beginnen, sollten wir erkl\u00e4ren, wie die Ressourcenzuteilung bei uns funktioniert. <i>Mikrodiensten<\/i>.<\/p>\n<p>Um zu verstehen, welche Teams und in welchen Mengen ihre <i>Ressourcen<\/i> (CPU, RAM, lokales SSD) nutzen, weisen wir jeder Gruppe ihre eigenen zu. <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>Beispiel f\u00fcr die Ressourcenzuweisung an ein 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 und Limits<\/h4>\n<p>\nIn Kubernetes <i>Request<\/i> ist die Menge der garantiert reservierten Ressourcen f\u00fcr <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>Die richtige L\u00f6sung in einem solchen Fall: Das tats\u00e4chliche Ressourcenverbrauch analysieren und mit der angeforderten Menge (Request) vergleichen.<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes bei DomClick: Wie man ruhig schlafen kann, w\u00e4hrend man ein Cluster mit 1000 Mikrodiensten verwaltet\" src=\"\/wp-content\/uploads\/2020\/08\/417373d4421064f28d57a03b6bb5bf94.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"Kubernetes bei DomClick: Wie man ruhig schlafen kann, w\u00e4hrend man ein Cluster mit 1000 Mikrodiensten verwaltet\" src=\"\/wp-content\/uploads\/2020\/08\/3168ad6dc8b159059b21e1177e145376.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAuf den obigen Screenshots ist zu sehen, dass die \u201eangeforderten\u201c (Requested) CPUs an die tats\u00e4chliche Anzahl der Threads angepasst werden, w\u00e4hrend die Limits die tats\u00e4chliche Anzahl der CPU-Threads \u00fcberschreiten k\u00f6nnen =)<\/p>\n<p>Schauen wir uns nun ausf\u00fchrlich einen Namespace an (ich habe den Namespace kube-system gew\u00e4hlt \u2013 den System-Namespace f\u00fcr die Komponenten von Kubernetes) und vergleichen wir die tats\u00e4chlich genutzte CPU-Zeit und den Speicher mit dem Angeforderten:<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes bei DomClick: Wie man ruhig schlafen kann, w\u00e4hrend man ein Cluster mit 1000 Mikrodiensten verwaltet\" src=\"\/wp-content\/uploads\/2020\/08\/ed6160de5397b8cd39cbae172d4bb872.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOffensichtlich ist der Speicher und die CPU, die f\u00fcr die Systemdienste reserviert sind, deutlich h\u00f6her als tats\u00e4chlich genutzt wird. Im Fall von kube-system ist dies gerechtfertigt: Es gab Zeiten, in denen der NGINX Ingress Controller oder node-local-dns zu Spitzenzeiten die CPU-Auslastung erreicht haben und sehr viel RAM verbraucht wurde, daher ist hier ein solcher Puffer sinnvoll. Zudem k\u00f6nnen wir uns nicht nur auf die Grafiken der letzten 3 Stunden verlassen: Es w\u00e4re w\u00fcnschenswert, historische Metriken \u00fcber einen l\u00e4ngeren Zeitraum zu sehen.<\/p>\n<p>Ein System von \u201eEmpfehlungen\u201c wurde entwickelt. Hier kann man zum Beispiel sehen, welche Ressourcen es besser w\u00e4re, um die \u201eLimits\u201c (oberste zul\u00e4ssige Grenze) zu erh\u00f6hen, um \u201eThrottling\u201c zu vermeiden: den Moment, in dem die CPU oder der Speicher bereits f\u00fcr den zugewiesenen Zeitquantums aufgebraucht wurden und darauf wartet, bis sie \u201eaufgetaut\u201c werden:<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes bei DomClick: Wie man ruhig schlafen kann, w\u00e4hrend man ein Cluster mit 1000 Mikrodiensten verwaltet\" src=\"\/wp-content\/uploads\/2020\/08\/f23aece10a585e6847bcacfe947031d1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHier sind die Pods, bei denen eine Drosselung angebracht w\u00e4re:<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes bei DomClick: Wie man ruhig schlafen kann, w\u00e4hrend man ein Cluster mit 1000 Mikrodiensten verwaltet\" src=\"\/wp-content\/uploads\/2020\/08\/1ec9996ce6355aeba603008d51aac209.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00dcber <i>Drosselung<\/i> + \u00dcber das Monitoring von Ressourcen lie\u00dfen sich zahlreiche Artikel schreiben, fragen Sie also gerne in den Kommentaren. Kurz gesagt, die Automatisierung solcher Metriken ist eine anspruchsvolle Aufgabe, die viel Zeit und Geschick mit \u201eWindow\u201c-Funktionen und \u201eCTE\u201c in Prometheus \/ VictoriaMetrics erfordert (diese Begriffe habe ich in Anf\u00fchrungszeichen gesetzt, da es in PromQL kaum Vergleichbares gibt, und man gezwungen ist, komplexe Abfragen von mehreren Bildschirmen Text zu kreieren und diese zu optimieren).<\/p>\n<p>Letztendlich verf\u00fcgen die Entwickler \u00fcber Werkzeuge zur \u00dcberwachung ihrer Namespaces im \u201eKubernetes\u201c, und sie k\u00f6nnen selbst entscheiden, wo und wann in welchen Anwendungen Ressourcen \u201ereduziert\u201c werden k\u00f6nnen, w\u00e4hrend andere Pods die gesamte CPU \u00fcber Nacht erhalten k\u00f6nnen.<\/p>\n<h4>Methodologien<\/h4>\n<p>\nIn unserem Unternehmen, wie es gerade angesagt ist, <i>halten wir uns an DevOps- und<\/i>SRE <i>-Praktiken. Bei 1000 Mikrodiensten, etwa 350 Entwicklern und 15 Admins f\u00fcr die gesamte Infrastruktur wird es notwendig, \u201emodisch\u201c zu sein: hinter all diesen \u201eBuzzwords\u201c steckt ein dringender Bedarf an Automatisierung aller Prozesse, und die Admins d\u00fcrfen nicht das Engpassproblem im Ablauf sein.<\/i>-praktisch. Wenn es in einem Unternehmen 1000 Mikrodienste, etwa 350 Entwickler und 15 Administratoren f\u00fcr die gesamte Infrastruktur gibt, muss man \"trendy\" sein: hinter all diesen \"Buzzwords\" verbirgt sich ein akuter Bedarf an Automatisierung von allem und jedem, und die Administratoren d\u00fcrfen kein Flaschenhals in den Prozessen sein.<\/p>\n<p>Als Ops bieten wir verschiedene Metriken und Dashboards f\u00fcr Entwickler an, die mit der Antwortgeschwindigkeit der Dienste und deren Fehlern zusammenh\u00e4ngen.<\/p>\n<p>Wir verwenden Methoden wie: <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> und <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/forepaas\/distributed-monitoring-101-the-four-golden-signals-305bbbc33d35\">Goldene Signale<\/a><\/noindex>, die wir miteinander kombinieren. Wir versuchen, die Anzahl der Dashboards zu minimieren, damit auf einen Blick klar ist, welcher Dienst derzeit eine Verschlechterung aufweist (zum Beispiel Antwortcodes pro Sekunde, Antwortzeiten im 99. Perzentil) usw. Sobald neue Metriken f\u00fcr allgemeine Dashboards ben\u00f6tigt werden, erstellen wir diese sofort und f\u00fcgen sie hinzu.<\/p>\n<p><i>Ich habe seit einem Monat keine Grafiken mehr erstellt. Das ist wahrscheinlich ein gutes Zeichen: Das hei\u00dft, dass die meisten \u201eW\u00fcnsche\u201c bereits umgesetzt wurden. In der Vergangenheit kam es vor, dass ich in einer Woche mindestens einmal am Tag ein neues Diagramm erstellt habe.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes bei DomClick: Wie man ruhig schlafen kann, w\u00e4hrend man ein Cluster mit 1000 Mikrodiensten verwaltet\" src=\"\/wp-content\/uploads\/2020\/08\/574f1b4d2be78fb779f1771bffac51dd.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Kubernetes bei DomClick: Wie man ruhig schlafen kann, w\u00e4hrend man ein Cluster mit 1000 Mikrodiensten verwaltet\" src=\"\/wp-content\/uploads\/2020\/08\/6ab2aa05f912839b14bdbcf84faaeb3a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas Ergebnis ist wertvoll, da die Entwickler nun recht selten bei den Admins nachfragen, wo sie eine bestimmte Metrik einsehen k\u00f6nnen.<\/p>\n<p>Implementierung <i>Service Mesh<\/i> Es ist nicht mehr weit und wird allen das Leben erheblich erleichtern. Die Kollegen aus dem Tools-Team stehen kurz vor der Implementierung des abstrakten \u201eIstio des gesunden Menschen\u201c: Der Lebenszyklus jeder HTTP(s)-Anforderung wird im Monitoring sichtbar sein, und man kann jederzeit nachvollziehen, \u201ean welchem Punkt es schiefgelaufen ist\u201c beim internen (und nicht nur) Service-Austausch. Abonnieren Sie die Neuigkeiten des Unternehmens-Hubs DomKlik. =)<\/p>\n<h2>Unterst\u00fctzung der Kubernetes-Infrastruktur<\/h2>\n<p>\nHistorisch haben wir eine gepatchte Version verwendet <i>Kubespray<\/i> \u2014 eine Ansible-Rolle zum Bereitstellen, Erweitern und Aktualisieren von Kubernetes. Irgendwann wurde die Unterst\u00fctzung f\u00fcr Non-kubeadm-Installationen aus dem Hauptzweig entfernt, und ein \u00dcbergangsprozess zu kubeadm wurde nicht angeboten. Infolgedessen hat das Unternehmen Southbridge einen eigenen Fork erstellt (mit Unterst\u00fctzung f\u00fcr kubeadm und schneller Behebung kritischer Probleme). <\/p>\n<p>Der Aktualisierungsprozess aller k8s-Cluster sieht so aus:<\/p>\n<ul>\n<li>Wir nehmen <i>Kubespray<\/i> von Southbridge, vergleichen mit unserem Branch und mergen.<\/li>\n<li>Wir rollen das Update in <i>Stress<\/i>-\u201eKube\u201c.<\/li>\n<li>Wir f\u00fchren das Update node f\u00fcr node (in Ansible \u201eserial: 1\u201c) durch in <i>Dev<\/i>-\u201eKube\u201c.<\/li>\n<li>Aktualisieren <i>Prod<\/i> am Samstagabend node f\u00fcr node.<\/li>\n<\/ul>\n<p>\nF\u00fcr die Zukunft gibt es Pl\u00e4ne, <i>Kubespray<\/i> durch etwas Schnelleres zu ersetzen und zu <i>kubeadm zu wechseln.<\/i>.<\/p>\n<p>Wir haben insgesamt drei \u201eCubes\u201c: Stress, Dev und Prod. Wir planen, noch einen weiteren (<i>Hot Standby<\/i>) Prod-Cube im zweiten Rechenzentrum zu starten. <i>Stress<\/i> und <i>Dev<\/i> Sie laufen in \u201eVirtuellen Maschinen\u201c (oVirt f\u00fcr Stress und VMWare Cloud f\u00fcr Dev). <i>Prod<\/i>-Der Cube l\u00e4uft auf \u201ebare metal\u201d: es sind identische Nodes mit 32 CPU-Threads, 64-128 GB RAM und 300 GB SSD RAID 10 \u2013 insgesamt 50 St\u00fcck. Drei \u201ed\u00fcnne\u201c Nodes sind f\u00fcr die \u201eMaster\u201c reserviert. <i>Prod<\/i>-Cubes: 16 GB RAM, 12 CPU-Threads.<\/p>\n<p>F\u00fcr den Prod-Bereich bevorzugen wir \u201ebare metal\u201c und vermeiden zus\u00e4tzliche Schichten wie <i>OpenStack<\/i>: wir wollen keine \u201elauten Nachbarn\u201c und CPU <i>Steal Time<\/i>. Au\u00dferdem erh\u00f6ht sich die Komplexit\u00e4t der Verwaltung etwa um das Doppelte bei in-house OpenStack.<\/p>\n<p>F\u00fcr CI\/CD der Cubes und anderer Infrastrukturkomponenten verwenden wir einen separaten GIT-Server, Helm 3 (der Umstieg von Helm 2 war recht schmerzhaft, aber wir freuen uns \u00fcber die Option <i>Atomic<\/i>), Jenkins, Ansible und Docker. Wir lieben Feature-Branches und Deployments in verschiedene Umgebungen aus einem einzigen Repository.<\/p>\n<h3>Fazit<\/h3>\n<p><img decoding=\"async\" alt=\"Kubernetes bei DomClick: Wie man ruhig schlafen kann, w\u00e4hrend man ein Cluster mit 1000 Mikrodiensten verwaltet\" src=\"\/wp-content\/uploads\/2020\/08\/34ddcd1f275c63c1ad821218d16b5abb.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSo sieht im Gro\u00dfen und Ganzen der DevOps-Prozess bei der Firma DomClick aus der Sicht eines Betriebstechnikers aus. Der Artikel ist weniger technisch geworden, als ich erwartet hatte: Halten Sie also die Augen offen f\u00fcr Neuigkeiten von DomClick auf Habr\u00e9: Es werden \u201eh\u00e4rtere\u201c Artikel zu Kubernetes und mehr kommen.<br \/>\n<br \/>Quelle: <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\/de\/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=\"de_DE\" \/>\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\/de\/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 bei DomClick: So verwalten Sie ein Cluster mit 1000 Mikrodiensten und schlafen dabei ruhig | ProHoster","description":"Mein Name ist Viktor Yagofarov, und ich bin als technischer Leiter f\u00fcr die Entwicklung der Kubernetes-Plattform im Unternehmen DomClick t\u00e4tig. Ich m\u00f6chte \u00fcber den Aufbau unserer DevOps-Prozesse sprechen, die Besonderheiten des Betriebs eines der gr\u00f6\u00dften k8s-Cluster in Russland sowie die DevOps\/SRE-Praktiken, die unser Team anwendet. Das Ops-Team.","canonical_url":"https:\/\/prohoster.info\/de\/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":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/91199","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=91199"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/91199\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/91200"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=91199"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=91199"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=91199"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}