当前位置:首页 > CN2资讯 > 正文内容

在 Kubernetes 上运行《我的世界》

1天前CN2资讯

假期给小朋友装上了叨叨许久的 Minecraft(我的世界),为了体验安装的是 开源启动器 HMCL。其实这游戏我也关注比较久了,不过感觉太耗时间。但被小朋友拉上一起玩,便研究了下自建服务器。GitHub 发现已经有人做好了 Minecraft 服务端容器镜像,先是在 HomeLab 上用 Docker 部署,通过多人连线就能玩起来了。

由于不会玩几下被小朋友给打死,后来才发现还有“和平模式”。无聊转而研究下如何在公有云上部署:

  • 我的 HomeLab 常年运行,由于没有重要的数据,不管是对硬件稳定性和数据备份都没有投入,担心游戏数据丢失被埋怨。放在公有云上使用公有云的对象存储,避免数据丢失
  • 偶尔外出时玩的话,还需要 VPN 连回家才能玩
  • 他有朋友一起玩时还能方便联机
  • 最主要的原因还是去年加入微软 MVP 时,有送 Azure 的 credit,不用实属浪费

基于上面的原因,决定将服务器部署在 Azure 上,开一个 8c16g 的虚拟机并安装 k3s。数据呢,通过 blog-csi-driver 持久化存储在 Azure 的 Blob Storage 上。

开始吧!

安装 k3s

运行下面的命令进行安装,1.23 版本即可。

export INSTALL_K3S_VERSION=v1.23.8+k3s2 curl -sfL https://get.k3s.io | sh -s - --disable traefik --write-kubeconfig-mode 644 --write-kubeconfig ~/.kube/config

k3s 安装之后,需要安装 blob storage 的 CSI 驱动。根据 文档说明 驱动要使用 v0.9.0 以上的版本,才能使用 存储账户 做动态配置。

安装 CSI 驱动

curl -skSL https://raw.githubusercontent.com/kubernetes-sigs/blob-csi-driver/v1.19.0/deploy/ | bash -s v1.19.0 blobfuse-proxy --

创建 StorageClass

先登录到 Azure Portal 在 存储账户 中创建账户,记得区域的选择和虚拟机相同;网络权限中选择只允许虚拟网络的访问。创建完成后,在账户的 访问秘钥 中可以获取到 key。

执行下面的命令,使用前面的账户名和 key 创建 secert。

kubectl create secret generic azure-secret --from-literal azurestorageaccountname=[ACCOUNT HERE] --from-literal azurestorageaccountkey=[KEY HERE] --type=Opaque

接下来就是使用该 secret 创建 StorageClass。

kubectl apply -f - <<EOF --- apiVersion: /v1 kind: StorageClass metadata: name: blob-fuse provisioner: allowVolumeExpansion: true parameters: csi./provisioner-secret-name: azure-secret csi./provisioner-secret-namespace: default csi./node-stage-secret-name: azure-secret csi./node-stage-secret-namespace: default EOF

创建 PVC

有了 StorageClass 之后,就可以创建 PersistentVolumeClaim 了,指定使用上面的 StorageClass blob-fuse。

kubectl apply -f - <<EOF apiVersion: v1 kind: PersistentVolumeClaim metadata: name: minecraft-pvc spec: storageClassName: blob-fuse accessModes: - ReadWriteMany resources: requests: storage: 100Gi EOF

部署 Minecraft 服务器

使用 Deployment 进行部署,并创建 NodePort Service。镜像使用 itzg/minecraft-server:java17,相关的配置可以参考 官方的文档(我怕再被打,启用了和平模式)。

