Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
お家miniPCを使ってミリしらでkubernetes clusterたててみる
Search
lemolatoon
March 22, 2025
1
200
お家miniPCを使ってミリしらでkubernetes clusterたててみる
https://wakate.connpass.com/event/343220/
情報科学若手の会春の陣2025でのLTのスライドです。
lemolatoon
March 22, 2025
Tweet
Share
More Decks by lemolatoon
See All by lemolatoon
スマホから Youtube Shortsを見られないようにする
lemolatoon
28
35k
【Rust × C++】 夢の共演を試した話
lemolatoon
1
1.7k
no_stdでもasyncしたい
lemolatoon
0
260
Rustの手続きマクロで黒魔術入門
lemolatoon
2
1.3k
Featured
See All Featured
Docker and Python
trallard
46
3.7k
Scaling GitHub
holman
463
140k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
330
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
2.9k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Why You Should Never Use an ORM
jnunemaker
PRO
60
9.6k
Testing 201, or: Great Expectations
jmmastey
46
7.8k
Statistics for Hackers
jakevdp
799
230k
For a Future-Friendly Web
brad_frost
180
10k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Transcript
お家miniPCを使って ミリしらでkubernetes cluster たててみる lemolatoon
もくじ • 経緯 • kubernetesとは • ミリしらからの脱出 • kubernetes clusterを建てる
• マイクラサーバーをcluster上で動かす • おうち特有の制約 • 最終形
経緯 • あるタスクを倒したご褒美でミニPCを購入 • いままでのkubernetesのイメージ • よし、mini PCとRasberry Pi 4でクラスタ建ててみよう
• 目標はマイクラサーバーをたてることに Ryzen 7 5700U RAM: 16GB SSD: 500GB 3.1万円 なんか難しそう 家で動いてたらかっこいいかも
kubernetesとは? • コンテナを使ったワークロードやサービスを管理するためのオープンソースプラット フォーム • 宣言的な設定と自動化によって効率的に運用可能 たとえば... • コンテナが落ちたときに、自動で立ち上げる •
rolling updateを可能に • ロードバランシング、スケーリングの設定
kubernetes clusterのイメージ Control Plane: master node Node 1 Node 2
Pod1 Pod2 Pod3 * Pod: 2つ以上のコンテナのまとまり
kubernetes clusterのイメージ Control Plane: master node Node 1 Node 2
Pod1 Pod2 Pod3 * Pod: 2つ以上のコンテナのまとまり Podがダウンする
kubernetes clusterのイメージ Control Plane: master node Node 1 Node 2
Pod1 Pod2 * Pod: 2つ以上のコンテナのまとまり Podがダウンする
kubernetes clusterのイメージ Control Plane: master node Node 1 Node 2
Pod1 Pod3 * Pod: 2つ以上のコンテナのまとまり 👀 Control Plane: Podがダウンしたことに 気づく
kubernetes clusterのイメージ Control Plane: master node Node 1 Node 2
Pod1 Pod3 * Pod: 2つ以上のコンテナのまとまり Control Plane: Podを作り直すための準 備
kubernetes clusterのイメージ Control Plane: master node Node 1 Node 2
Pod1 Pod3 * Pod: 2つ以上のコンテナのまとまり Pod2 スケジュールされたPod が作り直される
どうやってミリしら状態で情報を集めるか 1. 基本的な概念をつかむ ◦ 公式ドキュメント ◦ イラストがおおめの本を読む 2. まだよくわからない概念をChatGPTに聞きまくる ◦
↓実際にした質問たち 3. Youtubeのkubernetesについての講演を見る ◦ LISA19 - Deep Dive into Kubernetes Internals for Builders and Operators
実際にclusterを建てる • 最終的に、kubeadmを使うことに決定 ◦ おそらく最も手軽で、簡単に kubernetes clusterを建てることができる • いくつかのコマンドを実行し、clusterが完成! 家
k8s cluster Rasberry Pi 4 (Control Plane) Mini PC (Worker Node) Desktop PC kubectl MacBook Air kubectl by ssh PortForward via Cloudflare Tunnel
マイクラをcluster上で動かす • コンテナイメージ ◦ itzg/minecraft-server • データの永続化 (Persistent Volume) ◦
Node上の特定のディレクトリで Persistent Volumeを実現するStorage Provisionerを使用 ▪ https://github.com/rancher/local-path-provisioner ◦ たとえば、minecraft-pvcという名前で、20GiB分確保しておき、これをコンテナの Volumeとして 使うようにする、などができる。 • サービスの公開 ◦ NodePortという、特定のNodeのIPアドレスとポート番号を用いてサービスを公開するように設定 • ArgoCD ◦ clusterの状態とGitHubで管理する構成を同期 すべてyamlファイルで記述→
LAN内からマイクラサーバーに接続 • ローカルIPでWorker Nodeを指定すれば接続可能!
自分の家特有の事情 • 集合住宅のためルーターの設定ができない ◦ つまり、ポート開放ができない • このままでは外から他の人に遊んでもらえない • なんらかの別の手段でサービス(=マイクラサーバー)を公開する必要がある Port:
25565 k8s cluster
自分の家特有の事情 • 集合住宅のためルーターの設定ができない ◦ つまり、ポート開放ができない • このままでは外から他の人に遊んでもらえない • なんらかの別の手段でサービス(=マイクラサーバー)を公開する必要がある •
解決策: Azureを経由させる Port: 25565 k8s cluster
家 k8s cluster Rasberry Pi 4 (Control Plane) Mini PC
(Worker Node) VPN Node Port Client パケット転送 (socat)
感想 • kubernetesミリしらだったが、kubeadmのおかげで簡単に建てられて楽しい • .yamlでストレージやネットワークも管理しておけるので、dockerで建てるよりも簡単 に建てたり壊したりできて楽しい • 自由にポートを開放できないため、サービスを公開するのが多少面倒 ◦ socat(or
iptables)の設定をyamlでなんとか記述して自動で設定できるようにできたらおもしろそう • 友人にサーバーを遊んでもらえて楽しい
ありがとうございました。