Flusslogs verwalten

Mit Flow-Logs können Sie Metadaten zum Netzwerkverkehr, einschließlich 5-Tupeln, in Google Distributed Cloud (GDC) air-gapped im Observability-Stack in Form von abfragbaren Logs speichern. Mit diesen Logs können Sie:

  • Trafficflüsse für einen bestimmten Dienst in einer Organisation nachvollziehen.
  • Probleme mit dem Netzwerkzustand einer Kubernetes-Arbeitslast verstehen und identifizieren.
  • Kubernetes-Netzwerkrichtlinien prüfen

Das Flow-Log ist eine GDC-Funktion, die auf dem Open-Source-Projekt Hubble basiert: https://github.com/cilium/hubble. Konfigurieren Sie Flusslogs mit der Ressource FlowLog aus der Networking API.

Hinweise

  • Sie benötigen eine Autorisierung, um Flow-Logs in der GDC Console zu verwalten oder aufzurufen. Wenn Sie Flow-Logs ansehen oder verwalten möchten, bitten Sie Ihren IAM-Administrator der Organisation, Ihnen die entsprechende Flow-Log-Rolle zuzuweisen.

    Informationen zum Festlegen von Rollenbindungen über die GDC-Konsole finden Sie unter Zugriff auf Ressourcen gewähren.

  • Bevor Sie Flow-Logs abfragen und in Dashboards ansehen können, müssen Sie Zugriff auf die Monitoring-Instanz erhalten. Weitere Informationen finden Sie unter Messwerte abfragen und ansehen.

Flow-Log erstellen

Erstellen Sie ein Flow-Log, um Metadaten zum Netzwerk-Traffic zu speichern, die nach einer bestimmten Reihe von Spezifikationen gefiltert werden.

Flow-Log mit Protokoll- und Namespace-Filtern erstellen

  1. Erstellen Sie eine Datei mit dem Namen example-flowlog.yaml und mit folgendem Inhalt:

    apiVersion: networking.gdc.goog/v1
    kind: FlowLog
    metadata:
      name: "FLOW_LOG_NAME"
      namespace: "platform"
    spec:
      filters:
        - l4Protocols:
            - tcp
          source:
            namespacePodSelectors:
              - namespace: gpc-system
              - namespace: kube-system
          destination:
            namespacePodSelectors:
              - namespace: kube-system
      lifetime:
        duration: "1h"
    

    Ersetzen Sie FLOW_LOG_NAME durch den ausgewählten Namen für das Flow-Log.

    In diesem Beispiel werden im Flow-Log alle Flows erfasst, für die eine TCP-Verbindung von einem beliebigen Pod im Namespace gpc-system oder kube-system zu einem beliebigen Pod im Namespace kube-system gestartet wurde. Die Aufzeichnung von Logs wird eine Stunde nach der Erstellung des Objekts beendet.

  2. Erstellen Sie das Flusslogobjekt:

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yaml
    

    Ersetzen Sie MANAGEMENT_API_SERVER durch den kubeconfig-Pfad des zonalen Management API-Servers.

  3. Prüfen Sie, ob der Wert FLOW_LOG_NAME richtig abgeglichen wurde und ob der Logging-Prozess gestartet wurde. Sehen Sie dazu das Feld Status an:

    kubectl --kubeconfig MANAGEMENT_API_SERVER describe -n platform FLOW_LOG_NAME
    

    Beispielstatus:

    Status:
      Clusters:
        Cluster:  org-1-infra-cluster
        Conditions:
          Last Transition Time:  2024-01-19T01:46:11Z
          Message:
          Observed Generation:   1
          Reason:                ResourcesPropagated
          Status:                True
          Type:                  Propagated
        Name:                    cilium-flowlog-config
        Namespace:               kube-system
        Node:                    org-1-infra
        Cluster:                 user-vm-1-cluster
        Conditions:
          Last Transition Time:  2024-01-19T01:46:11Z
          Message:
          Observed Generation:   1
          Reason:                ResourcesPropagated
          Status:                True
          Type:                  Propagated
        Name:                    cilium-flowlog-config
        Namespace:               kube-system
        Node:                    user-vm-1
        Cluster:                 user-vm-2-cluster
        Conditions:
          Last Transition Time:  2024-01-19T01:46:11Z
          Message:
          Observed Generation:   1
          Reason:                ResourcesPropagated
          Status:                True
          Type:                  Propagated
        Name:                    cilium-flowlog-config
        Namespace:               kube-system
        Node:                    user-vm-2
      Conditions:
        Last Transition Time:  2024-01-18T19:17:53Z
        Message:
        Observed Generation:   1
        Reason:                Active
        Status:                True
        Type:                  Logging
        Last Transition Time:  2024-01-19T01:46:11Z
        Message:
        Observed Generation:   1
        Reason:                ResourcesPropagated
        Status:                True
        Type:                  Propagated
        Last Transition Time:  2024-01-18T19:17:53Z
        Message:
        Observed Generation:   1
        Reason:                Succeeded
        Status:                True
        Type:                  Reconciled
      Start Time:              2024-01-18T19:17:53Z
      End Time:              2024-01-18T20:17:53Z
    

    Diese Beispielausgabe enthält die folgenden Bedingungen:

    • Propagated: Die Flusslogkonfiguration wurde an die Cluster user-vm-1, user-vm-2 und org-1-infra gesendet.
    • Reconciled: Das Flow-Log wurde erfolgreich auf den Clustern user-vm-1, user-vm-2 und org-1-infra programmiert.
    • Logging: Das Flussprotokoll ist nicht abgelaufen oder deaktiviert, es ist kein Fehler aufgetreten und es können Protokolle erstellt werden, wenn die Filter mit den Flüssen übereinstimmen.
    • Die Start Time und End Time geben an, dass der Job am 19:17:53 gestartet wurde und am 20:17:53 abläuft.

    Damit in diesem Flow-Log Logeinträge erstellt werden können, müssen alle Bedingungen für Propagated, Reconciled und Logging erfüllt sein.

Flusslog ändern

Wenn Sie ein vorhandenes Ablaufprotokoll ändern möchten, bearbeiten Sie die erstellte Ablaufprotokoll-Objektdefinition in der Datei example-flowlog.yaml und wenden Sie sie noch einmal an:

kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yaml

Flusslogs im Monitoring-Dashboard ansehen

Wenn Sie Flow-Logs aufrufen möchten, bitten Sie Nutzer mit der entsprechenden Flow-Log-Rolle, Betriebslogs abfragen zu prüfen.

Verweise