前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >靠,上班打游戏!不,我只是在Minecraft里管理Kubernetes...

靠,上班打游戏!不,我只是在Minecraft里管理Kubernetes...

作者头像
程序猿DD
发布2023-04-17 16:13:39
3270
发布2023-04-17 16:13:39
举报
文章被收录于专栏:程序猿DD程序猿DD

微软 2015 年收购 Minecraft 之后不久开源了一个项目叫 Dockercraft[1],这个项目当时看起来非常有趣,通过 Dockercraft[2],玩家可以在 Minecraft 中启动或停止一个 Docker 容器,而 Docker 容器会以一个 N*N 的方块房子的方式显示在玩家面前,每一栋房子都代表一个 Docker 容器。

房子的外面挂着显示容器信息的看板,包括容器的名称、正在运行的进程、CPU 与内存的使用率等信息。

房子里面是管理容器的开关,扳动墙上的开关可以停止和启动容器,这对于码农来说是一个非常有趣的服务器。

我寻思着,既然有了 Dockercraft,怎么能没有 Kubecraft 呢?Google 搜了下还真有,项目名字正好就叫 Kubecraft[3]。它的功能和 Dockercraft 类似,可以管理 Kubernetes 集群中的容器,每一个房子代表一个 Pod,房子里面有开关可以销毁 Pod,真是太好玩了(太无聊了......)。

官方仓库[4]给的部署方式是用 Docker 跑的,命令如下:

代码语言:javascript
复制
$ docker run -t -d -i -p 25565:25565 \
--name kubecraft \
-e KUBE_CFG_FILE=/etc/kubeconfig \
-v ~/.kube/config:/etc/kubeconfig \
stevesloka/kubecraft

如果想部署在 Kubernetes 中,可以参考下面的部署清单:

代码语言:javascript
复制
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,不然容器无法启动!

你还需要先创建一个 Configmap 来保存 kubeconfig,例如:

代码语言:javascript
复制
$ kubectl create cm kubeconfig --from-file=/root/.kube/config

然后就可以愉快地部署了。

除了 Kubecraft 之外,还有一个项目叫 KubeCraftAdmin,功能上并没有什么太大的差异,只是每一个动物代表一个 Pod,你只要干掉一只鸡🐔,Kubernetes 中的 Pod 就被干死了,刺不刺激?

最后,如果你对该项目感兴趣,公众号后台回复 kubecraftadmin 即可获取 KubeCraftAdmin 项目地址。

参考资料

[1]

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

往期推荐

阿里云网盘,开放申请啦!非会员下载 10MB/s!有图有真相!

面试:说说你对 HashMap 的认识?

解决Maven依赖冲突的好帮手,这款IDEA插件了解一下?

你的 Redis 为什么变慢了?

Java程序员必备的11大IntelliJ插件

如果MySQL事务中发生了网络异常?

云原生是一种信仰 🤘

扫码关注公众号

后台回复◉k8s◉获取史上最方便快捷的 Kubernetes 高可用部署工具,只需一条命令,连 ssh 都不需要!

推荐加入

最近热门内容回顾   #技术人系列

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序猿DD 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考资料
  • 最近热门内容回顾   #技术人系列
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档