靠,上班打游戏!不,我只是在Minecraft里管理Kubernetes...
发布日期:2021-06-29 21:55:46 浏览次数:2 分类:技术文章

本文共 2659 字,大约阅读时间需要 8 分钟。

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

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

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

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

官方仓库[4]给的部署方式是用 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/v1kind: Deploymentmetadata:  name: kubecraft  labels:    app: kubecraftspec:  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: v1kind: Servicemetadata:  name: kubecraft  labels:    app: kubecraftspec:  selector:    app: kubecraft  ports:    - protocol: TCP      name: http      port: 25565      targetPort: 25565

一定要加上 tty: true 和 stdin:true,不然容器无法启动!

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

$ 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

往期推荐

云原生是一种信仰 ????

码关注公众号

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

推荐加入

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

转载地址:https://didispace-wx.blog.csdn.net/article/details/109019621 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:2.5 亿!华为成立新公司!
下一篇:面试:说说你对 HashMap 的认识?

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月12日 12时26分32秒