Lösen von Microservice-Konnektivitätsproblemen mit Netzwerkprotokollen in Calico Enterprise





Das Netzwerk ist die Grundlage für verteilte Anwendungen. Eine verteilte Anwendung verfügt über mehrere Mikrodienste, von denen jeder auf einer Reihe von Pods ausgeführt wird, die sich häufig auf verschiedenen Knoten befinden. Problembereiche in einer verteilten Anwendung können auf Netzwerkebene (Flow, Netzwerkprotokolle) oder auf der Ebene der Nichtverfügbarkeit von Anwendungsressourcen (Metriken) oder der Nichtverfügbarkeit von Komponenten (Ablaufverfolgung) liegen.



Die Konnektivität auf Netzwerkebene kann durch verschiedene Faktoren wie Routing-Einstellungen, IP-Pooling, Netzwerkrichtlinien usw. beeinflusst werden. Wenn Dienst A nicht über das Netzwerk mit Dienst B kommunizieren kann oder eine externe Anwendung keine Verbindung zu Dienst A herstellen kann, werden Netzwerkprotokolle zu einer wichtigen Datenquelle für die Behebung von Verbindungsproblemen. Wie bei einem herkömmlichen Netzwerk können Clusteradministratoren mithilfe von Netzwerkprotokollen das Kubernetes-Mikroservice-Netzwerk überwachen.











Netzwerkprotokolle haben mehrere Anwendungsfälle



Netzwerkprotokolle können verwendet werden, um die spezifischen Anforderungen verschiedener Teams (DevOps, SecOps, Plattform, Netzwerk) zu erfüllen. Der Wert von Kubernetes-Netzwerkprotokollen liegt in den gesammelten Informationen wie dem detaillierten Kontext des Endpunkts / Endpunkts (z. B. Pods, Labels, Namespaces) und den Netzwerkrichtlinien, die beim Einrichten der Verbindung bereitgestellt werden. In einer IT-Umgebung können DevOps-, SecOps-, Netzwerk- und Plattformteams Netzwerkprotokolle für ihre Anwendungsfälle nutzen, die in ihrem Wissensbereich nützlich sind. Nachfolgend zeigen wir einige Beispiele.







Richtlinienerstellung und Bedrohungserkennung mit Datenflussprotokollen in Calico Enterprise.



Calico Enterprise generiert bei jeder Verbindung zum Pod kontextbezogene Protokolle von Netzwerkströmen. Das Protokoll wird in einer Datei auf dem Knoten gespeichert, die dann vom fließenden Agenten verarbeitet und an das konfigurierte Ziel gesendet wird.







Wie im obigen Diagramm gezeigt, werden Protokolle standardmäßig an die Elasticsearch-Engine gesendet, die im Lieferumfang von Calico Enterprise enthalten ist. Sie können die Weiterleitung von Stream-Protokollen an Ihre SOC-Plattform konfigurieren. Wir empfehlen Ihnen, eine einzige Plattform für alle Ihre Magazine zu haben. Protokolle sind ein wesentliches Überwachungs- und Analysewerkzeug für das Betriebsteam, das bereits klar definierte Prozesse auf einer zentralen Protokollierungsplattform erstellt hat. Dies ist wichtig für Ihre Planung.



Datenflussprotokollmerkmale



Stream-Protokolle haben viel Speicheraufwand. Standardmäßig speichert Calico Enterprise nur Daten der letzten sieben Tage. Auf diese Weise kann Calico Enterprise Funktionen bereitstellen, die speziell entwickelt wurden, um die Richtlinienentwicklung und die Fehlerbehebung bei Konnektivität nahezu in Echtzeit zu vereinfachen.



  • Vorgeschlagene Richtlinien zum Erstellen von Richtlinien ermöglichen Entwicklern das automatische Generieren von Netzwerkrichtlinien zum Schutz ihrer Dienste
  • Mit dem Workflow für Richtlinien (Empfehlung, Vorschau, schrittweise Richtlinien) können SecOps- und DevOps-Teams Richtlinien effizient erstellen und unauffällig bereitstellen
  • Mithilfe der Bedrohungserkennung können SecOps-Teams jeden Datenfluss zu einer bestimmten IP-Adresse oder Domäne verfolgen und Bedrohungen identifizieren


