Configurer le conteneur side-car du pilote CSI Cloud Storage FUSE pour GKE


Ce guide explique comment configurer les ressources du conteneur side-car du pilote CSI Cloud Storage FUSE, y compris la configuration d'une image privée, d'une mémoire tampon d'écriture personnalisée et d'un volume de cache de lecture personnalisé. En règle générale, vous n'avez pas besoin de modifier ces paramètres.

Le pilote CSI Cloud Storage FUSE utilise un conteneur side-car personnalisable pour installer et accéder efficacement aux buckets Cloud Storage. En configurant le sidecar, vous pouvez affiner les performances de l'application et l'utilisation des ressources, ce qui peut accélérer l'accès aux données, réduire les temps de traitement et potentiellement réduire la consommation globale de ressources de votre application.

Ce guide s'adresse aux développeurs, administrateurs et architectes qui souhaitent optimiser les performances, la sécurité et l'efficacité de leurs applications qui interagissent avec GKE.

Avant de lire cette page, assurez-vous de connaître les principes de base des concepts de Cloud Storage, de Kubernetes et de la conteneurisation.

Fonctionnement du conteneur sidecar

Le pilote CSI Cloud Storage FUSE utilise un conteneur sidecar pour installer des buckets Cloud Storage afin de les rendre accessibles en tant que systèmes de fichiers locaux aux applications Kubernetes. Ce conteneur side-car, nommé gke-gcsfuse-sidecar, s'exécute avec le conteneur de charge de travail dans le même pod. Lorsque le pilote détecte l'annotation gke-gcsfuse/volumes: "true" dans une spécification de pod, il injecte automatiquement le conteneur side-car. Cette approche de conteneur sidecar permet de garantir la sécurité et de gérer efficacement les ressources.

Le conteneur side-car gère la complexité de l'installation des buckets Cloud Storage et fournit un accès au système de fichiers aux applications sans que vous n'ayez à gérer directement l'environnement d'exécution Cloud Storage FUSE. Vous pouvez configurer des limites de ressources pour le conteneur sidecar à l'aide d'annotations telles que gke-gcsfuse/cpu-limit et gke-gcsfuse/memory-limit. Le modèle de conteneur side-car garantit également que l'instance Cloud Storage FUSE est associée au cycle de vie de la charge de travail, ce qui l'empêche de consommer des ressources inutilement. Cela signifie que le conteneur sidecar s'arrête automatiquement lorsque les conteneurs de charge de travail se ferment, en particulier dans les charges de travail de job ou les pods avec un RestartPolicy de Never.

Compatibilité avec Istio

Le conteneur side-car du pilote CSI Cloud Storage FUSE et Istio peuvent coexister et s'exécuter simultanément dans votre pod. Proxy side-car d'Istio gère le trafic réseau, tandis que le sidecar CSI optimise l'accès au stockage, ce qui permet à vos applications d'interagir efficacement avec Google Cloud Storage, tout en améliorant les performances et l'observabilité.

Configurer une mémoire tampon d'écriture personnalisée

Cloud Storage FUSE met en file d'attente les écritures dans un répertoire local, puis les importe dans Cloud Storage lors des opérations close ou fsync. La mise en mémoire tampon d'écriture n'est pas activée par défaut.

Cette section explique comment configurer un volume de mémoire tampon personnalisé pour la mise en mémoire tampon d'écriture de Cloud Storage FUSE. Ce scénario peut s'appliquer si vous devez remplacer le volume par défaut emptyDir pour Cloud Storage FUSE afin de préparer les fichiers dans les opérations d'écriture. C'est utile si vous devez écrire des fichiers de plus de 10 Gio sur des clusters Autopilot.

Vous pouvez spécifier n'importe quel type de stockage compatible avec le pilote CSI Cloud Storage FUSE pour la mise en cache de fichiers, par exemple un SSD local, un stockage basé sur Persistent Disk et un disque RAM (mémoire). GKE utilisera le volume spécifié pour la mise en mémoire tampon d'écriture des fichiers. Pour en savoir plus sur ces options, consultez la section Sélectionner le stockage pour sauvegarder votre cache de fichiers.

Pour utiliser le volume de tampon personnalisé, vous devez spécifier une valeur fsGroup non nulle.

L'exemple suivant montre comment utiliser un PersistentVolumeClaim prédéfini comme volume de mémoire tampon:

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

Remplacez les éléments suivants :

  • FS_GROUP : ID fsGroup.
  • BUFFER_VOLUME_PVC : nom de la PVC prédéfinie.

Configurer le volume de cache de lecture personnalisé

Cette section explique comment configurer un volume de cache personnalisé pour la mise en cache en lecture de Cloud Storage FUSE.

Ce scénario peut s'appliquer si vous devez remplacer le volume emptyDir par défaut pour Cloud Storage FUSE afin de mettre en cache les fichiers dans les opérations de lecture. Vous pouvez spécifier n'importe quel type de stockage compatible avec GKE, par exemple un PersistentVolumeClaim. GKE utilisera le volume spécifié pour la mise en cache des fichiers. C'est utile si vous devez mettre en cache des fichiers de plus de 10 Gio sur des clusters Autopilot. Pour utiliser le volume de cache personnalisé, vous devez spécifier une valeur fsGroup non nulle.

L'exemple suivant montre comment utiliser un PersistentVolumeClaim prédéfini comme volume de cache:

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

Remplacez les éléments suivants :

  • FS_GROUP: ID fsGroup.
  • CACHE_VOLUME_PVC: nom prédéfini du PersistentVolumeClaim.

Configurer une image privée pour le conteneur side-car

Cette section explique comment utiliser l'image de conteneur side-car si vous l'hébergez dans un registre de conteneurs privés. Ce scénario peut s'appliquer si vous devez utiliser des nœuds privés pour des raisons de sécurité.

Procédez comme suit pour configurer et utiliser l'image de conteneur side-car privé :

  1. Reportez-vous à ce tableau de compatibilité GKE pour trouver une image de conteneur side-car public compatible.
  2. Extrayez-la dans votre environnement local et transférez-la vers votre registre de conteneurs privés.
  3. Dans le fichier manifeste, spécifiez un conteneur nommé gke-gcsfuse-sidecar ne comportant que le champ image. GKE utilise l'image de conteneur side-car spécifiée pour préparer l'injection de conteneur side-car.

    Voici un exemple :

    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.
    

    Remplacez les éléments suivants :

    • PRIVATE_REGISTRY : votre registre de conteneurs privés.
    • PRIVATE_IMAGE_TAG : tag de l'image de votre conteneur side-car privé.

Étape suivante