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. La configuration du scaling peut être personnalisée pour ne cibler que des clusters Game Servers spécifiques dans un domaine.
Avant de commencer
Avant de commencer, nous vous recommandons de vous familiariser avec les concepts clés de la page Présentation de 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 Game Services
- Choisissez une interface système sur laquelle gcloud CLI est installée ou utilisez un client API:
Accédez à Google Cloud Console.
Dans l'angle supérieur droit de la console, cliquez sur le bouton Activer Cloud Shell :
- Créer un compte de service
- Téléchargez une clé privée sous la forme d'un fichier JSON.
-
Set the environment variable
GOOGLE_APPLICATION_CREDENTIALS
to the path of the JSON file that contains your credentials. This variable applies only to your current shell session, so if you open a new session, set the variable again.
Cloud Shell
Pour lancer Cloud Shell, procédez comme suit :
Une session Cloud Shell s'ouvre dans un cadre situé en bas de la console.
Cette interface système vous permet d'exécuter les commandes gcloud
.
Shell local
Installer gcloud CLI
Vérifiez que vous avez défini le projet par défaut souhaité pour Google Cloud CLI (sinon, vous devrez spécifier l'indicateur --project
explicitement 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 de Google Cloud CLI.
Game Servers nécessite la version 306.0.0
ou ultérieure de gcloud CLI.
gcloud version
Pour mettre à jour votre installation, exécutez la commande suivante :
gcloud components update
curl/PowerShell
Pour utiliser l'API REST avec curl
ou Windows PowerShell, procédez comme suit :
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 Game Servers dans un déploiement à l'aide de Google Cloud CLI.
Pour créer une configuration de Game Servers, procédez comme suit :
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
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
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.
Scaling spécifique à certains clusters
Vous pouvez limiter la configuration de scaling à des clusters Game Servers spécifiques dans un domaine. Pour ce faire, vous devez ajouter un libellé aux clusters, puis cibler uniquement ces clusters avec le libellé dans la configuration de scaling.
Procédez comme suit :
Mettez à jour le cluster pour ajouter un libellé. Les libellés sont des paires clé/valeur au format
key=value
. Pour cet exemple, indiquez le libellé--labels=cloud=true
.gcloud game servers clusters update gscID --realm=realmID --location=region \ --update-labels=labels --no-dry-run
Les autres espaces réservés de variables correspondent aux descriptions suivantes :
- gscID est un identifiant unique que vous pouvez spécifier pour ce cluster.
- realmID est l'identifiant unique du domaine dans lequel vous souhaitez stocker le cluster.
region est la région du cluster. Choisissez la même région que le domaine parent.
Créez une configuration en suivant les étapes de la section Créer une configuration qui comprend l'ajout suivant : ajoutez le libellé à la spécification de configuration de scaling. Exemple :
- name: scaling-config-1 fleetAutoscalerSpec: policy: type: Buffer buffer: bufferSize: 1 minReplicas: 0 maxReplicas: 4 selectors: - labels: "cloud": "true"
Définissez la configuration comme configuration par défaut en mettant à jour le déploiement de Game Servers.
Game Servers n'applique les configurations de scaling qu'aux clusters Game Servers dont le libellé correspond au sélecteur de libellés de la configuration de scaling. Ainsi, dans cet exemple, les clusters auxquels vous avez attribué le libellé cloud=true
obtiennent une configuration de scaling, et tous les clusters sans ce libellé ne reçoivent pas de configuration de scaling.
Créer des planifications de scaling
Game Servers vous permet de configurer plusieurs planifications de scaling. Vous pouvez configurer plusieurs planifications de scaling, dont les heures de début et de fin, ou des planifications récurrentes (appelées cron). Vous pouvez également combiner plusieurs planifications récurrentes.
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 de chaîne de dates RFC 3339. La plus faible précision possible pour 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 planifications de scaling
Vous pouvez adapter la spécification de planification de 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 18hConfiguration 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 planifications de scaling récurrentes
L'exemple de spécification suivant illustre une planification de scaling Cron récurrente 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 à 20hscaling-config-weekend-peak
pendant le week-end, entre 13h et 17hLa configuration
scaling-config-default
par défaut pour toutes les autres heures- 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 planifications 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 2hscaling-config-peak
tous les jours entre 17h et 22hLa configuration
scaling-config-default
par défaut pour toutes les autres heures- 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
Étapes suivantes
Découvrez comment déployer une configuration.
Découvrez comment supprimer une configuration.