Microk8s Minecraft Server
Als Übung wollte ich einen Minecraft Server auf Basis von Kubernetes aufsetzen. Anleitungen dazu gibt es zuhauf.
- https://www.civo.com/learn/deploying-minecraft-server-kubernetes
- https://forum.level1techs.com/t/kubernetes-homelab-minecraft-server/209207
- https://github.com/solarhess/kubernetes-minecraft-server
Aber am besten hat mir doch dieses eine YAML gefallen: https://gist.github.com/itzg/d1e8c9161de205ad6e7f4263503ea7eb
Das habe ich nun auch adaptiert:
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
server: survive
name: survive
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
server: survive-backups
name: survive-backups
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Mi
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
server: survive
name: survive
spec:
replicas: 1
selector:
matchLabels:
server: survive
template:
metadata:
labels:
server: survive
spec:
containers:
- name: mc
env:
- name: EULA
value: "TRUE"
- name: TYPE
value: PAPER
- name: MODE
value: survival
- name: MOTD
value: "Sali, mini Frunde."
- name: PVP
value: "false"
- name: MAX_MEMORY
value: "1G"
image: itzg/minecraft-server
imagePullPolicy: Always
stdin: true
tty: true
volumeMounts:
- mountPath: /data
name: survive
- name: backup
image: itzg/mc-backup:latest
securityContext:
runAsUser: 1000
env:
- name: INTERVAL_SEC
value: "21600"
- name: BACKUP_NAME
value: survive
- name: PRUNE_BACKUPS_DAYS
value: "2"
volumeMounts:
- mountPath: /data
name: survive
readOnly: true
- mountPath: /backups
name: backups
restartPolicy: Always
volumes:
- name: survive
persistentVolumeClaim:
claimName: survive
- name: backups
persistentVolumeClaim:
claimName: survive-backups
---
apiVersion: v1
kind: Service
metadata:
labels:
service: survive
name: survive
spec:
ports:
- name: mc-router
port: 25565
targetPort: 25565
selector:
server: survive
Doch ist der Server so nicht erreichbar. Da ich ja auf microk8s gesetzt habe. Da müssen wir noch den Ingress korrekt konfigurieren:
https://microk8s.io/docs/addon-ingress
---
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-ingress-tcp-microk8s-conf
namespace: ingress
data:
25565: "mc/survive:25565"
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: nginx-ingress-microk8s-controller
namespace: ingress
spec:
template:
spec:
containers:
- name: nginx-ingress-microk8s
ports:
- containerPort: 80
- containerPort: 443
- name: proxied-tcp-25565
containerPort: 25565
hostPort: 25565
protocol: TCP
Somit ist der Minecraft Server bereit.