Sidecar-Container für den Cloud Storage FUSE CSI-Treiber für GKE konfigurieren


In diesem Leitfaden erfahren Sie, wie Sie Ressourcen für den Sidecar-Container des Cloud Storage FUSE CSI-Treibers konfigurieren, einschließlich der Einrichtung eines privaten Images, eines benutzerdefinierten Schreibpuffers und eines benutzerdefinierten Lesecache-Volumes. In der Regel müssen Sie diese Einstellungen nicht ändern.

Der Cloud Storage FUSE CSI-Treiber verwendet einen anpassbaren Sidecar-Container, um Cloud Storage-Buckets effizient bereitzustellen und darauf zuzugreifen. Durch die Konfiguration des Sidecars können Sie die Anwendungsleistung und Ressourcennutzung optimieren. Dies kann zu einem schnelleren Datenzugriff, kürzeren Verarbeitungszeiten und einem potenziell geringeren Gesamtressourcenverbrauch für Ihre Anwendung führen.

Dieser Leitfaden richtet sich an Entwickler, Administratoren und Architekten, die die Leistung, Sicherheit und Effizienz ihrer Anwendungen optimieren möchten, die mit GKE interagieren.

Machen Sie sich vor dem Lesen dieser Seite mit den Grundlagen von Cloud-Speicher, Kubernetes und Containern vertraut.

So funktioniert der Sidecar-Container

Der Cloud Storage FUSE CSI-Treiber verwendet einen Sidecar-Container, um Cloud Storage-Buckets bereitzustellen und für Kubernetes-Anwendungen als lokale Dateisysteme zugänglich zu machen. Dieser Sidecar-Container mit dem Namen gke-gcsfuse-sidecar wird zusammen mit dem Arbeitslastcontainer im selben Pod ausgeführt. Wenn der Treiber die Anmerkung gke-gcsfuse/volumes: "true" in einer Pod-Spezifikation erkennt, wird der Sidecar-Container automatisch eingefügt. Dieser Ansatz mit Sidecar-Containern trägt dazu bei, die Sicherheit zu gewährleisten und Ressourcen effektiv zu verwalten.

Der Sidecar-Container übernimmt die Komplexität des Bereitstellens der Cloud Storage-Buckets und bietet den Anwendungen Dateisystemzugriff, ohne dass Sie die Cloud Storage FUSE-Laufzeit direkt verwalten müssen. Sie können Ressourcenlimits für den Sidecar-Container mit Anmerkungen wie gke-gcsfuse/cpu-limit und gke-gcsfuse/memory-limit konfigurieren. Das Sidecar-Container-Modell sorgt außerdem dafür, dass die Cloud Storage FUSE-Instanz an den Lebenszyklus der Arbeitslast gebunden ist, sodass keine Ressourcen unnötig verbraucht werden. Das bedeutet, dass der Sidecar-Container automatisch beendet wird, wenn die Arbeitslastcontainer beendet werden, insbesondere bei Job-Arbeitslasten oder Pods mit einer RestartPolicy von Never.

Istio-Kompatibilität

Der Sidecar-Container des Cloud Storage FUSE CSI-Treibers und Istio können nebeneinander existieren und gleichzeitig in Ihrem Pod ausgeführt werden. Der Sidecar-Proxy von Istio verwaltet den Netzwerkverkehr, während der CSI-Sidecar den Speicherzugriff optimiert. So können Ihre Anwendungen effizient mit Google Cloud Storage interagieren und dabei von einer verbesserten Leistung und Beobachtbarkeit profitieren.

Benutzerdefinierten Schreib-Zwischenspeicher konfigurieren

Cloud Storage FUSE stellt Schreibvorgänge in einem lokalen Verzeichnis bereit und lädt sie dann bei close- oder fsync-Vorgängen in Cloud Storage hoch.

In diesem Abschnitt wird beschrieben, wie Sie ein benutzerdefiniertes Zwischenspeicher-Volume für die Schreibvorgangzwischenspeicherung in Cloud Storage FUSE konfigurieren. Dieses Szenario kann zutreffen, wenn Sie das Standard-emptyDir-Volume für Cloud Storage FUSE ersetzen müssen, um die Dateien bei Schreibvorgängen zu steuern. Das ist nützlich, wenn Sie Dateien mit mehr als 10 GiB in Autopilot-Clustern schreiben müssen.

Sie können für das Datei-Caching jeden Speichertyp angeben, der vom Cloud Storage FUSE CSI-Treiber unterstützt wird, z. B. eine lokale SSD, einen nichtflüchtigen Speicher und ein RAM-Laufwerk (Speicher). GKE verwendet das angegebene Volume für die Zwischenspeicherung von Schreibvorgängen in Dateien. Weitere Informationen zu diesen Optionen finden Sie unter Speicher für die Sicherung des Dateicaches auswählen.

Wenn Sie das benutzerdefinierte Zwischenspeicher-Volume verwenden möchten, müssen Sie fsGroup ungleich null angeben.

Im folgenden Beispiel wird gezeigt, wie Sie einen vordefinierten PersistentVolumeClaim als Puffervolume verwenden können:

apiVersion: v1
kind: Pod
metadata:
  annotations:
    gke-gcsfuse/volumes: "true"
spec:
  securityContext:
    fsGroup: FS_GROUP
  containers:
  ...
  volumes:
  - name: gke-gcsfuse-buffer
    persistentVolumeClaim:
      claimName: BUFFER_VOLUME_PVC

