美文网首页
一个好玩的Go项目,3D界面管理k8s集群,真好玩

一个好玩的Go项目,3D界面管理k8s集群,真好玩

作者: 进击云原生 | 来源:发表于2022-01-10 00:01 被阅读0次

    大家好,我是小碗汤,今天分享一个用Golang开发,很好玩的工具KubeCraftAdmin:用Minecraft方式管理k8s的工具,感兴趣的兄弟不妨玩一玩。

    Minecraft:我的世界,是微软旗下的沙盒游戏。玩家可以在一个3D世界内与方块进行交互。这是一款广受欢迎的游戏,玩家可以用数字块构建梦幻般的虚拟世界

    为什么没有一个身历其境的3D沙盒用户界面,来管理容器编排中的工作负载呢?

    KubeCraftAdmin的灵感来自于MakeCode for Minecraft 让学习编码变得超级有趣,通过WebSocket Server,通过编程方式操纵Minecraft中的世界。

    项目用不同的围栏(每个namespace一个)中的不同动物填充。每个动物对应于k8s集群中的一个资源。

    • 猪是Pods
    • 牛是ReplicaSets
    • 鸡是Services
    • 马是Deployments

    连接到KubeCraft Admin WS,就可以连接到指定的k8s集群。通过动物反映集群资源。当资源被删除时,动物会死亡。相反地,在Minecraft中杀死动物会删除相应的资源。

    KubeCraftAdmin

    KubeCraftAdmin: 冒险家的管理工具

    你会杀了这个看似无辜的服务吗?

    这个项目允许你通过Minecraft做基本的Kubernetes管理。

    如果想实操,需要以下条件才行:

    • 一个k8s集群
    • 在集群内部或外部运行kubecraft容器,需要可以连接到k8s集群和Minecraft客户端
    • Minecraft基础版

    运行KubeCraftAdmin

    运行容器,设置端口映射、挂载.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
    
    1. 启动 Minecraft 基础版

    2. 打开Activate Cheats选项,创建一个新的世界

    1. 当你用下面的命令登录到服务器后,你应该会看到KubeCraftAdmin的闪屏界面。在游戏开始时,需要获得一些道具(刀剑、TNT、火石)。
    /connect 10.0.0.1:8000/ws
    
    1. 找一个区域生成kubecraft围栏。输入init生成结构。

    2. 最后,在beacon上激活集群的链接。

    3. 到此为止,你的围栏中应该填充一些动物(k8s资源)。

    技术细节

    KubeCraftAdmin是用Golang写的。它建立在SandertvMCWSS项目之上。

    这个项目在Minecraft基础版和教育版上,利用了Websocket Server的功能。WS连接是一个Minecraft客户端连接,所有的动作都是通过客户端执行的。Server/Local不受影响,也不受此项目的控制。这意味着我们需要激活作弊机制,以便能够生成杀死实体。

    可以在kubecraftadmin.go中找到的主要流程。

    简化的KubeCraftAdmin连接到Kubernetes集群,生成所需的实体,并启动一个无尽的循环函数LoopReconcile。每秒钟它都会启动一个名为ReconcileKubetoMC的同步函数,它的基本内容是:

    • 在Minecraft中枚举实体
    • 在Kubernetes中枚举资源
    • 在Minecraft生成或杀死差异

    对于反向同步,依赖于mobEvent,它触发ReconcileMCtoKubeMob的执行。基本上执行相同的检查,但这次是将Minecraft实体作为标准,并删除Kubernetes相应的资源。


    翻译自:Minecraft as a k8s admin tool

    原文

    本文首发于微信公众号【我的小碗汤】,扫左侧码关注,了解更多咨询,更有免费资源供您学习

    作者简洁

    作者:小碗汤,一位热爱、认真写作的小伙,目前维护原创公众号:『我的小碗汤』,专注于写go语言、docker、kubernetes、java等开发、运维知识等提升硬实力的文章,期待你的关注。转载说明:务必注明来源(注明:来源于公众号:我的小碗汤,作者:小碗汤)

    相关文章

      网友评论

          本文标题:一个好玩的Go项目,3D界面管理k8s集群,真好玩

          本文链接:https://www.haomeiwen.com/subject/cnnpcrtx.html