在 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: true 和 stdin: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的动态。

在 Minecraft 中管理 Kubernetes 集群的更多相关文章
- kubectl管理kubernetes集群
[root@master ~]# kubectl get nodes 查看集群节点NAME STATUS AGEnode1 Ready 25mnode2 Re ...
- 谈一下Docker与Kubernetes集群的日志和日志管理
本文的测试环境为CentOS 7.3,Kubernetes集群为1.11.2,安装步骤参见kubeadm安装kubernetes V1.11.1 集群 日志对于我们管理Kubernetes集群及其上的 ...
- 在Openstack上创建并访问Kubernetes集群
第一部分:创建集群 在Openstack部署Kubernetes集群运行Nginx容器的步骤,其中包括: 利用Murano部署Kubernetes集群 配置Openstack的安全性使Kubernet ...
- 二进制部署 Kubernetes 集群
二进制部署 Kubernetes 集群 提供的几种Kubernetes部署方式 minikube Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernet ...
- K8S学习笔记之二进制的方式创建一个Kubernetes集群
0x00 单节点搭建和简述 minikube Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用.不能用于生产环境. 官方地址: ...
- Rancher2.x 一键式部署 Prometheus + Grafana 监控 Kubernetes 集群
目录 1.Prometheus & Grafana 介绍 2.环境.软件准备 3.Rancher 2.x 应用商店 4.一键式部署 Prometheus 5.验证 Prometheus + G ...
- 使用Kubeadm搭建高可用Kubernetes集群
1.概述 Kubenetes集群的控制平面节点(即Master节点)由数据库服务(Etcd)+其他组件服务(Apiserver.Controller-manager.Scheduler...)组成. ...
- 企业运维实践-还不会部署高可用的kubernetes集群?使用kubeadm方式安装高可用k8s集群v1.23.7
关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 文章目录: 0x00 前言简述 ...
- 基于Containerd安装部署高可用Kubernetes集群
转载自:https://blog.weiyigeek.top/2021/7-30-623.html 简述 Kubernetes(后续简称k8s)是 Google(2014年6月) 开源的一个容器编排引 ...
随机推荐
- Codeforces 1337C Linova and Kingdom
题意 给你一颗有根树,你要选择\(k\)个点,最大化\(\sum_{i \in S} val_i\),其中\(S\)是被选点的集合,\(val_i\)等于节点\(i\)到根的路径上未被选择点的个数. ...
- 0vscode基本插件
Bracket Pair Colorizer auto-close-tag Auto Rename Tag Bracket Pair Colorizer Dracula ESLint Code Sp ...
- 跟着兄弟连系统学习Linux-【day03】
day03-20200529 p10.学习注意事项 linux严格区分大小写(与python有点像) Linux中所有内容都是通过文件形式保存,通过命令执行设置参数,写 ...
- Java获取CPU序列号
获取CPU序列号 /** * 获取CPU序列号 * @return */ public static String getCpuId() throws IOException { Process pr ...
- 用于测试 JsonAnalyzer2 1.01版的测试用例
14. 原文={"animal":"ca,t","color":"ora:nge","isMale" ...
- Linux安装配置Flume
概述 Apache Flume是一个分布式,可靠且可用的系统,用于高效地收集,汇总和将来自多个不同源的大量日志数据移动到集中式数据存储.Apache Flume的使用不仅限于日志数据聚合.由于数据源是 ...
- Mybatis-多对一和一对多
多对一和一对多 目录 多对一和一对多 1. 复杂表的构建 2. 测试环境搭建 1. 导入Lombok 2. 新建实体类 3. 建立Mapper接口 4. 建立Mapper.xml文件 5. 在核心配置 ...
- jenkins参数传递
官方说明:https://wiki.jenkins.io/display/JENKINS/Parameterized+Build 1.添加参数传递 参数类型解析: 2.在 Execute shell ...
- MYSQL中的where ‘1=1‘ 探讨
在学习MySQL时候,关于MySQL注入的例子 首先针对以下代码,实现的是关于sql注入时,一个普通登录所产生的的问题 package com.java.lesson02; import com.ja ...
- JS -- DOM(文档对象模型)
认识DOM(文档对象模型) DOM(Document Object Model):定义访问和处理HTML文档的标准方法. DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节点树). < ...