一个有趣的Go项目,3D界面管理k8s集群,真好玩!
大家好,我是小碗湯,今天分享一個(gè)用Golang開(kāi)發(fā),很好玩的工具`KubeCraftAdmin`[1]:用Minecraft方式管理k8s的工具,感興趣的兄弟不妨玩一玩。文末有視頻,供您鑒賞~
Minecraft:我的世界,是微軟旗下的沙盒游戲。玩家可以在一個(gè)3D世界內(nèi)與方塊進(jìn)行交互。這是一款廣受歡迎的游戲,玩家可以用數(shù)字塊構(gòu)建夢(mèng)幻般的虛擬世界
為什么沒(méi)有一個(gè)身歷其境的3D沙盒用戶界面,來(lái)管理容器編排中的工作負(fù)載呢?
KubeCraftAdmin的靈感來(lái)自于MakeCode for Minecraft 讓學(xué)習(xí)編碼變得超級(jí)有趣[2],通過(guò)WebSocket Server,通過(guò)編程方式操縱Minecraft中的世界。
項(xiàng)目用不同的圍欄(每個(gè)namespace一個(gè))中的不同動(dòng)物填充。每個(gè)動(dòng)物對(duì)應(yīng)于k8s集群中的一個(gè)資源。
豬是Pods
牛是ReplicaSets
雞是Services
馬是Deployments
連接到KubeCraft Admin WS,就可以連接到指定的k8s集群。通過(guò)動(dòng)物反映集群資源。當(dāng)資源被刪除時(shí),動(dòng)物會(huì)死亡。相反地,在Minecraft中殺死動(dòng)物會(huì)刪除相應(yīng)的資源。
KubeCraftAdmin
KubeCraftAdmin: 冒險(xiǎn)家的管理工具
你會(huì)殺了這個(gè)看似無(wú)辜的服務(wù)嗎?這個(gè)項(xiàng)目允許你通過(guò)Minecraft做基本的Kubernetes管理。
如果想實(shí)操,需要以下條件才行:
一個(gè)k8s集群
在集群內(nèi)部或外部運(yùn)行kubecraft容器,需要可以連接到k8s集群和Minecraft客戶端
Minecraft基礎(chǔ)版
運(yùn)行KubeCraftAdmin
運(yùn)行容器,設(shè)置端口映射、掛載.kube目錄。容器內(nèi)部監(jiān)聽(tīng)8000端口。可以使用環(huán)境變量namespaces從集群中指定1到4個(gè)名稱空間。
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啟動(dòng) Minecraft 基礎(chǔ)版
打開(kāi)Activate Cheats選項(xiàng),創(chuàng)建一個(gè)新的世界
當(dāng)你用下面的命令登錄到服務(wù)器后,你應(yīng)該會(huì)看到KubeCraftAdmin的閃屏界面。在游戲開(kāi)始時(shí),需要獲得一些道具(刀劍、TNT、火石)。
找一個(gè)區(qū)域生成kubecraft圍欄。輸入init生成結(jié)構(gòu)。
最后,在beacon[3]上激活集群的連接。
到此為止,你的圍欄中應(yīng)該填充一些動(dòng)物(k8s資源)。
技術(shù)細(xì)節(jié)
KubeCraftAdmin是用Golang寫(xiě)的。它建立在Sandertv[4]的MCWSS[5]項(xiàng)目之上。
這個(gè)項(xiàng)目在Minecraft基礎(chǔ)版和教育版上,利用了Websocket Server[6]的功能。WS連接是一個(gè)Minecraft客戶端連接,所有的動(dòng)作都是通過(guò)客戶端執(zhí)行的。Server/Local不受影響,也不受此項(xiàng)目的控制。這意味著我們需要激活作弊機(jī)制,以便能夠生成[7]或殺死[8]實(shí)體。
可以在kubecraftadmin.go[9]中找到的主要流程。
簡(jiǎn)化的KubeCraftAdmin連接到Kubernetes集群,生成所需的實(shí)體,并啟動(dòng)一個(gè)無(wú)盡的循環(huán)函數(shù)LoopReconcile。每秒鐘它都會(huì)啟動(dòng)一個(gè)名為ReconcileKubetoMC的同步函數(shù),它的基本內(nèi)容是:
在Minecraft中枚舉實(shí)體
在Kubernetes中枚舉資源
在Minecraft生成或殺死差異
對(duì)于反向同步,依賴于mobEvent,它觸發(fā)ReconcileMCtoKubeMob的執(zhí)行。基本上執(zhí)行相同的檢查,但這次是將Minecraft實(shí)體作為標(biāo)準(zhǔn),并刪除Kubernetes相應(yīng)的資源。
以下附上視頻,供您鑒賞,求個(gè)關(guān)注、求個(gè)贊👍🏻可以嗎?
本文翻譯自:https://reurl.cc/MbZXrW,版權(quán)歸原作者所有
歡迎小伙伴們投稿原創(chuàng)文章~
投稿格式:markdown格式的md文件
投稿郵箱: pub@kubeinfo.cn
參考資料
[1]
KubeCraftAdmin: https://github.com/erjadi/kubecraftadmin/
[2]MakeCode for Minecraft 讓學(xué)習(xí)編碼變得超級(jí)有趣: 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
點(diǎn)個(gè)在看你最好看
總結(jié)
以上是生活随笔為你收集整理的一个有趣的Go项目,3D界面管理k8s集群,真好玩!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 让 WPF 的 RadioButton
- 下一篇: 将k8s制作成3D射击游戏,好玩到停不下