真是活久見,在 Minecraft 的虛擬游戲里竟然還能管理 Kubernetes!

更多奇技淫巧歡迎訂閱博客:https://fuckcloudnative.io
微軟 2015 年收購 Minecraft 之后不久開源了一個項(xiàng)目叫 Dockercraft[1],這個項(xiàng)目當(dāng)時看起來非常有趣,通過 Dockercraft[2],玩家可以在 Minecraft 中啟動或停止一個 Docker 容器,而 Docker 容器會以一個 N*N 的方塊房子的方式顯示在玩家面前,每一棟房子都代表一個 Docker 容器。

房子的外面掛著顯示容器信息的看板,包括容器的名稱、正在運(yùn)行的進(jìn)程、CPU 與內(nèi)存的使用率等信息。
房子里面是管理容器的開關(guān),扳動墻上的開關(guān)可以停止和啟動容器,這對于碼農(nóng)來說是一個非常有趣的服務(wù)器。
我尋思著,既然有了 Dockercraft,怎么能沒有 Kubecraft 呢?Google 搜了下還真有,項(xiàng)目名字正好就叫 Kubecraft[3]。它的功能和 Dockercraft 類似,可以管理 Kubernetes 集群中的容器,每一個房子代表一個 Pod,房子里面有開關(guān)可以銷毀 Pod,真是太好玩了(太無聊了......)。
官方倉庫[4]給的部署方式是用 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: true 和 stdin:true,不然容器無法啟動!
你還需要先創(chuàng)建一個 Configmap 來保存 kubeconfig,例如:
$ kubectl create cm kubeconfig --from-file=/root/.kube/config
然后就可以愉快地部署了。
除了 Kubecraft 之外,還有一個項(xiàng)目叫 KubeCraftAdmin,功能上并沒有什么太大的差異,只是每一個動物代表一個 Pod,你只要干掉一只雞?,Kubernetes 中的 Pod 就被干死了,刺不刺激?
最后,如果你對該項(xiàng)目感興趣,公眾號后臺回復(fù) kubecraftadmin 即可獲取 KubeCraftAdmin 項(xiàng)目地址。
參考資料
Dockercraft: https://github.com/docker/dockercraft
[2]Dockercraft: https://github.com/docker/dockercraft
[3]Kubecraft: https://github.com/stevesloka/kubecraft
[4]官方倉庫: https://github.com/stevesloka/kubecraft


你可能還喜歡
點(diǎn)擊下方圖片即可閱讀

云原生是一種信仰 ?

掃碼關(guān)注公眾號
后臺回復(fù)?k8s?獲取史上最方便快捷的 Kubernetes 高可用部署工具,只需一條命令,連 ssh 都不需要!

點(diǎn)擊 "閱讀原文" 獲取更好的閱讀體驗(yàn)!
??給個「在看」,是對我最大的支持??

