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 Google Distributed Cloud (GDC) isolé. Les charges de travail sans état vous permettent de faire évoluer le déploiement de votre application en fonction des exigences de la charge de travail, sans avoir à gérer le stockage persistant dans un cluster Kubernetes pour stocker les données ou l'état de l'application. Cette page vous aide à vous lancer afin que vous puissiez optimiser et ajuster efficacement la disponibilité de votre application.

Cette page s'adresse aux développeurs du groupe des opérateurs d'applications, qui sont chargés de créer des charges de travail d'application pour leur organisation. Pour en savoir plus, consultez la documentation sur les audiences pour GDC en mode air-gapped.

Avant de commencer

Pour exécuter des commandes sur un cluster Kubernetes, 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 KUBERNETES_CLUSTER_KUBECONFIG dans ces instructions.

Pour obtenir les autorisations requises pour créer des charges de travail sans état, demandez à votre administrateur IAM de l'organisation de vous accorder le rôle d'administrateur de l'espace de noms (namespace-admin) dans l'espace de noms de votre projet.

Créer un déploiement

Pour créer un déploiement, écrivez un fichier 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 KUBERNETES_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
EOF

Remplacez les éléments suivants :

  • KUBERNETES_CLUSTER_KUBECONFIG : fichier kubeconfig du cluster Kubernetes sur lequel vous déployez des charges de travail de conteneurs.

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

  • DEPLOYMENT_NAME : fichier kubeconfig du cluster sur lequel vous déployez des charges de travail de conteneur.

  • 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 du 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.

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

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