Questa pagina spiega come creare e gestire una config di Game Servers che specifica il comportamento di scalabilità di un deployment. La configurazione di scalabilità può essere personalizzata per scegliere come target solo specifici cluster di Game Servers in un'area di autenticazione.
Prima di iniziare
Prima di iniziare, ti consigliamo di acquisire familiarità con i concetti principali nella panoramica dei server di gioco. Assicurati di aver eseguito anche le seguenti attività:
- Assicurati di aver attivato l'API Game Services. Abilita l'API Game Services
- Scegli una shell con gcloud CLI installata o utilizza un client API:
Vai alla console Google Cloud.
Nell'angolo in alto a destra della console, fai clic sul pulsante Attiva Cloud Shell:
- Crea un account di servizio.
- Scarica una chiave privata come file 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
Per avviare Cloud Shell, esegui questi passaggi:
Una sessione di Cloud Shell si apre all'interno di un frame più in basso nella console.
Utilizza questa shell per eseguire i comandi gcloud
.
Shell locale
Installare l'interfaccia a riga di comando gcloud.
Verifica di aver impostato il progetto predefinito desiderato per Google Cloud CLI (in caso contrario dovrai specificare il flag --project
in modo esplicito per ogni comando in un secondo momento):
gcloud config list project
In caso contrario, puoi eseguire il seguente comando per impostare un progetto predefinito, sostituendo PROJECT_ID
con l'ID progetto desiderato :
gcloud config set project PROJECT_ID
Esegui il comando seguente per verificare la tua versione di Google Cloud CLI.
Game Servers richiede la versione 306.0.0
o successiva dellgcloud CLI.
gcloud version
Per aggiornare l'installazione, esegui il comando seguente:
gcloud components update
curl / PowerShell
Per utilizzare l'API REST con curl
o Windows PowerShell, segui questi passaggi:
Libreria client
I server di gioco Google Cloud possono essere controllati in modo programmatico utilizzando una libreria client. Per istruzioni sull'utilizzo della libreria e l'autenticazione, consulta la panoramica sulle librerie client.
Creazione di una configurazione
Assicurati di aver creato un deployment di Game Servers.
Puoi creare una configurazione di Game Servers in un deployment utilizzando Google Cloud CLI.
Per creare una configurazione del server di gioco:
Copia la seguente specifica del parco risorse in un file:
- 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 seguente specifica di configurazione di scalabilità in un file:
- name: scaling-config-1 fleetAutoscalerSpec: policy: type: Buffer buffer: bufferSize: 1 minReplicas: 0 maxReplicas: 4
Esegui questo comando e sostituisci i valori segnaposto, ad esempio deploymentID e configID, con i valori appropriati:
gcloud game servers configs create configID --deployment deploymentID --fleet-configs-file fleetSpecFile --scaling-configs-file scalingConfigsFile
I segnaposto delle variabili corrispondono alle seguenti descrizioni:
- configID è un identificatore univoco che puoi specificare per questa configurazione.
- deploymentID è l'identificatore univoco del deployment.
- fleetSpecFile è il percorso del file con la specifica del parco risorse Agones.
- scalingConfigsFile è il percorso del file con la specifica di scalabilità.
Configurazione della configurazione di un deployment
Dopo aver creato una configurazione di Game Servers con un criterio di scalabilità, impostala come configurazione predefinita aggiornando l'implementazione per il deployment di Game Servers.
Game Servers applica il comportamento di scalabilità a tutti i cluster.
Verifica delle specifiche di scalabilità
Per determinare se Game Servers ha applicato la scalabilità configurata a un cluster, esegui il comando seguente per ogni cluster all'interno dell'area di autenticazione. Sostituisci il segnaposto namespace con lo spazio dei nomi specificato durante la registrazione del cluster Kubernetes come cluster di Game Servers:
kubectl get fleetautoscaler --namespace namespace
I segnaposto delle variabili corrispondono alle seguenti descrizioni:
- namespace è lo spazio dei nomi utilizzato per la registrazione.
Scala solo cluster specifici
Potresti voler limitare la configurazione della scalabilità a cluster di Game Servers specifici in un'area di autenticazione. Per farlo, aggiungi un'etichetta ai cluster e scegli come target solo i cluster con l'etichetta nella configurazione di scalabilità.
Segui questi passaggi:
Aggiorna il cluster per aggiungere un'etichetta. Le etichette sono coppie chiave/valore nel formato
key=value
. Per questo esempio, specifica l'etichetta--labels=cloud=true
.gcloud game servers clusters update gscID --realm=realmID --location=region \ --update-labels=labels --no-dry-run
Gli altri segnaposto di variabili corrispondono alle seguenti descrizioni:
- gscID è un identificatore univoco che puoi specificare per questo cluster.
- realmID è l'identificatore univoco del regno in cui vuoi archiviare il cluster.
region è l'area geografica del cluster. Scegli la stessa area geografica dell'area di autenticazione principale.
Crea una configurazione seguendo la procedura descritta nella sezione Creazione di una configurazione con la seguente aggiunta: aggiungi l'etichetta alla specifica di configurazione di scalabilità. Ad esempio:
- name: scaling-config-1 fleetAutoscalerSpec: policy: type: Buffer buffer: bufferSize: 1 minReplicas: 0 maxReplicas: 4 selectors: - labels: "cloud": "true"
Imposta la configurazione come predefinita aggiornando l'implementazione per il deployment di Game Servers.
Game Servers applica le configurazioni di scalabilità solo ai cluster di Game Servers con un'etichetta corrispondente al selettore di etichette nella configurazione di scalabilità. Quindi, in questo esempio, i cluster etichettati con cloud=true
riceveranno una configurazione di scalabilità e tutti i cluster privi di tale etichetta non riceveranno una configurazione di scalabilità.
Creazione di pianificazioni di scalabilità
Game Servers consente di configurare più pianificazioni di scalabilità. Puoi configurare più pianificazioni di scalabilità che includono orari di inizio e di fine facoltativi o programmazioni ricorrenti, note come pianificazioni cron. Puoi anche combinare più pianificazioni ricorrenti.
Game Servers valuta le ore di inizio e fine nel fuso orario UTC (Coordinated Universal Time). Il fuso orario UTC è supportato anche per altri fusi orari. Le ore di inizio e di fine vengono formattate come stringhe di data RFC 3339. I Game Servers con la precisione più bassa sono di minuti.
Game Servers valuta le pianificazioni di scalabilità nell'ordine in cui sono elencate in una configurazione finché non viene trovata una pianificazione corrispondente. Questa sezione descrive una serie di esempi di pianificazione.
Creazione di più pianificazioni di scalabilità
Puoi adattare la seguente specifica di pianificazione della scalabilità per eventi speciali. In questo esempio, Game Servers applica le seguenti pianificazioni di scalabilità:
scaling-config-june1-and-7
dalle 17:00 alle 22:30 e dalle 00:00 alle 18:00 del 1° giugno 2020La configurazione predefinita di
scaling-config-default
per tutti gli altri orari tra il 25 maggio 2020 e il 31 maggio 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
Creazione di pianificazioni di scalabilità ricorrenti
La specifica di esempio seguente illustra un programma di scalabilità cron ricorrente per gestire un aumento di capacità durante le ore di punta. In questo esempio, Game Servers applica le seguenti pianificazioni di scalabilità:
scaling-config-weekday-peak
nei giorni feriali dalle 17:00 alle 20:00scaling-config-weekend-peak
durante i fine settimana dalle 13:00 alle 17:00La configurazione predefinita di
scaling-config-default
in tutte le altre situazioni- 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
Creazione di più pianificazioni di scalabilità ricorrenti
Le specifiche di scalabilità possono includere sia i campi di inizio sia di fine, nonché una pianificazione cron ricorrente. In questo esempio, Game Servers applica le seguenti pianificazioni di scalabilità:
scaling-config-july4
dal 4 luglio al 7 luglio dalle 09:00 alle 23:00scaling-config-peak
tutti i giorni dalle 17:00 alle 22:00La configurazione predefinita di
scaling-config-default
in tutte le altre situazioni- 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
Passaggi successivi
Scopri come implementare una configurazione.
Scopri come eliminare una configurazione.