Créer des charges de travail sans état

Cette page explique comment créer et gérer des charges de travail sans état dans un cluster Kubernetes d'une appliance isolée Google Distributed Cloud (GDC). Les charges de travail sans état vous permettent de mettre à l'échelle le déploiement de votre application en fonction des demandes de charge de travail, sans avoir à gérer le stockage persistant dans un cluster Kubernetes pour stocker des données ou l'état de l'application. Cette page vous aide à démarrer afin que vous puissiez optimiser et ajuster efficacement la disponibilité de votre application.

Cette page s'adresse aux développeurs du groupe d'opérateurs d'applications, qui sont chargés de créer des charges de travail d'application pour leur organisation.

Avant de commencer

Pour effectuer les tâches décrites dans ce document, vous devez demander les autorisations nécessaires et préparer votre environnement.

Demander des rôles IAM

Pour créer, supprimer, modifier ou afficher des charges de travail sans état dans un cluster Kubernetes, demandez à votre administrateur IAM de l'organisation de vous attribuer le rôle Administrateur d'espace de noms (namespace-admin). Ce rôle est lié à l'espace de noms de votre projet.

Préparer votre environnement

Pour exécuter des commandes sur le cluster Kubernetes bare metal préconfiguré, assurez-vous de disposer des ressources suivantes :

  1. Recherchez le nom du cluster Kubernetes ou demandez-le à votre administrateur de plate-forme.

  2. Connectez-vous et générez le fichier kubeconfig pour le cluster Kubernetes si vous n'en avez pas.

  3. Utilisez le chemin d'accès kubeconfig du cluster Kubernetes pour remplacer CLUSTER_KUBECONFIG dans ces instructions.

Créer un déploiement

Pour créer un déploiement, écrivez un manifeste Deployment et exécutez kubectl apply pour créer la ressource. Cette méthode conserve également les mises à jour apportées aux ressources actives sans fusionner les modifications dans les fichiers manifestes.

Pour créer un Deployment à partir de son fichier manifeste, exécutez la commande suivante :

kubectl --kubeconfig CLUSTER_KUBECONFIG -n NAMESPACE \
    apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: DEPLOYMENT_NAME
spec:
  replicas: NUMBER_OF_REPLICAS
  selector:
    matchLabels:
      run: APP_NAME
  template:
    metadata:
      labels: # The labels given to each pod in the deployment, which are used
              # to manage all pods in the deployment.
        run: APP_NAME
    spec: # The pod specification, which defines how each pod runs in the deployment.
      containers:
      - name: CONTAINER_NAME
        image: CONTAINER_IMAGE
        resources:
          requests:
            nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1
          limits:
            nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1
EOF

Remplacez les éléments suivants :

  • CLUSTER_KUBECONFIG: fichier kubeconfig du cluster Kubernetes dans lequel vous déployez des charges de travail de conteneur.

  • NAMESPACE : espace de noms du projet dans lequel déployer les charges de travail de conteneur.

  • DEPLOYMENT_NAME : nom de l'objet Deployment.

  • APP_NAME: nom de l'application à exécuter dans le déploiement.

  • NUMBER_OF_REPLICAS: nombre d'objets Pod répliqués gérés par le déploiement.

  • CONTAINER_NAME : nom du conteneur.

  • CONTAINER_IMAGE : nom de l'image de conteneur. Vous devez inclure le chemin d'accès au registre de conteneurs et la version de l'image, par exemple REGISTRY_PATH/hello-app:1.0. Pour en savoir plus sur la configuration du chemin d'accès au registre de conteneurs, consultez la présentation du service Managed Harbor.

Exemple :

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      run: my-app
  template:
    metadata:
      labels:
        run: my-app
    spec:
      containers:
      - name: hello-app
        image: REGISTRY_PATH/hello-app:1.0
        resources:
          requests:
            nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1
          limits:
            nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1

Si vous déployez des charges de travail GPU dans vos conteneurs, consultez la section Gérer les charges de travail de conteneur GPU pour en savoir plus.