Skip to main content

Game Data Persistence

Overview

minecraft-server data is stored in the /data path. We can mount a disk to this path to achieve persistent storage of game data.

Creating StorageClass

To persist game data on TKE, you can use CBS (Cloud Block Storage). First create a StorageClass:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: minecraft
parameters:
diskChargeType: POSTPAID_BY_HOUR
diskType: CLOUD_HSSD # High-Performance SSD
allowVolumeExpansion: true
provisioner: com.tencent.cloud.csi.cbs
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer # Create CBS after the first Pod scheduling to avoid Pod and CBS being in different availability zones and unable to bind

Declaring and Mounting Volume in GameServerSet

Focus on the highlighted sections:

apiVersion: game.kruise.io/v1alpha1
kind: GameServerSet
metadata:
name: minecraft
spec:
replicas: 3
updateStrategy:
rollingUpdate:
podUpdatePolicy: InPlaceIfPossible
gameServerTemplate:
volumeClaimTemplates:
- metadata:
name: minecraft
spec:
accessModes: ["ReadWriteOnce"]
storageClassName: minecraft
resources:
requests:
storage: 20Gi
spec:
containers:
- image: itzg/minecraft-server:latest
name: minecraft
volumeMounts:
- name: minecraft
mountPath: /data
env:
- name: EULA
value: "TRUE"
- name: ONLINE_MODE
value: "FALSE"