大家好,我是小碗汤,今天分享一个用Golang开发,很好玩的工具`KubeCraftAdmin`[1]:用Minecraft方式管理k8s的工具,感兴趣的兄弟不妨玩一玩
Minecraft:我的世界,是微软旗下的沙盒游戏。玩家可以在一个3D世界内与方块进行交互。这是一款广受欢迎的游戏,玩家可以用数字块构建梦幻般的虚拟世界
为什么没有一个身历其境的3D沙盒用户界面,来管理容器编排中的工作负载呢?
KubeCraftAdmin
的灵感来自于MakeCode for Minecraft 让学习编码变得超级有趣[2],通过WebSocket Server,通过编程方式操纵Minecraft中的世界。
项目用不同的围栏(每个namespace一个)中的不同动物填充。每个动物对应于k8s集群中的一个资源。
连接到KubeCraft Admin WS,就可以连接到指定的k8s集群。通过动物反映集群资源。当资源被删除时,动物会死亡。相反地,在Minecraft中杀死动物会删除相应的资源。
KubeCraftAdmin: 冒险家的管理工具
你会杀了这个看似无辜的服务吗?
这个项目允许你通过Minecraft做基本的Kubernetes管理。
如果想实操,需要以下条件才行:
运行容器,设置端口映射、挂载.kube目录。容器内部监听8000端口。可以使用环境变量namespaces
从集群中指定1到4个名称空间。
docker run --name kca -d -p 8000:8000 -v /root/.kube:/.kube -e namespaces=kca1,kca2 erjadi/kubecraftadmin
# docker ps -f name=kca
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58ee6241048b erjadi/kubecraftadmin "/app/main" 30 seconds ago Up 29 seconds 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp kca
Minecraft
基础版Activate Cheats
选项,创建一个新的世界/connect 10.0.0.1:8000/ws
KubeCraftAdmin是用Golang写的。它建立在Sandertv[4]的MCWSS[5]项目之上。
这个项目在Minecraft基础版和教育版上,利用了Websocket Server[6]的功能。WS连接是一个Minecraft客户端连接,所有的动作都是通过客户端执行的。Server/Local
不受影响,也不受此项目的控制。这意味着我们需要激活作弊机制,以便能够生成[7]或杀死[8]实体。
可以在kubecraftadmin.go[9]中找到的主要流程。
简化的KubeCraftAdmin连接到Kubernetes集群,生成所需的实体,并启动一个无尽的循环函数LoopReconcile。每秒钟它都会启动一个名为ReconcileKubetoMC的同步函数,它的基本内容是:
对于反向同步,依赖于mobEvent,它触发ReconcileMCtoKubeMob的执行。基本上执行相同的检查,但这次是将Minecraft实体作为标准,并删除Kubernetes相应的资源。
本文翻译自:https://reurl.cc/MbZXrW,版权归原作者所有
[1]KubeCraftAdmin
: https://github.com/erjadi/kubecraftadmin/
[2]MakeCode for Minecraft 让学习编码变得超级有趣: https://www.microsoft.com/en-us/research/blog/code-minecraft/
[3]beacon: https://minecraft.gamepedia.com/Beacon
[4]Sandertv: https://github.com/Sandertv
[5]MCWSS: https://github.com/Sandertv/mcwss
[6]Websocket Server: https://minecraft.gamepedia.com/Commands/wsserver
[7]生成: https://minecraft.gamepedia.com/Commands/summon
[8]杀死: https://minecraft.gamepedia.com/Commands/kill
[9]kubecraftadmin.go: /src/app/kubecraftadmin.go