En esta página, se explica cómo crear y administrar una configuración de Game Servers en la que se especifica el comportamiento de escalamiento de una implementación. La configuración de escalamiento se puede personalizar para que se oriente solo a clústeres de Game Servers específicos en un dominio.
Antes de comenzar
Antes de comenzar, te recomendamos que te familiarices con los conceptos clave en la Descripción general de servidores para juegos. Asegúrate de haber realizado las siguientes tareas:
- Asegúrate de haber habilitado la API de los servicios de juego. Habilitar la API de servicios de juego
- Elige una shell que tenga gcloud CLI instalada o usa un cliente de API:
Ve a la consola de Google Cloud.
Desde la esquina superior derecha de la consola, haz clic en el botón Activar Cloud Shell: .
- Crea una cuenta de servicio.
- Descarga una clave privada como un archivo 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
Para iniciar Cloud Shell, sigue estos pasos:
Se abrirá una sesión de Cloud Shell dentro de un marco en la parte inferior en la consola.
Usa esta shell para ejecutar los comandos de gcloud
.
Shell local
Instala la CLI de gcloud
Verifica que hayas configurado el proyecto predeterminado que deseas para Google Cloud CLI (de lo contrario, debes especificar la marca --project
de forma explícita para cada comando más adelante):
gcloud config list project
Si no puedes ejecutar el siguiente comando para configurar un proyecto predeterminado, reemplaza PROJECT_ID
por el ID del proyecto deseado:
gcloud config set project PROJECT_ID
Ejecuta el siguiente comando para verificar tu versión de Google Cloud CLI.
Game Servers requiere la versión 306.0.0
o una posterior de gcloud CLI.
gcloud version
Para actualizar la instalación, ejecuta el siguiente comando:
gcloud components update
curl / PowerShell
Para usar la API de REST con curl
o Windows PowerShell, haz lo siguiente:
Biblioteca cliente
Google Cloud Game Servers se puede controlar de manera programática mediante una biblioteca cliente. Consulta Descripción general de bibliotecas cliente a fin de obtener instrucciones para usar la biblioteca y la autenticación.
Crea una configuración
Asegúrate de haber creado una implementación de Game Servers.
Puedes crear una configuración de Game Servers en una implementación mediante Google Cloud CLI.
Sigue estos pasos a fin de crear una configuración de servidor para videojuegos:
Copia la siguiente especificación de flota en un archivo:
- 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
Copia la siguiente especificación de configuración de escalamiento en un archivo:
- name: scaling-config-1 fleetAutoscalerSpec: policy: type: Buffer buffer: bufferSize: 1 minReplicas: 0 maxReplicas: 4
Ejecuta el siguiente comando y reemplaza los valores del marcador de posición, como deploymentID y configID, por los valores apropiados:
gcloud game servers configs create configID --deployment deploymentID --fleet-configs-file fleetSpecFile --scaling-configs-file scalingConfigsFile
Los marcadores de posición de variables corresponden a las siguientes descripciones:
- configID es un identificador único que puedes especificar para esta configuración.
- deploymentID es el identificador único de la implementación.
- fleetSpecFile es la ruta al archivo con la especificación de la flota de Agones.
- scalingConfigsFile es la ruta al archivo con la especificación de escalamiento.
Establece la configuración para una implementación
Después de crear una configuración de Game Servers con una política de escalamiento, configúrala como predeterminada con solo actualizar el lanzamiento para la implementación de Game Servers.
Game Servers aplica el comportamiento de escalamiento a todos los clústeres.
Verifica las especificaciones del escalamiento
Para determinar si Game Servers aplicó el escalamiento configurado a un clúster, ejecuta el siguiente comando para cada clúster dentro del dominio. Reemplaza el marcador de posición namespace por el espacio de nombres que especificaste cuando registraste el clúster de Kubernetes como un clúster de Game Servers:
kubectl get fleetautoscaler --namespace namespace
Los marcadores de posición de variables corresponden a las siguientes descripciones:
- namespace es el espacio de nombres que usaste cuando te registraste.
Escala solo clústeres específicos
Se recomienda limitar la configuración de escalamiento a clústeres específicos de Game Servers en un dominio. Para ello, agrega una etiqueta a los clústeres y, luego, orienta solo a esos clústeres con la etiqueta en la configuración de escalamiento.
Lleva a cabo los pasos siguientes:
Actualiza el clúster para agregar una etiqueta. Las etiquetas son pares clave-valor con el formato
key=value
. En este ejemplo, especifica la etiqueta como--labels=cloud=true
.gcloud game servers clusters update gscID --realm=realmID --location=region \ --update-labels=labels --no-dry-run
Los demás marcadores de posición de variables corresponden a las siguientes descripciones:
- gscID es un identificador único que puedes especificar para este clúster.
- realmID es el identificador único del dominio en el que deseas almacenar el clúster.
region es la región del clúster. Elige la misma región que el dominio superior.
Para crear una configuración, sigue los pasos en la sección Crea una configuración con la siguiente adición: agrega la etiqueta a la especificación de la configuración de escalamiento. Por ejemplo:
- name: scaling-config-1 fleetAutoscalerSpec: policy: type: Buffer buffer: bufferSize: 1 minReplicas: 0 maxReplicas: 4 selectors: - labels: "cloud": "true"
Establece la configuración como la predeterminada mediante la actualización del lanzamiento de la implementación de Game Servers.
Game Servers solo aplica configuraciones de escalamiento a los clústeres de Game Servers que tienen una etiqueta que coincide con el selector de etiquetas en la configuración de escalamiento. Por lo tanto, en este ejemplo, cualquier clúster que etiquetaste con cloud=true
obtiene una configuración de escalamiento y cualquier clúster sin esa etiqueta no obtiene una configuración de escalamiento.
Crea programas de escalamiento
Game Servers te permite configurar varios programas de escalamiento. Puedes configurar varios programas de escalamiento que incluyan horas de inicio y de finalización opcionales o programas recurrentes, conocidos como programas cron. También puedes combinar varios programas recurrentes.
Game Servers evalúa las horas de inicio y finalización en el horario universal coordinado (UTC). Se admiten otras zonas horarias como un desplazamiento de UTC. Las horas de inicio y finalización tienen el formato de strings de fecha RFC 3339. La precisión más baja que admite Game Servers es de minutos.
Game Servers evalúa los programas de escalamiento en el orden en que se enumeran en un archivo de configuración hasta que se encuentra un programa coincidente. En esta sección, se describe una variedad de ejemplos de programación.
Crea varios programas de escalamiento
Puedes adaptar la siguiente especificación de programas de escalamiento para eventos especiales. En este ejemplo, Game Servers aplica los siguientes programas de escalamiento:
scaling-config-june1-and-7
el 1 de junio de 2020 entre las 17:00 y 22:30, así como el 7 de junio de 2020 entre las 12:00 p.m. y las 18:00La configuración predeterminada de
scaling-config-default
para todas las demás horas entre el 25 de mayo de 2020 y el 31 de mayo de 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
Crea programas de escalamiento recurrentes
En la siguiente especificación de ejemplo, se muestra un programa de escalamiento cron recurrente para controlar un aumento de capacidad durante las horas de mayor actividad. En este ejemplo, Game Servers aplica los siguientes programas de escalamiento:
scaling-config-weekday-peak
durante los días de semana entre las 17:00 y las 20:00scaling-config-weekend-peak
durante los fines de semana entre las 13:00 y las 17:00La configuración predeterminada de
scaling-config-default
en todos los demás horarios- 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
Crea varios programas de escalamiento recurrentes
Las especificaciones de escalamiento pueden incluir campos de hora de inicio y finalización, así como un programa cron recurrente. En este ejemplo, Game Servers aplica los siguientes programas de escalamiento:
scaling-config-july4
del 4 de julio al 7 de julio entre las 9:00 y las 23:00scaling-config-peak
todos los días entre 17:00 y 22:00La configuración predeterminada de
scaling-config-default
en todos los demás horarios- 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
¿Qué sigue?
Obtén más información sobre cómo implementar una configuración.
Obtén más información sobre cómo borrar una configuración.