Ersetzen Sie Folgendes:

  • FS_GROUP: die fsGroup-ID.
  • BUFFER_VOLUME_PVC ist der Name des vordefinierten PVC.

Benutzerdefiniertes Lese-Cache-Volume konfigurieren

In diesem Abschnitt wird beschrieben, wie Sie ein benutzerdefiniertes Cache-Volume für das Lese-Caching in Cloud Storage FUSE konfigurieren.

Dieses Szenario kann zutreffen, wenn Sie das Standard-emptyDir-Volume für Cloud Storage FUSE ersetzen müssen, um die Dateien bei Lesevorgängen im Cache zu speichern. Sie können jeden von GKE unterstützten Speichertyp angeben, z. B. einen PersistentVolumeClaim. GKE verwendet dann das angegebene Volume für das Datei-Caching. Das ist nützlich, wenn Sie Dateien mit einer Größe von mehr als 10 GiB in Autopilot-Clustern im Cache speichern möchten. Wenn Sie das benutzerdefinierte Cache-Volume verwenden möchten, müssen Sie fsGroup ungleich null angeben.

Im folgenden Beispiel wird gezeigt, wie Sie einen vordefinierten PersistentVolumeClaim als Cache-Volume verwenden können:

apiVersion: v1
kind: Pod
metadata:
  annotations:
    gke-gcsfuse/volumes: "true"
spec:
  securityContext:
    fsGroup: FS_GROUP
  containers:
  ...
  volumes:
  - name: gke-gcsfuse-cache
    persistentVolumeClaim:
      claimName: CACHE_VOLUME_PVC

Ersetzen Sie Folgendes:

  • FS_GROUP: die fsGroup-ID.
  • CACHE_VOLUME_PVC: Der vordefinierte Name des PersistentVolumeClaim.

Privates Image für den Sidecar-Container konfigurieren

In diesem Abschnitt wird beschrieben, wie Sie das Sidecar-Container-Image verwenden, wenn Sie es in einer privaten Container-Registry hosten. Dieses Szenario kann zutreffen, wenn Sie aus Sicherheitsgründen private Knoten verwenden müssen.

So konfigurieren und verwenden Sie das private Sidecar-Container-Image:

  1. In dieser GKE-Kompatibilitätstabelle finden Sie ein kompatibles öffentliches Sidecar-Container-Image.
  2. Rufen Sie es in Ihrer lokalen Umgebung ab und übertragen Sie es in Ihre private Container Registry.
  3. Geben Sie im Manifest einen Container mit dem Namen gke-gcsfuse-sidecar an, der nur das Feld „image“ enthält. GKE verwendet das angegebene Sidecar-Container-Image, um die Einschleusung des Sidecar-Containers vorzubereiten.

    Hier ein Beispiel:

    apiVersion: v1
    kind: Pod
    metadata:
      annotations:
        gke-gcsfuse/volumes: "true"
    spec:
      containers:
      - name: gke-gcsfuse-sidecar
        image: PRIVATE_REGISTRY/gcs-fuse-csi-driver-sidecar-mounter:PRIVATE_IMAGE_TAG
      - name: main # your main workload container.
    

    Ersetzen Sie dabei Folgendes:

    • PRIVATE_REGISTRY: Ihre private Containerregistrierung.
    • PRIVATE_IMAGE_TAG: durch Ihr privates Sidecar-Container-Image-Tag.

Ressourcen für Sidecar-Container konfigurieren

Standardmäßig ist der Sidecar-Container mit den folgenden Ressourcenanfragen konfiguriert, wobei die Ressourcenlimits nicht festgelegt sind (für Standardcluster):

  • 250 mCPU
  • 256 MiB Arbeitsspeicher
  • Sitzungsspezifischer 5 GiB-Speicher

Wenn Sie diese Werte überschreiben möchten, können Sie optional die Annotation gke-gcsfuse/[cpu-limit|memory-limit|ephemeral-storage-limit|cpu-request|memory-request|ephemeral-storage-request] angeben, wie im folgenden Beispiel gezeigt:

apiVersion: v1
kind: Pod
metadata:
  annotations:
    gke-gcsfuse/volumes: "true"
    gke-gcsfuse/cpu-limit: "10"
    gke-gcsfuse/memory-limit: 10Gi
    gke-gcsfuse/ephemeral-storage-limit: 1Ti
    gke-gcsfuse/cpu-request: 500m
    gke-gcsfuse/memory-request: 1Gi
    gke-gcsfuse/ephemeral-storage-request: 50Gi

Mit dem Wert "0" können Sie alle Ressourcenlimits oder ‑anforderungen in Standardclustern zurücksetzen. Die Annotation gke-gcsfuse/memory-limit: "0" lässt beispielsweise das Arbeits-Speicherlimit des Sidecar-Containers bei der Standardarbeitsspeicheranforderung leer. Das ist nützlich, wenn Sie sich nicht sicher sind, wie viele Ressourcen Cloud Storage FUSE für Ihre Arbeitslasten benötigt, und möchten, dass Cloud Storage FUSE alle verfügbaren Ressourcen auf einem Knoten verbrauchen soll. Nachdem Sie die Ressourcenanforderungen für Cloud Storage FUSE anhand Ihrer Arbeitslastmesswerte berechnet haben, können Sie entsprechende Limits festlegen.

Nächste Schritte