Configurer le comportement du scaling d'un cluster

Cette page explique comment créer et gérer une configuration de Game Servers qui spécifie le comportement de scaling d'un déploiement.

Avant de commencer

Avant de commencer, nous vous recommandons de vous familiariser avec les concepts clés de la page Présentation des Game Servers. Assurez-vous également que vous avez également effectué les tâches suivantes :

  • Assurez-vous d'avoir activé l'API des services de jeux.
  • Activer l'API des services de jeux
  • Choisissez une interface système sur laquelle le SDK Cloud est installé, ou utilisez un client API :
  • Cloud Shell

    Pour lancer Cloud Shell, procédez comme suit :

    1. Accédez à Google Cloud Console.

      Google Cloud Console

    2. Dans l'angle supérieur droit de la console, cliquez sur le bouton Activer Cloud Shell :

    Une session Cloud Shell s'ouvre dans un cadre situé en bas de la console. Cette interface système vous permet d'exécuter des commandes gcloud.

    Interface système locale

    Pour installer gcloud, installez le SDK Cloud, qui inclut l'outil de ligne de commande gcloud.

    Vérifiez que vous avez défini le projet par défaut souhaité pour l'outil de ligne de commande gcloud. Sinon, vous devrez spécifier explicitement l'option --project pour chaque commande ultérieurement :

    gcloud config list project
    

    Si non, vous pouvez exécuter la commande suivante pour définir un projet par défaut, en remplaçant project-id par l'ID de projet souhaité :

    gcloud config set project project-id
    

    Exécutez la commande suivante pour vérifier votre version du SDK Google Cloud. Game Servers nécessite la version 306.0.0 ou une version ultérieure du SDK.

    gcloud version
    

    Pour mettre à jour votre installation, exécutez la commande suivante :

    gcloud components update
    

    Bibliothèque cliente

    Google Cloud Game Servers peut être contrôlé par programmation à l'aide d'une bibliothèque cliente. Pour obtenir des instructions sur l'utilisation de la bibliothèque et l'authentification, consultez la page Présentation des bibliothèques clientes.

Créer une ressource Configuration

Assurez-vous d'avoir créé un déploiement Game Servers.

Vous pouvez créer une configuration de Game Servers dans un déploiement à l'aide de l'outil de ligne de commande gcloud.

Pour créer une configuration de Game Servers, procédez comme suit :

  1. Copiez la spécification de parc suivante dans un fichier :

    - name: fleet-spec-1
      fleetSpec:
       replicas: 0
       scheduling: Packed
       strategy:
         type: RollingUpdate
         rollingUpdate:
           maxSurge: 25%
           maxUnavailable: 25%
       template:
         metadata:
           labels:
             gameName: udp-server
         spec:
           ports:
           - name: default
             portPolicy: Dynamic
             containerPort: 7654
             protocol: UDP
           health:
             initialDelaySeconds: 30
             periodSeconds: 60
           sdkServer:
             logLevel: Info
             grpcPort: 9357
             httpPort: 9358
           template:
             spec:
               containers:
               - name: dedicated
                 image: gcr.io/agones-images/udp-server:0.21
                 imagePullPolicy: Always
                 resources:
                   requests:
                     memory: 200Mi
                     cpu: 500m
                   limits:
                     memory: 200Mi
                     cpu: 500m
    
  2. Copiez la spécification de configuration de scaling suivante dans un fichier :

    - name: scaling-config-1
      fleetAutoscalerSpec:
        policy:
          type: Buffer
          buffer:
            bufferSize: 1
            minReplicas: 0
            maxReplicas: 4
    
  3. Exécutez la commande suivante et remplacez les valeurs des espaces réservés tels que deploymentID et configID par des valeurs appropriées :

    gcloud game servers configs create configID --deployment deploymentID --fleet-configs-file fleetSpecFile --scaling-configs-file scalingConfigsFile
    

    Les espaces réservés de variables correspondent aux descriptions suivantes :

  • configID est un identifiant unique que vous pouvez spécifier pour cette configuration.
  • deploymentID est l'identifiant unique du déploiement.
  • fleetSpecFile est le chemin d'accès au fichier contenant la spécification Agones Fleet.
  • scalingConfigsFile est le chemin d'accès au fichier avec la spécification de scaling.

Définir la configuration d'un déploiement

Après avoir créé une configuration de Game Servers avec une règle de scaling, définissez-la comme configuration par défaut en mettant à jour le déploiement de Game Servers.

Game Servers applique un comportement de scaling à tous les clusters.

Vérifier les spécifications de scaling

Pour déterminer si Game Servers a appliqué le scaling configuré à un cluster, exécutez la commande suivante pour chaque cluster du domaine. Remplacez l'espace réservé namespace par l'espace de noms que vous avez spécifié lors de l'enregistrement du cluster Kubernetes en tant que cluster Game Servers :

   kubectl get fleetautoscaler --namespace namespace
   

