Browse Source

Misc updates

Fred Damstra (k8s1) 2 years ago
parent
commit
7130327f6d
3 changed files with 185 additions and 1 deletions
  1. 173 0
      Workloads/minecraft.yaml
  2. 1 1
      Workloads/monkeybox.org/monkeybox.yaml
  3. 11 0
      microk8s_notes.md

+ 173 - 0
Workloads/minecraft.yaml

@@ -0,0 +1,173 @@
+# https://github.com/itzg/docker-minecraft-server/blob/master/README.md
+# 
+# Check health with:
+#  docker container inspect -f "{{.State.Health.Status}}" mc
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: minecraft
+  labels:
+    run: minecraft
+spec:
+  ports:
+    - name: rcon
+      port: 25575
+      targetPort: 25575
+    - name: server
+      port: 25565
+      targetPort: 25565
+  selector:
+    run: minecraft
+  type: LoadBalancer
+  loadBalancerIP: 10.42.42.215
+  externalTrafficPolicy: Local
+---
+apiVersion: v1
+kind: PersistentVolume
+metadata:
+  name: minecraft-data
+spec:
+  capacity:
+    storage: 10Ti
+  volumeMode: Filesystem
+  accessModes:
+    - ReadWriteMany
+  persistentVolumeReclaimPolicy: Retain # Keep 4eva
+  storageClassName: default
+  mountOptions:
+    - hard
+    - nfsvers=3
+  nfs:
+    path: /mnt/DroboFS/Shares/Kubernetes/volumes/static/minecraft-data
+    server: 10.42.42.10
+  claimRef:
+    name: minecraft-data
+    namespace: default
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  name: minecraft-data
+spec:
+  storageClassName: standard
+  accessModes:
+    - ReadWriteMany
+  resources:
+    requests:
+      storage: 10Ti
+status: {}
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: minecraft
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      run: minecraft
+  strategy:
+    type: Recreate
+  template:
+    metadata:
+      labels:
+        run: minecraft
+    spec:
+      terminationGracePeriodSeconds: 90
+      containers:
+        - image: itzg/minecraft-server:latest
+          imagePullPolicy: "Always"
+          name: minecraft
+          env:
+            - name: TZ
+              value: US/Michigan
+            - name: MEMORY
+              value: "3G"
+            # max tick time is default 60.0 seconds (60000 here), -1 to disable
+            - name: MAX_TICK_TIME
+              value: "-1"
+            - name: MAX_PLAYERS
+              value: "6"
+            - name: VERSION
+              value: "1.19.2"
+            - name: EULA
+              value: "TRUE"
+            - name: CF_API_KEY
+              value: "$$2a$$10$$JU91aPtRDMOid0cAfwDGwuk3IETckr93LyV/zW3Xfz49TrT0PoiYy"
+            - name: TYPE
+              value: "FORGE"
+#            - name:  GENERIC_PACK
+#              value: "lol.zip"
+#            - name: TYPE
+#              value: "AUTO_CURSEFORGE"
+#            - name: CF_MODPACK_ZIP
+#              value: "lol.zip"
+            # Values below this line will likely have no effect.
+            # Update the configuration in the data directory instead
+            - name: MOTD
+              value: "Enjoy MonkeyBOX!"
+            - name: OPS
+              value: "Aspectra7495"
+            - name: RCON_PASSWORD
+              value: "0202"
+            - name: ANNOUNCE_PLAYER_ACHIEVEMENTS
+              value: "true"
+            - name: MODE
+              value: "survival"
+            - name: SERVER_NAME
+              value: "monkeybox"
+            - name: STOP_SERVER_ANNOUNCE_DELAY
+              value: "60"
+            - name: ENABLE_ROLLING_LOGS
+              value: "true"
+          ports:
+            - containerPort: 25575
+            - containerPort: 25565
+          resources:
+            limits:
+              memory: "8192Mi"
+              cpu: "8000m"
+            requests:
+              memory: "3384Mi"
+              cpu: "2000m"
+          volumeMounts:
+            - mountPath: /data
+              name: minecraft-data
+      restartPolicy: Always
+      volumes:
+        - name: minecraft-data
+          persistentVolumeClaim:
+            claimName: minecraft-data
+status: {}
+#---
+## Hosting
+#apiVersion: networking.k8s.io/v1
+#kind: Ingress
+#metadata:
+#  name: minecraft-ingress
+#  annotations:
+#    cert-manager.io/cluster-issuer: "letsencrypt-prod"
+#    ## No basic auth for minecraft
+#    ## type of authentication
+#    #nginx.ingress.kubernetes.io/auth-type: basic
+#    ## name of the secret that contains the user/password definitions
+#    #nginx.ingress.kubernetes.io/auth-secret: basic-auth
+#    ## message to display with an appropriate context why the authentication is required
+#    #nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - Octoprint'
+#spec:
+#  tls:
+#  - hosts:
+#    - minecraft.monkeybox.org
+#    secretName: minecraft-tls
+#  rules:
+#  - host: minecraft.monkeybox.org
+#    http:
+#      paths:
+#      - path: /
+#        pathType: Prefix
+#        backend:
+#          service:
+#            name: minecraft
+#            port:
+#              number: 80

+ 1 - 1
Workloads/monkeybox.org/monkeybox.yaml

@@ -59,7 +59,7 @@ kind: Deployment
 metadata:
   name: monkeybox
 spec:
-  replicas: 2
+  replicas: 1
   selector:
     matchLabels:
       run: monkeybox

+ 11 - 0
microk8s_notes.md

@@ -150,3 +150,14 @@ sudo snap refresh microk8s --channel=latest/stable
 
 microk8s kubectl port-forward -n monitoring service/prometheus-k8s --address 0.0.0.0 9090:9090
 microk8s kubectl port-forward -n monitoring service/grafana --address 0.0.0.0 3000:3000
+
+# Fixing MetalLB
+
+MetalLB moved images to quay, resulting in a CrashBackOff loop
+
+To fix, ran:
+
+```
+microk8s.kubectl -n metallb-system patch deployment controller --type=json -p='[{"op":"replace","path":"/spec/template/spec/containers/0/image","value":"quay.io/metallb/controller:v0.9.3"}]'
+microk8s.kubectl -n metallb-system patch daemonset speaker --type=json -p='[{"op":"replace","path":"/spec/template/spec/containers/0/image","value":"quay.io/metallb/speaker:v0.9.3"}]'
+```