Das Standardflussprotokoll in Calico Enterprise enthält alle erforderlichen Kontextinformationen:



  • Kubernetes-Kontext (Sub, Namespace, Labels, Richtlinien)
  • Absender-IP-Adresse für externe Quellen, falls über Ingress verfügbar
  • Start_time, end_time, action, bytes_in, bytes_out, dest_ip, dest_name, dest_name_aggr, dest_namespace, dest_port, dest_type, dest_labels, reporter, num_flows, num_flows_completed, num_flows_started, http_requests_alrequests source_in_ source_namespace, source_port, source_type, source_labels, original_source_ips, num_original_source_ips


Das DNS-Protokoll wird für jeden Pod im Laufe der Zeit aggregiert und enthält die folgenden Informationen:



  • Startzeit, Endzeit, Typ, Anzahl, Client-IP, Client-Name, Client-Name_aggr, Client-Namespace, Client-Labels, Q-Name, Q-Typ, Q-Klasse, R-Code, R-Sets, Server


Die Protokolleinträge sind in Kibana als Elasticsearch-Indizes verfügbar. Sie haben die vollständige Kontrolle über Indizierungsparameter, Aufbewahrungszeit und Speicher. Das Beibehalten der Standardeinstellungen funktioniert für die meisten Bereitstellungen gut.



Reduzieren Sie die Betriebskosten, indem Sie den Thread-Protokollspeicher optimieren



Calico Enterprise sammelt verschiedene Protokolle (Netzwerk / Flow, Audit, DNS). Stream-Protokolle sind in Bezug auf den Speicher am teuersten und machen über 95% des gesamten Speichers aus. Häufig gibt es für jeden voll geladenen Knoten einen Fluss von 5.000 pro Sekunde. Bei bescheidenen 200 Bytes pro Fluss ergibt dies 1 MB / s (Megabyte). Der tägliche Speicherbedarf für jeden Knoten beträgt 86 GB für Thread-Protokolle. Für einen Cluster von 100 Knoten beträgt die tägliche Thread-Protokollanforderung 8 TB + !!! Offensichtlich skaliert dies nicht. Und was noch wichtiger ist: Müssen Sie wirklich so viele Daten speichern? In der Regel nimmt der Wert der in den Protokollen enthaltenen Daten im Laufe der Zeit exponentiell ab und ist nur für Fehlerbehebungs- und Compliance-Zwecke relevant.



Aus diesem Grund verfügt Calico Enterprise standardmäßig über eine Aggregation, wodurch die Anforderungen an den Thread-Protokollspeicher um das 100-fache reduziert werden! Wir tun dies, ohne die Daten (Sichtbarkeit, Überwachung, Fehlerbehebung) zu beeinträchtigen, die unsere Kunden aus Stream-Protokollen erhalten. Protokolle werden über einen bestimmten Zeitraum nach Zielport aggregiert. Auf diese Weise müssen Sie sich keine Gedanken über die Kosten für das Speichern von Stream-Protokollen machen, wenn Sie die Standardeinstellungen in Calico Enterprise verwenden. Eine andere Möglichkeit, mit Calico Enterprise Ihre Speicheranforderungen zu senken, besteht darin, sie auszuschließen. Sie können ganz einfach bestimmte Namespaces oder Installationen anpassen, die von der Erstellung von Stream-Protokollen ausgeschlossen werden.



Möchten Sie Thread-Protokolle eingehend untersuchen?



Thread-Protokolle sind standardmäßig aktiviert. Ausführliche Informationen zur Konfiguration finden Sie in der folgenden Dokumentation:






All Articles