在 Minecraft 中管理 Kubernetes 集群

原文鏈接:在 Minecraft 中管理 Kubernetes 集群

微軟 2015 年收購 Minecraft 之後不久開源了一個項目叫 Dockercraft,這個項目當時看起來非常有趣,通過 Dockercraft,玩家可以在 Minecraft 中啟動或停止一個 Docker 容器,而 Docker 容器會以一個 N*N 的方塊房子的方式顯示在玩家面前,每一棟房子都代表一個 Docker 容器。

房子的外面掛著顯示容器資訊的看板,包括容器的名稱、正在運行的進程、CPU 與記憶體的使用率等資訊。

房子裡面是管理容器的開關,扳動牆上的開關可以停止和啟動容器,這對於碼農來說是一個非常有趣的伺服器。

我尋思著,既然有了 Dockercraft,怎麼能沒有 Kubecraft 呢?Google 搜了下還真有,項目名字正好就叫 Kubecraft。它的功能和 Dockercraft 類似,可以管理 Kubernetes 集群中的容器,每一個房子代表一個 Pod,房子裡面有開關可以銷毀 Pod,真是太好玩了(太無聊了……)。

官方倉庫給的部署方式是用 Docker 跑的,命令如下:

$ docker run -t -d -i -p 25565:25565 \
--name kubecraft \
-e KUBE_CFG_FILE=/etc/kubeconfig \
-v ~/.kube/config:/etc/kubeconfig \
stevesloka/kubecraft

如果想部署在 Kubernetes 中,可以參考下面的部署清單:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: kubecraft
  labels:
    app: kubecraft
spec:
  replicas: 1 
  selector:
    matchLabels:
      app: kubecraft
  template:
    metadata:
      labels:
        app: kubecraft
    spec:
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - podAffinityTerm:
              labelSelector:
                matchExpressions:
                - key: app
                  operator: In
                  values:
                  - kubecraft 
              topologyKey: kubernetes.io/hostname
            weight: 1
      tolerations:
      - key: node-role.kubernetes.io/ingress
        operator: Exists
        effect: NoSchedule
      containers:
      - name: kubecraft
        image: stevesloka/kubecraft 
        tty: true
        stdin: true
        env:
        - name: KUBE_CFG_FILE 
          value: /etc/kubeconfig
        ports:
        - containerPort: 25565 
          protocol: TCP
        volumeMounts:
        - mountPath: /etc/kubeconfig
          subPath: kubeconfig
          name: kubeconfig
      volumes:
      - name: kubeconfig
        configMap:
          name: kubeconfig
---
apiVersion: v1
kind: Service
metadata:
  name: kubecraft
  labels:
    app: kubecraft
spec:
  selector:
    app: kubecraft
  ports:
    - protocol: TCP
      name: http
      port: 25565
      targetPort: 25565

一定要加上 tty: truestdin:true,不然容器無法啟動!

你還需要先創建一個 Configmap 來保存 kubeconfig,例如:

$ kubectl create cm kubeconfig --from-file=/root/.kube/config

然後就可以愉快地部署了。

除了 Kubecraft 之外,還有一個項目叫 KubeCraftAdmin,功能上並沒有什麼太大的差異,只是每一個動物代表一個 Pod,你只要幹掉一隻雞🐔,Kubernetes 中的 Pod 就被乾死了,刺不刺激?


Kubernetes 1.18.2 1.17.5 1.16.9 1.15.12離線安裝包發布地址//store.lameleg.com ,歡迎體驗。 使用了最新的sealos v3.3.6版本。 作了主機名解析配置優化,lvscare 掛載/lib/module解決開機啟動ipvs載入問題, 修復lvscare社區netlink與3.10內核不兼容問題,sealos生成百年證書等特性。更多特性 //github.com/fanux/sealos 。歡迎掃描下方的二維碼加入釘釘群 ,釘釘群已經集成sealos的機器人實時可以看到sealos的動態。

Tags: