Kubernetes で Minecraft を実行する

Kubernetes で Minecraft を実行する

休暇中に、ずっと前から話題になっていたMinecraftを子供たちにインストールしてみました。それを体験するために、オープンソースランチャーHMCLをインストールしました。実は、このゲームには長い間注目してきましたが、時間がかかりすぎると感じています。しかし、子供たちが一緒に遊んでくれと頼んできたので、私は自分のサーバーを構築する方法を調べ始めました。 GitHub は、誰かがすでに Minecraft サーバー コンテナ イメージを作成しており、最初に Docker を使用して HomeLab にデプロイされ、その後マルチプレイヤー接続でプレイされていたことを発見しました。

遊び方がわからなかったため、数回試しただけで他の子供たちに殴り殺されてしまいました。後になって、「平和モード」というものがあることを知りました。退屈なので、パブリック クラウドにデプロイする方法を勉強しましょう。

  • 私の HomeLab は一年中稼働しています。重要なデータがないので、ハードウェアの安定性やデータのバックアップには投資していません。ゲームデータを失ったことで責められるのではないかと心配です。データ損失を回避するためにパブリッククラウドオブジェクトストレージを使用する
  • 外出中にたまにプレイする場合は、自宅でプレイするためにVPNに接続する必要があります。
  • 一緒に遊ぶことで友達とつながることもできる
  • 一番の理由は、昨年 Microsoft MVP に参加した際に Azure クレジットをいただいたので、使わないのはもったいないと思ったからです。

上記の理由から、Azure にサーバーを展開し、8c16g 仮想マシンを開いて k3s をインストールすることにしました。データは blog-csi-driver を通じて Azure Blob Storage に永続的に保存されます。

さあ始めましょう!

k3sをインストールする

バージョン 1.23 をインストールするには、次のコマンドを実行します。

エクスポート INSTALL_K3S_VERSION = v1 .23 .8 + k3s2
curl - sfL https : //.k3s.io取得します| sh - s - --disable traefik --write-kubeconfig-mode 644 --write-kubeconfig ~/.kube/config

k3s をインストールした後、BLOB ストレージ用の CSI ドライバーをインストールする必要があります。ドキュメントによると、動的構成にストレージ アカウントを使用するには、ドライバーはバージョン v0.9.0 以降を使用する必要があります。

CSIドライバーをインストールする

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

ストレージクラスを作成する

まず、Azure ポータルにログインし、ストレージ アカウントにアカウントを作成します。仮想マシンと同じリージョンを選択することを忘れないでください。ネットワーク権限で、仮想ネットワークへのアクセスのみを許可するように選択します。作成が完了すると、アカウントのアクセス キーからキーを取得できます。

以前のアカウント名とキーを使用して secert を作成するには、次のコマンドを実行します。

 kubectl create secret generic azure - secret --from-literal azurestorageaccountname=[アカウントをここに入力] --from-literal azurestorageaccountkey=[キーをここに入力] --type=Opaque

次のステップは、シークレットを使用して StorageClass を作成することです。

 kubectl を適用-f - << EOF
---
apiバージョン:ストレージ.k8s .io / v1
種類:ストレージクラス
メタデータ:
名前:ブロブ-ヒューズ
プロビジョナー: blob .csi .azure .com
ボリューム拡張を許可する: true
パラメータ:
csi .storage .k8s .io /プロビジョナー-シークレット-名前: azure -シークレット
csi .storage .k8s .io / provisioner - secret - namespace :デフォルト
csi .storage .k8s .io /ノード-ステージ-シークレット-名前: azure -シークレット
csi .storage .k8s .io /ノード-ステージ-シークレット-名前空間:デフォルト
終了

PVCを作成する

StorageClass が作成されたので、PersistentVolumeClaim を作成し、上記の StorageClass ​blob-fuse​​ ​ の使用を指定できます。

 kubectl を適用-f - << EOF
APIバージョン: v1
種類: PersistentVolumeClaim
メタデータ:
名前:マインクラフト- PVC
仕様:
ストレージクラス名: blob - fuse
アクセスモード:
-読み書き多数
リソース
リクエスト:
ストレージ: 100 Gi
終了

Minecraft サーバーを展開する

Deployment を使用して、NodePort サービスをデプロイおよび作成します。使用したイメージは​itzg/minecraft-server:java17​​ ​です。関連する設定については、公式ドキュメントを参照してください(また殴られるのが怖かったので、ピースフルモードを有効にしました)。

 kubectl を適用-f - << EOF
apiバージョン:アプリ/ v1
種類:デプロイメント
メタデータ:
作成タイムスタンプ: null
ラベル:
アプリ:マインクラフト
名前:マインクラフト
仕様:
レプリカ 1
セレクター:
マッチラベル:
アプリ:マインクラフト
戦略 { }
テンプレート
メタデータ:
作成タイムスタンプ: null
ラベル:
アプリ:マインクラフト
仕様:
コンテナ:
-画像: itzg / minecraft -サーバー: java17
名前: minecraft -サーバー
環境:
-名前: EULA
: "TRUE"
-名前: ONLINE_MODE
: "FALSE"
-名前:難易度
価値平和
-名前: PVP
: "false"
-名前: UID
: "0"
-名前: GID
: "0"
-名前:メモリー
: "4G"
リソース { }
ポート:
-コンテナポート: 25565
プロトコル: TCP
ボリュームマウント:
-名前:永続的-ストレージ
マウントパス: /データ
巻数:
-名前:永続的-ストレージ
永続ボリュームクレーム:
クレーム名:マインクラフト- PVC
---
APIバージョン: v1
種類:サービス
メタデータ:
ラベル:
アプリ:マインクラフト
名前:マインクラフト
仕様:
ポート:
-ポート: 25565
プロトコル: TCP
ターゲットポート: 25565
セレクター:
アプリ:マインクラフト
タイプ: NodePort
終了

テスト

クライアントを起動し、マルチプレイヤー ゲームにサーバーを追加します。アドレスは仮想マシンのパブリック IP で、ポートはサービスの NodePort です。

セルフホスティング-Minecraft

そうすれば楽しい時間が過ごせますよ。

<<:  クラウド コンピューティングの利点を探る: IaaS、PaaS、SaaS から GCP、AWS、Microsoft まで

>>:  eBPF ソケット レベル リダイレクトのカーネル実装の詳細を図解

推薦する

ガートナー: クラウド戦略策定における 10 のよくある間違い

クラウド戦略は、企業組織におけるクラウド コンピューティングの役割についての概要を提供します。ガート...

近年QQ Spaceが私に与えてくれた最適化のインスピレーション

Baidu の新しいアルゴリズムについて、私たちウェブマスターは Baidu にあまり依存すべきでは...

midphase - 70% オフ/最低 $3.29、無料ドメイン名、無制限のウェブサイト構築、ホスティング/VPS/x サーバー

19 年間運営されているトップクラスのホスティング会社である Midphase は、ブラック フライ...

ウェブサイト運営にあたっての準備はどのようなものがありますか?

ますます多くのウェブマスターの友人が、現在、ウェブサイト、特に一部の企業ウェブサイトや個人の草の根ウ...

ユーザーエクスペリエンスにおける「不明瞭なセンシティブな言葉」についての簡単な議論

「不明瞭なセンシティブワード」の出現は、ウェブサイトにとって珍しいことではないと思います。多くのウェ...

Docker はクリーンな Ubuntu システムを作成し、Android ソースコードをコンパイルします

序文イントラネット上のサーバーは通常、多くのプログラムを実行する Ubuntu です。 Androi...

CDN をベースとしたエッジコンピューティング プラットフォームの設計と考察

[[343187]] CDN の重要性は、CDN ビジネス自体だけでなく、CDN のインフラストラク...

「理解」エコシステムを構築し、エコシステムの潜在力を解き放ち、業界のデジタル変革に立ち向かう

[51CTO.comより元記事] ファーウェイは2021年1月1日、「2021年ファーウェイ中国政府...

クラウド コンピューティングのコストを管理するための 10 のヒント

クラウド コンピューティングのコスト管理は、多くの企業にとって大きな問題となっています。 Right...

杭州市頭脳濱江プラットフォームが正式に始動、清華紫光集団が「デジタル濱江」の構築を支援

[[332284]] 7月2日、杭州ハイテクパーク(浜江)第5地区委員会第9回全体会議(拡大)が浜江...

ユーザーリーチの 5 つの要素: マテリアル、チャネル、オブジェクト!

私のユーザー リーチの定義は、特定の目的に基づいて、特定のシナリオで、特定のチャネルを通じて特定のユ...

ハイブリッド クラウドの 4 つのハイブリッド モードの特徴は何ですか?

ハイブリッドクラウドとは何ですか? [[434436]]ハイブリッド クラウドとは、パブリック クラ...

2023年にはクラウド導入の増加によりビジネス価値が増大

クラウド コンピューティングは長年にわたり、分散コンピューティング機能の拡張、ソフトウェアと技術の進...

ハイブリッド クラウドの人材に現在必要な 7 つのスキル

ハイブリッド クラウドの導入が拡大するにつれ、コンピューティングに対するこの最新のアプローチを効果的...