原文链接:在 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离线安装包发布地址http://store.lameleg.com ,欢迎体验。 使用了最新的sealos v3.3.6版本。 作了主机名解析配置优化,lvscare 挂载/lib/module解决开机启动ipvs加载问题, 修复lvscare社区netlink与3.10内核不兼容问题,sealos生成百年证书等特性。更多特性 https://github.com/fanux/sealos 。欢迎扫描下方的二维码加入钉钉群 ,钉钉群已经集成sealos的机器人实时可以看到sealos的动态。

最新文章

  1. jQuery弹出关闭遮罩层
  2. Launch Screen在iOS7/8中的实现
  3. ural 1152. False Mirrors
  4. Delphi如何打开DBF数据库
  5. Flex 医疗行程图
  6. C#double转化成字符串 保留小数位数, 不以科学计数法的形式出现
  7. javascript高级培训课程(一)
  8. NeoOcean - Unity3D Ocean Waves Simulation
  9. python学习教程(九)sqlalchemy框架的modern映射
  10. 【Demo 0016】SQLite 数据库
  11. windows server 搭建radius服务器
  12. 给Pomelo的聊天室添加time的RPC调用
  13. 新装的SSMS一打开就显示VS许可证过期,但VS又运行正常,解决方法。
  14. c++入门篇七
  15. Hystrix介绍
  16. java设计模式自我总结---适配器模式
  17. Win10系列:VC++ Direct3D模板介绍2
  18. Qt之美(一):D指针/私有实现
  19. 基于Python的测试驱动开发实战
  20. Python第四次作业

热门文章

  1. 【python开发】迈出第一步,这可能是我唯一一次的Python开发了
  2. uni-app 修改富文本信息中的图片样式
  3. 持续部署入门:基于 Kubernetes 实现滚动发布
  4. 高可用集群corosync+pacemaker之pcs安装使用
  5. Kubernetes-16:一文详解ServiceAccount及RBAC权限控制
  6. Fliptile(POJ 3279)
  7. Redis 三大缓存
  8. Scala的lazy应用
  9. Bootstrap一周学习小结
  10. Mock简明文档