{"id":32766,"date":"2019-10-31T21:48:48","date_gmt":"2019-10-31T18:48:48","guid":{"rendered":"https:\/\/prohoster.info\/blog\/kak-zapustit-istio-ispolzuya-kubernetes-v-production-chast-1\/"},"modified":"2019-10-31T21:48:48","modified_gmt":"2019-10-31T18:48:48","slug":"kak-zapustit-istio-ispolzuya-kubernetes-v-production-chast-1","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kak-zapustit-istio-ispolzuya-kubernetes-v-production-chast-1","title":{"rendered":"Wie man Istio mit Kubernetes in der Produktion ausf\u00fchrt. Teil 1","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Was ist <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\">Istio<\/a><\/noindex>? \u042d\u0442\u043e \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 Service mesh, \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u043d\u0430\u0434 \u0441\u0435\u0442\u044c\u044e. \u041c\u044b \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0432\u0435\u0441\u044c \u0438\u043b\u0438 \u0447\u0430\u0441\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441 \u043d\u0438\u043c. \u041a\u0430\u043a\u043e\u0439 \u0438\u043c\u0435\u043d\u043d\u043e? \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0435\u043b\u0430\u0435\u043c \u0443\u043c\u043d\u044b\u0439 \u0440\u043e\u0443\u0442\u0438\u043d\u0433, \u0438\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043f\u043e\u0434\u0445\u043e\u0434 circuit breaker, \u043c\u043e\u0436\u0435\u043c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u00abcanary deployment\u00bb, \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u044f \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0430 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u0430 \u043c\u043e\u0436\u0435\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043f\u043e\u0445\u043e\u0434\u044b \u0438\u0437 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0441\u0435\u0442\u044c. \u0415\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c policy \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043f\u043e\u0445\u043e\u0434\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438. \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u0441\u044e \u043a\u0430\u0440\u0442\u0443 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e \u0441\u0435\u0442\u0438 \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0443\u043d\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u0431\u043e\u0440 \u043c\u0435\u0442\u0440\u0438\u043a \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.<\/p>\n<p>\u00dcber den Mechanismus der Funktionsweise k\u00f6nnen Sie lesen in <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/docs\/concepts\/\">offiziellen Dokumentation<\/a><\/noindex>. Istio ist wirklich ein leistungsstarkes Werkzeug, das viele Aufgaben und Probleme l\u00f6sen kann. In diesem Artikel m\u00f6chte ich die h\u00e4ufigsten Fragen beantworten, die normalerweise zu Beginn der Arbeit mit Istio auftauchen. Das wird Ihnen helfen, schneller mit ihm zurechtzukommen.<\/p>\n<p><img decoding=\"async\" alt=\"Wie man Istio mit Kubernetes in der Produktion ausf\u00fchrt. Teil 1\" src=\"\/wp-content\/uploads\/2019\/04\/7ab676ec42cacafc97099d5af9f6332a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Funktionsweise<\/h3>\n<p>\nIstio besteht aus zwei Hauptbereichen \u2013 dem Control Plane und dem Data Plane. Das Control Plane enth\u00e4lt die Hauptkomponenten, die den ordnungsgem\u00e4\u00dfen Betrieb der anderen Teile gew\u00e4hrleisten. In der aktuellen Version (1.0) hat das Control Plane drei Hauptkomponenten: Pilot, Mixer und Citadel. Citadel werden wir nicht behandeln, da es f\u00fcr die Erstellung von Zertifikaten zur Gew\u00e4hrleistung der gegenseitigen TLS-Verschl\u00fcsselung zwischen den Diensten ben\u00f6tigt wird. Schauen wir uns die Funktionen und den Zweck von Pilot und Mixer genauer an.<\/p>\n<p><img decoding=\"async\" alt=\"Wie man Istio mit Kubernetes in der Produktion ausf\u00fchrt. Teil 1\" src=\"\/wp-content\/uploads\/2019\/04\/1e2b76b5ec12343dee7728e505321908.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPilot ist die zentrale Steuerkomponente, die alle Informationen \u00fcber die verf\u00fcgbaren Ressourcen in unserem Cluster \u2013 Dienste, deren Endpunkte und Routing-Regeln (z.B. Regeln f\u00fcr Canary-Deployments oder Circuit-Breaker-Regeln) \u2013 verteilt.<\/p>\n<p>Mixer ist eine optionale Komponente des Control Plane, die die M\u00f6glichkeit bietet, Metriken, Protokolle und alle Informationen \u00fcber die Netzwerkinteraktion zu sammeln. Au\u00dferdem \u00fcberwacht er die Einhaltung von Richtlinien und die Einhaltung von Ratenlimits.<\/p>\n<p>Der Datenverkehr wird durch Sidecar-Proxy-Container realisiert. Standardm\u00e4\u00dfig wird ein leistungsstarker <noindex><a rel=\"nofollow\" href=\"https:\/\/www.envoyproxy.io\/\">Proxy-Server Envoy<\/a><\/noindex>. Dieser kann durch eine andere Implementierung, wie NGINX (nginmesh), ersetzt werden.<\/p>\n<p>Damit Istio f\u00fcr Anwendungen vollst\u00e4ndig transparent arbeitet, gibt es ein System f\u00fcr die automatische Einspeisung. Die neueste Implementierung ist f\u00fcr Kubernetes-Versionen 1.9+ geeignet (mutational admission webhook). F\u00fcr Kubernetes-Versionen 1.7 und 1.8 besteht die M\u00f6glichkeit, Initializer zu verwenden.<\/p>\n<p>Sidecar-Container verbinden sich \u00fcber das GRPC-Protokoll mit Pilot, was die Push-Modellierung von \u00c4nderungen im Cluster optimiert. GRPC wird in Envoy seit Version 1.6 verwendet und in Istio seit Version 0.8, dort handelt es sich um den Pilot-Agent \u2013 eine Golang-H\u00fclle um Envoy, die die Startparameter konfiguriert.<\/p>\n<p>Pilot und Mixer sind vollst\u00e4ndig zustandslose Komponenten, alle Zust\u00e4nde werden im Arbeitsspeicher gehalten. Die Konfiguration f\u00fcr sie wird in Form von Kubernetes Custom Resources angegeben, die in etcd gespeichert werden. <br \/>\nDer Istio-Agent erh\u00e4lt die Adresse von Pilot und \u00f6ffnet einen GRPC-Stream zu ihm. <\/p>\n<p>Wie bereits erw\u00e4hnt, implementiert Istio die gesamte Funktionalit\u00e4t vollst\u00e4ndig transparent f\u00fcr Anwendungen. Lassen Sie uns kl\u00e4ren, wie das funktioniert. Der Algorithmus ist folgenderma\u00dfen:<\/p>\n<ol>\n<li>Wir deployen eine neue Version des Dienstes.<\/li>\n<li>Je nach Ansatz des Injectings werden der istio-init Container und der istio-agent Container (envoy) w\u00e4hrend der Anwendung der Konfiguration hinzugef\u00fcgt, oder sie k\u00f6nnen bereits manuell in die Beschreibung der Pod-Entit\u00e4t in Kubernetes eingef\u00fcgt werden.<\/li>\n<li>Der istio-init Container ist ein Skript, das die iptables-Regeln f\u00fcr den Pod anwendet. Es gibt zwei Optionen zur Konfiguration der Verkehrsumleitung zum istio-agent Container: die Verwendung von Redirect-Regeln f\u00fcr iptables, oder <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kristrev\/tproxy-example\/blob\/master\/tproxy_example.c\">TPROXY<\/a><\/noindex>. Zum Zeitpunkt der Erstellung dieses Artikels wird standardm\u00e4\u00dfig der Ansatz mit Redirect-Regeln verwendet. Im istio-init besteht die M\u00f6glichkeit, festzulegen, welcher Verkehr abgefangen und an den istio-agent weitergeleitet werden soll. Zum Beispiel, um gesamten eingehenden und gesamten ausgehenden Verkehr abzufangen, m\u00fcssen die Parameter <code>-i<\/code> und <code>-b<\/code> auf <code>*<\/code>. Bestimmte Ports, die abgefangen werden sollen, k\u00f6nnen angegeben werden. Um einen bestimmten Subnetz nicht abzufangen, kann dies mit einem Flag angegeben werden. <code>-x<\/code>.<\/li>\n<li>Nach dem Starten der Init-Container werden die Hauptcontainer, einschlie\u00dflich des Pilot-Agenten (envoy), gestartet. Dieser verbindet sich \u00fcber gRPC mit dem bereits bereitgestellten Pilot und erh\u00e4lt Informationen \u00fcber alle vorhandenen Dienste und Routing-Politiken im Cluster. Basierend auf diesen Daten konfiguriert er die Cluster und definiert direkt die Endpunkte unserer Anwendungen im Kubernetes-Cluster. Es ist auch wichtig zu beachten, dass envoy die Listener dynamisch konfiguriert (IP-Port-Paare), die er beginnen soll zuzuh\u00f6ren. Daher werden, wenn Anfragen in den Pod eingehen, diese mithilfe von iptables-Redirect-Regeln an den Sidecar geleitet, wodurch envoy die Verbindungen erfolgreich verarbeiten und verstehen kann, wohin der Traffic weitergeleitet werden muss. In diesem Schritt werden auch Informationen an Mixer gesendet, den wir sp\u00e4ter betrachten werden, sowie das Senden von Tracing-Spans.<\/li>\n<\/ol>\n<p>\nAm Ende erhalten wir ein ganzes Netzwerk von Envoy-Proxy-Servern, die wir von einem einzigen Punkt (Pilot) aus konfigurieren k\u00f6nnen. Alle eingehenden und ausgehenden Anfragen laufen \u00fcber Envoy. Dabei wird ausschlie\u00dflich der TCP-Datenverkehr abgefangen. Das bedeutet, dass die Kubernetes-Service-IP \u00fcber kube-dns per UDP ohne \u00c4nderungen aufgel\u00f6st wird. Nach der Aufl\u00f6sung erfolgt die Abfangung der ausgehenden Anfrage und die Verarbeitung durch Envoy, der dann entscheidet, an welchen Endpunkt die Anfrage gesendet werden soll (oder ob sie nicht gesendet werden soll, abh\u00e4ngig von Zugriffsrichtlinien oder dem Circuit-Breaker-Algorithmus).<\/p>\n<p>Jetzt haben wir den Pilot verstanden, und als n\u00e4chstes m\u00fcssen wir herausfinden, wie der Mixer funktioniert und wof\u00fcr er ben\u00f6tigt wird. Die offizielle Dokumentation dazu kann gelesen werden. <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/docs\/concepts\/policies-and-telemetry\/overview\/\">hier<\/a><\/noindex>.<\/p>\n<p>Der Mixer besteht aus zwei Komponenten: istio-telemetry und istio-policy (bis Version 0.8 gab es nur eine Komponente, den istio-mixer). Beide Komponenten bilden den Mixer, wobei jede ihre eigene Aufgabe hat. Istio telemetry empf\u00e4ngt \u00fcber GRPC von den Sidecar-Containern Report-Informationen dar\u00fcber, wohin Anfragen gehen und mit welchen Parametern. Istio-policy verarbeitet Check-Anfragen zur \u00dcberpr\u00fcfung der Einhaltung der Policy-Regeln. Policy-Checks werden selbstverst\u00e4ndlich nicht f\u00fcr jede Anfrage durchgef\u00fchrt, sondern auf dem Client (im Sidecar) f\u00fcr eine bestimmte Zeit zwischengespeichert. Report-Checks werden in Batch-Anfragen gesendet. Wie man das konfiguriert und welche genauen Parameter gesendet werden m\u00fcssen, schauen wir uns etwas sp\u00e4ter an. <\/p>\n<p>Der Mixer wird als hochverf\u00fcgbares Element konzipiert, das einen kontinuierlichen Betrieb zur Sammlung und Verarbeitung von Telemetriedaten gew\u00e4hrleistet. Das System funktioniert letztlich als mehrstufiger Puffer. Zun\u00e4chst werden die Daten in den Sidecar-Containern gepuffert, danach im Mixer selbst und schlie\u00dflich an die sogenannten Mixer-Backends gesendet. Wenn eines der Systemkomponenten ausf\u00e4llt, w\u00e4chst der Puffer, und nach der Wiederherstellung des Systems wird er geleert. Die Mixer-Backends fungieren als Endpunkte f\u00fcr den Versand von Telemetriedaten: statsd, newrelic usw. Es ist m\u00f6glich, ein eigenes Backend zu schreiben, was relativ einfach ist, und wir werden anschauen, wie das gemacht wird.<\/p>\n<p><img decoding=\"async\" alt=\"Wie man Istio mit Kubernetes in der Produktion ausf\u00fchrt. Teil 1\" src=\"\/wp-content\/uploads\/2019\/04\/e7dd11d5ee26a692e1cd213578d47700.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZusammenfassend l\u00e4sst sich sagen, dass das Schema f\u00fcr die Arbeit mit istio-telemetry folgenderma\u00dfen aussieht.<\/p>\n<ol>\n<li>Service 1 sendet eine Anfrage an Service 2.<\/li>\n<li>Beim Verlassen von Service 1 wird die Anfrage in seinen eigenen Sidecar verpackt.<\/li>\n<li>Der Sidecar-Envoy \u00fcberwacht, wie die Anfrage an Service 2 erfolgt, und bereitet die erforderlichen Informationen vor.<\/li>\n<li>Diese werden dann \u00fcber die Report-Anfrage an istio-telemetry gesendet.<\/li>\n<li>Istio-telemetry bestimmt, ob dieser Report an die Backends gesendet werden muss, an welche genau und welche Daten gesendet werden sollen.<\/li>\n<li>Istio-telemetry sendet die Reportdaten an die Backends, wenn dies erforderlich ist.<\/li>\n<\/ol>\n<p>\nLassen Sie uns jetzt betrachten, wie man in einem Istio-System, das nur aus den grundlegenden Komponenten (Pilot und Sidecar Envoy) besteht, bereitstellt.<\/p>\n<p>Zun\u00e4chst werfen wir einen Blick auf die Hauptkonfiguration (Mesh), die der Pilot liest:<\/p>\n<pre><code class=\"plaintext\">apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: istio\n  namespace: istio-system\n  labels:\n    app: istio\n    service: istio\ndata:\n  mesh: |-\n\n    # derzeit senden wir noch keine Tracing-Informationen (Pilot konfiguriert die Envoys so, dass keine Sendung erfolgt)\n    enableTracing: false\n\n    # derzeit geben wir keine Mixer-Endpunkte an, damit die Sidecar-Container keine Informationen dorthin senden\n    #mixerCheckServer: istio-policy.istio-system:15004\n    #mixerReportServer: istio-telemetry.istio-system:15004\n\n    # wir setzen den Zeitintervall, in dem Envoy Pilot erneut anfragt (das ist f\u00fcr die alte Version des Envoy-Proxys)\n    rdsRefreshDelay: 5s\n\n    # Standardkonfiguration f\u00fcr den Envoy-Sidecar\n    defaultConfig:\n      # analog zu rdsRefreshDelay\n      discoveryRefreshDelay: 5s\n\n      # bleibt standardm\u00e4\u00dfig (Pfad zur Konfiguration und Binary des Envoy)\n      configPath: \"\/etc\/istio\/proxy\"\n      binaryPath: \"\/usr\/local\/bin\/envoy\"\n\n      # Standardname des gestarteten Sidecar-Containers (wird z. B. in Servicenamen bei der \u00dcbertragung von Tracing-Spans verwendet)\n      serviceCluster: istio-proxy\n\n      # Zeit, die Envoy wartet, bevor alle eingehenden Verbindungen zwangsweise beendet werden\n      drainDuration: 45s\n      parentShutdownDuration: 1m0s\n\n      # standardm\u00e4\u00dfig werden REDIRECT-Regeln von iptables verwendet. Kann auf TPROXY ge\u00e4ndert werden.\n      #interceptionMode: REDIRECT\n\n      # Port, an dem das Admin-Panel jedes Sidecar-Containers (Envoy) gestartet wird\n      proxyAdminPort: 15000\n\n      # Adresse, an die die Traces \u00fcber das Zipkin-Protokoll gesendet werden (zu Beginn haben wir das Senden selbst deaktiviert, daher wird dieses Feld derzeit nicht verwendet)\n      zipkinAddress: tracing-collector.tracing:9411\n\n      # statsd-Adresse zum Senden der Metriken der Envoy-Container (deaktivieren)\n      # statsdUdpAddress: aggregator:8126\n\n      # Unterst\u00fctzung der Option Mutual TLS deaktivieren\n      controlPlaneAuthPolicy: NONE\n\n      # Adresse, an der istio-pilot lauscht, um Informationen \u00fcber Service Discovery an alle Sidecar-Container zu kommunizieren\n      discoveryAddress: istio-pilot.istio-system:15007\n<\/code><\/pre>\n<p>\nAlle zentralen Steuerungskomponenten (Control Plane) werden im Namespace istio-system in Kubernetes platziert.<\/p>\n<p>Wir m\u00fcssen mindestens nur den Pilot bereitstellen. Dazu verwenden wir <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/istio\/istio\/blob\/release-1.0\/install\/kubernetes\/helm\/istio\/charts\/pilot\/templates\/deployment.yaml\">diese Konfiguration.<\/a><\/noindex><\/p>\n<p>Und konfigurieren manuell das Injecting-Container-Proxy.<\/p>\n<p>Initialisierungscontainer:<\/p>\n<pre><code class=\"plaintext\">initContainers:\n - name: istio-init\n   args:\n   - -p\n   - \"15001\"\n   - -u\n   - \"1337\"\n   - -m\n   - REDIRECT\n   - -i\n   - '*'\n   - -b\n   - '*'\n   - -d\n   - \"\"\n   image: istio\/proxy_init:1.0.0\n   imagePullPolicy: IfNotPresent\n   resources:\n     limits:\n       memory: 128Mi\n   securityContext:\n     capabilities:\n       add:\n       - NET_ADMIN\n<\/code><\/pre>\n<p>\nUnd Sidecar:<\/p>\n<pre><code class=\"plaintext\">       name: istio-proxy\n       args:\n         - \"bash\"\n         - \"-c\"\n         - |\n           exec \/usr\/local\/bin\/pilot-agent proxy sidecar \n           --configPath \n           \/etc\/istio\/proxy \n           --binaryPath \n           \/usr\/local\/bin\/envoy \n           --serviceCluster \n           service-name \n           --drainDuration \n           45s \n           --parentShutdownDuration \n           1m0s \n           --discoveryAddress \n           istio-pilot.istio-system:15007 \n           --discoveryRefreshDelay \n           1s \n           --connectTimeout \n           10s \n           --proxyAdminPort \n           \"15000\" \n           --controlPlaneAuthPolicy \n           NONE\n         env:\n         - name: POD_NAME\n           valueFrom:\n             fieldRef:\n               fieldPath: metadata.name\n         - name: POD_NAMESPACE\n           valueFrom:\n             fieldRef:\n               fieldPath: metadata.namespace\n         - name: INSTANCE_IP\n           valueFrom:\n             fieldRef:\n               fieldPath: status.podIP\n         - name: ISTIO_META_POD_NAME\n           valueFrom:\n             fieldRef:\n               fieldPath: metadata.name\n         - name: ISTIO_META_INTERCEPTION_MODE\n           value: REDIRECT\n         image: istio\/proxyv2:1.0.0\n         imagePullPolicy: IfNotPresent\n         resources:\n           requests:\n             cpu: 100m\n             memory: 128Mi\n           limits:\n             memory: 2048Mi\n         securityContext:\n           privileged: false\n           readOnlyRootFilesystem: true\n           runAsUser: 1337\n         volumeMounts:\n         - mountPath: \/etc\/istio\/proxy\n           name: istio-envoy\n<\/code><\/pre>\n<p>\nUm sicherzustellen, dass alles erfolgreich gestartet wird, m\u00fcssen ein ServiceAccount, ClusterRole, ClusterRoleBinding sowie CRD f\u00fcr Pilot eingerichtet werden, deren Beschreibungen zu finden sind. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/istio\/istio\/tree\/release-1.0\/install\/kubernetes\/helm\/istio\/charts\/pilot\/templates\">hier<\/a><\/noindex>. <\/p>\n<p>Letztendlich muss der Dienst, in den wir den Sidecar mit Envoy injizieren, erfolgreich starten, alle Discovery-Daten vom Pilot zu erhalten und Anfragen verarbeiten.<\/p>\n<p>Es ist wichtig zu verstehen, dass alle Komponenten der Steuerungsebene zustandslose Anwendungen sind und problemlos horizontal skaliert werden k\u00f6nnen. Alle Daten befinden sich in etcd in Form von benutzerdefinierten Kubernetes-Ressourcendefinitionen.<\/p>\n<p>Zudem bietet Istio (momentan experimentell) die M\u00f6glichkeit, au\u00dferhalb des Clusters zu laufen sowie Service-Discovery zwischen mehreren Kubernetes-Clustern zu betrachten und zu teilen. Mehr dazu erfahren Sie <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/docs\/setup\/kubernetes\/multicluster-install\/\">hier<\/a><\/noindex>.<\/p>\n<p>Bei der Multicluster-Installation sollten folgende Einschr\u00e4nkungen ber\u00fccksichtigt werden:<\/p>\n<ol>\n<li>Pod CIDR und Service CIDR m\u00fcssen in allen Clustern einzigartig sein und d\u00fcrfen sich nicht \u00fcberschneiden.<\/li>\n<li>Alle Pod CIDR sollten von allen Pod CIDR zwischen den Clustern erreichbar sein.<\/li>\n<li>Alle Kubernetes API-Server m\u00fcssen f\u00fcreinander erreichbar sein.<\/li>\n<\/ol>\n<p>\nDies sind grundlegende Informationen, die Ihnen helfen, mit Istio zu beginnen. Es gibt jedoch viele Fallstricke. Dazu geh\u00f6ren beispielsweise die Besonderheiten des Routings von externem Traffic (nach au\u00dfen ins Cluster), die Ans\u00e4tze zur Debugging von Sidecars, Profilierung, die Konfiguration des Mixers und das Schreiben eines benutzerdefinierten Mixer-Backends, die Einstellung des Tracing-Mechanismus und dessen Funktionsweise mit Envoy.<br \/>\nAll dies werden wir in den kommenden Beitr\u00e4gen behandeln. Stellen Sie Ihre Fragen, ich werde mein Bestes tun, um sie zu beantworten.<br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/avito\/blog\/419319\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Istio? \u042d\u0442\u043e \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 Service mesh, \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u043d\u0430\u0434 \u0441\u0435\u0442\u044c\u044e. \u041c\u044b \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0432\u0435\u0441\u044c \u0438\u043b\u0438 \u0447\u0430\u0441\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441 \u043d\u0438\u043c. \u041a\u0430\u043a\u043e\u0439 \u0438\u043c\u0435\u043d\u043d\u043e? \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0435\u043b\u0430\u0435\u043c \u0443\u043c\u043d\u044b\u0439 \u0440\u043e\u0443\u0442\u0438\u043d\u0433, \u0438\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043f\u043e\u0434\u0445\u043e\u0434 circuit breaker, \u043c\u043e\u0436\u0435\u043c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u00abcanary deployment\u00bb, \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u044f \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0430 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u0430 \u043c\u043e\u0436\u0435\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24545,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32766","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=\"\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Istio? \u042d\u0442\u043e \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 Service mesh, \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u043d\u0430\u0434 \u0441\u0435\u0442\u044c\u044e. \u041c\u044b \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0432\u0435\u0441\u044c \u0438\u043b\u0438 \u0447\u0430\u0441\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441 \u043d\u0438\u043c. \u041a\u0430\u043a\u043e\u0439 \u0438\u043c\u0435\u043d\u043d\u043e? \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0435\u043b\u0430\u0435\u043c \u0443\u043c\u043d\u044b\u0439 \u0440\u043e\u0443\u0442\u0438\u043d\u0433, \u0438\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043f\u043e\u0434\u0445\u043e\u0434 circuit breaker, \u043c\u043e\u0436\u0435\u043c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u00abcanary deployment\u00bb, \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u044f \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0430 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u0430 \u043c\u043e\u0436\u0435\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c\" \/>\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\/kak-zapustit-istio-ispolzuya-kubernetes-v-production-chast-1\" \/>\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\udd47\u041a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Istio, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Kubernetes \u0432 production. \u0427\u0430\u0441\u0442\u044c 1 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Istio? \u042d\u0442\u043e \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 Service mesh, \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u043d\u0430\u0434 \u0441\u0435\u0442\u044c\u044e. \u041c\u044b \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0432\u0435\u0441\u044c \u0438\u043b\u0438 \u0447\u0430\u0441\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441 \u043d\u0438\u043c. \u041a\u0430\u043a\u043e\u0439 \u0438\u043c\u0435\u043d\u043d\u043e? \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0435\u043b\u0430\u0435\u043c \u0443\u043c\u043d\u044b\u0439 \u0440\u043e\u0443\u0442\u0438\u043d\u0433, \u0438\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043f\u043e\u0434\u0445\u043e\u0434 circuit breaker, \u043c\u043e\u0436\u0435\u043c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u00abcanary deployment\u00bb, \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u044f \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0430 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u0430 \u043c\u043e\u0436\u0435\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kak-zapustit-istio-ispolzuya-kubernetes-v-production-chast-1\" \/>\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:48:48+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:48:48+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\udd47Wie man Istio mit Kubernetes in der Produktion startet. Teil 1 | ProHoster","description":"Was ist Istio? Es handelt sich um ein sogenanntes Service Mesh, eine Technologie, die eine Abstraktionsebene \u00fcber das Netzwerk hinzuf\u00fcgt. Wir greifen auf den gesamten oder einen Teil des Traffics im Cluster zu und f\u00fchren eine bestimmte Reihe von Operationen damit aus. Welche? Zum Beispiel intelligentes Routing, die Umsetzung eines Circuit Breakers, die M\u00f6glichkeit, ein \u201eCanary Deployment\u201c zu realisieren, indem wir den Traffic schrittweise auf eine neue Version des Services umleiten, oder wir k\u00f6nnen Einschr\u00e4nkungen vornehmen.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kak-zapustit-istio-ispolzuya-kubernetes-v-production-chast-1","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\udd47\u041a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Istio, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Kubernetes \u0432 production. \u0427\u0430\u0441\u0442\u044c 1 | ProHoster","og:description":"\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Istio? \u042d\u0442\u043e \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 Service mesh, \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u043d\u0430\u0434 \u0441\u0435\u0442\u044c\u044e. \u041c\u044b \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0432\u0435\u0441\u044c \u0438\u043b\u0438 \u0447\u0430\u0441\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441 \u043d\u0438\u043c. \u041a\u0430\u043a\u043e\u0439 \u0438\u043c\u0435\u043d\u043d\u043e? \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0435\u043b\u0430\u0435\u043c \u0443\u043c\u043d\u044b\u0439 \u0440\u043e\u0443\u0442\u0438\u043d\u0433, \u0438\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043f\u043e\u0434\u0445\u043e\u0434 circuit breaker, \u043c\u043e\u0436\u0435\u043c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u00abcanary deployment\u00bb, \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u044f \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0430 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u0430 \u043c\u043e\u0436\u0435\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kak-zapustit-istio-ispolzuya-kubernetes-v-production-chast-1","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:48:48+00:00","article:modified_time":"2019-10-31T18:48:48+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32766","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-01-21 12:27:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:53:24","updated":"2026-01-21 12:27:19"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/32766","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=32766"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/32766\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/24545"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=32766"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=32766"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=32766"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}