kubectl apply -f - <<EOF apiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: app: minecraft name: minecraft spec: replicas: 1 selector: matchLabels: app: minecraft strategy: {} template: metadata: creationTimestamp: null labels: app: minecraft spec: containers: - image: itzg/minecraft-server:java17 name: minecraft-server env: - name: EULA value: "TRUE" - name: ONLINE_MODE value: "FALSE" - name: DIFFICULTY value: peaceful - name: PVP value: "false" - name: UID value: "0" - name: GID value: "0" - name: MEMORY value: "4G" resources: {} ports: - containerPort: 25565 protocol: TCP volumeMounts: - name: persistent-storage mountPath: /data volumes: - name: persistent-storage persistentVolumeClaim: claimName: minecraft-pvc --- apiVersion: v1 kind: Service metadata: labels: app: minecraft name: minecraft spec: ports: - port: 25565 protocol: TCP targetPort: 25565 selector: app: minecraft type: NodePort EOF

测试

启动客户端,在多人游戏中添加服务器:地址是虚拟机的公共 IP,端口是 Service 的 NodePort。

接下来就可以愉快的玩耍了。

关注"云原生指北"微信公众号 (转载本站文章请注明作者和出处乱世浮生,请勿用于任何商业用途)

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/31743.html

    分享给朋友:

    “在 Kubernetes 上运行《我的世界》” 的相关文章

    RackNerd虚拟主机服务评测:高性价比的选择与多样化方案

    RackNerd是一家相对年轻但极具潜力的虚拟主机商,自2017年成立以来,一直致力于为客户提供高性价比的服务。作为我在寻找虚拟主机时发现的一家重要供应商,他们的服务范围非常广泛,包括虚拟主机、VPS主机、独立服务器以及服务器托管等,我着实被他们多样的产品所吸引。 RackNerd不仅限于某个特定地...

    2024年如何获取免费VPS服务:开发者的最佳选择

    在解释什么是免费VPS之前,我想先来聊聊“VPS”这个概念。虚拟专用服务器(VPS)可以理解为一种在服务器上创建多个虚拟环境的技术。这些环境如同独立的服务器,用户可以在上面进行程序的开发和测试。而“免费VPS”则意味着用户可以在一定的限度内,无需付费地使用这些虚拟环境。对于初创公司或个人开发者而言,...

    PumpCloud VPS主机服务解析:注册、设置与价格一站式指南

    PumpCloud是一家自2015年成立以来便致力于提供高效主机服务的公司,让我来分享下其中的一些亮点。它主要在香港和台湾设有数据中心,专注于为用户提供动态VPS服务。相比于国内一些主机商,PumpCloud显得更国际化,主要通过其快速的网络连接和强大的服务基础设施吸引用户。虽然在行业中还算年轻,但...

    选择野草云主机服务,享受高性价比与优质体验

    野草云是一家在2016年成立的主机服务提供商,由国人运营,专注于为中国大陆地区的用户提供优质的服务和产品。作为一家相对年轻的主机商,野草云力求用更贴近用户的方式来满足客户需求,特别是在国内市场需求快速增长的背景下,它的出现让很多用户找到了合适的主机选择。 说到野草云的历史背景,首先让我想起它在竞争激...

    探索阿什本:全球数据中心之都的科技与美食之旅

    阿什本,这个名字或许在很多人耳中听起来并不陌生。作为美国弗吉尼亚州劳登郡的一部分,它距离华盛顿特区仅34英里,恰如其分地威尔士着城市的繁华。在我踏上这片土地的那一刻,便被它的快速发展与活力所吸引。阿什本不仅是一个城市,更是全球数据中心的中心,称其为“全球数据中心之都”可谓名至实归。 在阿什本,互联网...

    提升国际数据传输质量的9929线路分析与应用

    谈到9929线路,首先让我给大家介绍一下AS9929线路的基本情况。这条线路是中国联通为了满足国际市场的需求而推出的一种IP传输服务专线。它的起点在香港,通过海底光缆将中国与亚太及北美地区紧密连接。同时,这条线路还在欧洲和非洲设立了多个重要的网络节点(POP点),这就为跨国数据传输提供了坚实的基础。...