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
61
お家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
【Rust × C++】 夢の共演を試した話
lemolatoon
1
1.6k
no_stdでもasyncしたい
lemolatoon
0
230
AI系サービスに代表されるAPIについて
lemolatoon
0
87
Rustの手続きマクロで黒魔術入門
lemolatoon
2
1.2k
Featured
See All Featured
Six Lessons from altMBA
skipperchong
27
3.7k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
23
2.6k
The Invisible Side of Design
smashingmag
299
50k
Being A Developer After 40
akosma
91
590k
Into the Great Unknown - MozCon
thekraken
37
1.7k
GitHub's CSS Performance
jonrohan
1030
460k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
178
53k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.6k
RailsConf 2023
tenderlove
30
1.1k
Building an army of robots
kneath
304
45k
BBQ
matthewcrist
88
9.6k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.4k
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でなんとか記述して自動で設定できるようにできたらおもしろそう • 友人にサーバーを遊んでもらえて楽しい
ありがとうございました。