Les espaces réservés de variables correspondent aux descriptions suivantes :

  • namespace est l'espace de noms que vous avez utilisé lors de l'enregistrement.

Créer des calendriers de scaling

Game Servers vous permet de configurer plusieurs planifications de scaling. Vous pouvez configurer plusieurs calendriers de scaling, dont les heures de début et de fin, ou des planifications récurrentes (appelées cron). Vous pouvez également combiner plusieurs calendriers et des plannings récurrents.

Game Servers évalue les heures de début et de fin en temps universel coordonné (UTC). Les autres fuseaux horaires sont acceptés en tant que décalage horaire (UTC). Les heures de début et de fin sont au format chaîne RFC 3339. La valeur de précision la plus faible de Game Servers est de quelques minutes.

Game Servers évalue les planifications de scaling dans l'ordre dans lequel elles sont répertoriées dans une configuration jusqu'à ce qu'une planification correspondante soit trouvée. Cette section décrit différents exemples de planification.

Créer plusieurs programmations de scaling

Vous pouvez adapter la spécification de planification du scaling suivante pour des événements spéciaux. Dans cet exemple, Game Servers applique les programmations de scaling suivantes :

  • scaling-config-june1-and-7 le 1er juin 2020 entre 17h et 22h30, ainsi que le 7 juin 2020 entre 12h et 18h
  • Configuration par défaut de scaling-config-default pour toutes les autres heures entre le 25 mai 2020 et le 31 mai 2021

    - name: scaling-config-june1-and-7
      schedules:
      - startTime: "2020-06-01T17:00:00Z"
        endTime: "2020-06-01T22:30:00Z"
      - startTime: "2020-06-07T12:00:00Z"
        endTime: "2020-06-07T18:00:00Z"
      fleetAutoscalerSpec:
        policy:
          type: Buffer
          buffer:
            maxReplicas: 100
            minReplicas: 10
            bufferSize: 5
    - name: scaling-config-default
      schedules:
      - startTime: "2020-05-25T00:00:00Z"
        endTime: "2021-05-31T00:00:00Z"
      fleetAutoscalerSpec:
        policy:
          type: Buffer
          buffer:
            maxReplicas: 5
            minReplicas: 1
            bufferSize: 1
    

Créer des programmations de scaling récurrentes

L'exemple de spécification suivant illustre un calendrier de scaling Cron récurrent afin de gérer une augmentation de la capacité pendant les heures de pointe. Dans cet exemple, Game Servers applique les programmations de scaling suivantes :

  • scaling-config-weekday-peak en semaine, de 17h à 20h
  • scaling-config-weekend-peak pendant le week-end, entre 13h et 17h
  • La configuration scaling-config-default par défaut à tout moment

    - name: scaling-config-weekday-peak
      schedules:
      - cronJobDuration: 3600s
        cronSpec: '0 17-20 * * 1-5'
      fleetAutoscalerSpec:
        policy:
          type: Buffer
          buffer:
            maxReplicas: 100
            minReplicas: 10
            bufferSize: 5
    - name: scaling-config-weekend-peak
      schedules:
      - cronJobDuration: 3600s
        cronSpec: '0 13-17 * * 0,6'
      fleetAutoscalerSpec:
        policy:
          type: Buffer
          buffer:
            maxReplicas: 150
            minReplicas: 20
            bufferSize: 10
    - name: scaling-config-default
      fleetAutoscalerSpec:
        policy:
          type: Buffer
          buffer:
            maxReplicas: 5
            minReplicas: 1
            bufferSize: 1
    

Créer plusieurs programmations de scaling récurrentes

Les spécifications de scaling peuvent inclure des champs de début et de fin, ainsi qu'une programmation récurrente. Dans cet exemple, Game Servers applique les programmations de scaling suivantes :

  • scaling-config-july4 du 4 au 7 juillet entre 9h et 2h
  • scaling-config-peak tous les jours entre 17h et 22h
  • La configuration scaling-config-default par défaut à tout moment

    - name: scaling-config-july4
      schedules:
      - cronJobDuration: 3600s
        cronSpec: '0 9-18 * * *'
        startTime: "2020-07-04T00:00:00Z"
        endTime: "2020-07-07T00:30:00Z"
      fleetAutoscalerSpec:
        policy:
          type: Buffer
          buffer:
            maxReplicas: 150
            minReplicas: 10
            bufferSize: 5
    - name: scaling-config-peak
      schedules:
      - cronJobDuration: 3600s
        cronSpec: '0 17-22 * * *'
      fleetAutoscalerSpec:
        policy:
          type: Buffer
          buffer:
            maxReplicas: 100
            minReplicas: 10
            bufferSize: 5
    - name: scaling-config-default
      fleetAutoscalerSpec:
        policy:
          type: Buffer
          buffer:
            maxReplicas: 40
            minReplicas: 5
            bufferSize: 4
    

Étape suivante