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
小江戸らぐ 自宅にkubernetesクラスターを構築した話
Search
世良泰明
September 10, 2022
Technology
0
46
小江戸らぐ 自宅にkubernetesクラスターを構築した話
2022/9/10
小江戸らぐ 9月のオフな集まり(第242回)
世良泰明
September 10, 2022
Tweet
Share
More Decks by 世良泰明
See All by 世良泰明
Serendie Design Systemを使ってWebアプリケーションを開発してみた
y_sera15
0
53
Kubernetesの公式ドキュメントを翻訳してみた
y_sera15
0
38
ラズパイ奮闘記 その1
y_sera15
0
60
metrics-serverをセキュアなTLSでデプロイしてみた
y_sera15
0
580
EKS勉強会
y_sera15
1
140
自宅k8s構築日記 冬休み編
y_sera15
0
250
自宅k8sクラスター構築日記
y_sera15
0
220
EKSを動かしてみた話
y_sera15
0
110
ちょっと大きめのOSSにコントリビュートしかけた話
y_sera15
0
270
Other Decks in Technology
See All in Technology
RALGO : AIを組織に組み込む方法 -アルゴリズム中心組織設計- #RSGT2026 / RALGO: How to Integrate AI into an Organization – Algorithm-Centric Organizational Design
kyonmm
PRO
3
850
Digitization部 紹介資料
sansan33
PRO
1
6.4k
Oracle Cloud Infrastructure:2025年12月度サービス・アップデート
oracle4engineer
PRO
0
200
20251225_たのしい出張報告&IgniteRecap!
ponponmikankan
0
110
製造業から学んだ「本質を守り現場に合わせるアジャイル実践」
kamitokusari
0
430
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
4
21k
CQRS/ESになぜアクターモデルが必要なのか
j5ik2o
0
690
ソフトウェアエンジニアとAIエンジニアの役割分担についてのある事例
kworkdev
PRO
1
380
AI with TiDD
shiraji
1
340
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
松尾研LLM講座2025 応用編Day3「軽量化」 講義資料
aratako
15
4.9k
Everything As Code
yosuke_ai
0
500
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
A Modern Web Designer's Workflow
chriscoyier
698
190k
The Spectacular Lies of Maps
axbom
PRO
1
420
Paper Plane
katiecoart
PRO
0
45k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
48
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
420
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
780
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.2k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
260
Transcript
自宅にkubernetesクラスターを 構築した話 2022/09/10 小江戸らぐ 9月のオフな集まり(第242回) 世良泰明
自己紹介 名前: 世良 泰明 (せら やすあき) 職業: ひよっこインフラエンジニア (2年目) 名古屋の某SIer所属
AWS上でインフラ構築・運用 趣味: 囲碁, サイクリング, 散歩, etc… twitter: @y_sera15
きっかけ 以前、AWS上にkubernetesクラスターを構築(EKS) 放置してると結構お金がかかる。。。 kubernetes環境を育てていきたいので、自宅でトライ ・マルチマスター構成で構築 ・なるべく公式ドキュメントに準拠
構成 物理マシン3台の上に仮想マシンを立てた(Ubuntu22.04) ・control plane node 3台 ・worker node 3台 ・ロードバランサー(haproxy+
keepalive) 2台 NUC1 ESXi control plane 1 worker1 haproxy1 NUC2 ESXi control plane 2 worker2 haproxy2 NUC3 ESXi control plane 3 worker3
構成2 control plane 1 worker1 haproxy1 control plane 2 worker2
haproxy2 control plane 3 worker3 APIへのアクセス デスクトップ 端末 6443/tcp 6443/tcp kubectl kube- apiserver Load Balancer Worker Nodes CPU: 4core Memory: 16GB Storage: 300GB haproxy + keepalived CPU: 1core Memory: 4GB Storage: 30GB Control Plane nodes CPU: 2core Memory: 8GB Storage: 100GB
やったこと 1. ネットワーク設計 2. OSインストール/設定 3. haproxy構築 4. ノード構築 5.
コンテナネットワーク構築
ネットワーク設計 自宅LANのCIDR: 192.168.100.0/24 ・.0/27 : 固定マシン ・.32/27: NUC1 ・.64/27: NUC2
・.96/27: NUC3 ・.128/27: pool ・.160/27: DHCP ・.192/26: WiFi 各ノードのIP haproxy1 : 192.168.100.33 haproxy2 : 192.168.100.65 master1 : 192.168.100.34 master2 : 192.168.100.66 master3 : 192.168.100.98 worker1 : 192.168.100.35 worker2 : 192.168.100.67 worker3 : 192.168.100.99 NUC1 ESXi control plane 1 worker1 haproxy1 NUC2 ESXi control plane 2 worker2 haproxy2 NUC3 ESXi control plane 3 worker3 192.168.100.64/27 192.168.100.32/27 192.168.100.96/27 192.168.100.33 192.168.100.34 192.168.100.35 192.168.100.65 192.168.100.66 192.168.100.67 192.168.100.98 192.168.100.99
OSインストール/設定 OSインストール ubuntu22.04 server OS設定 ・タイムゾーン設定 ・NTP設定 ・hostname変更
haproxy構築 Control Plane nodeへのアクセスをLoadBalancer経由で行うために構築. haproxy + keepalivedで冗長化. haproxy: TLS終端が可能なロードバランサ keepalived:
ヘルスチェックによって管理された仮想IPを提供 ポート開放 sudo ufw allow 22/tcp # ssh sudo ufw allow 6443/tcp # kube-apiserver sudo ufw enable sudo ufw reload 参考 https://github.com/kubernetes/kubeadm/blob/main/docs/ha- considerations.md#options-for-software-load-balancing
ノード構築 Worker/ Control Plane nodes共通設定 ・swap無効化(kubeletがswapに対応していないため) ・カーネルパラメータ設定 ・iptablesがnftablesバックエンドを使用しないよう設定(kubeadmが未対応) ・CRI-Oインストール ・Firewall設定
・kubectl, kubeadm, kubeletインストール 1台目のmasterでkubeadm実行し、クラスター作成 2台目以降のmasterをkubeadmで追加 kubeadm join 192.168.100.4:6443 workerノードをkubeadmで追加
ノード構築 ポート開放 # master設定 sudo ufw allow 6443/tcp sudo ufw
allow 2379:2380/tcp sudo ufw allow 10250/tcp sudo ufw allow 10251/tcp sudo ufw allow 10252/tcp sudo ufw reload # worker設定 sudo ufw allow 10250/tcp sudo ufw allow 30000:32767/tcp sudo ufw reload
CNI選定 CNI(Container Network Interface)とは ・kubernetesで異なるNode上のPod間ネットワークを構築するソフトウェア Flannel, Calico等、さまざまなCNIが存在する 流行り廃り、ネットワーク構成で選ぶ 今回はCalicoを選択(理由は忘れてしまった…) https://www.tigera.io/project-calico/
図の引用 https://www.netstars.co.jp/ kubestarblog/k8s-3/
CNI(Calico)導入 curl https://projectcalico.docs.tigera.io/manifests/calico.yaml -O kubectl apply -f calico.yaml https://projectcalico.docs.tigera.io/getting-started/kubernetes/requirements 各ノードに対してBGP通信を許可する必要あり(179/TCP)
sudo ufw allow 179/tcp sudo ufw reload
結果
まとめ 自宅でkubernetesクラスターを構築した ・公式ドキュメントになるべく準拠して構築 ・マルチマスターで、手前にロードバランサーを設置する構成にした ・ネットワーク構成, マシンスペックの設計を今回初めて行った 構築しただけで何も手を付けてない。。。
今後やりたいこと ・サービスメッシュ(istio) ・分散ストレージ(rook) ・gitlab ・cicdパイプライン ・next cloud ・ サーバーレス ・ワーカー,
マスター障害テスト 構築して放置。。。バージョンアップ対応もしなければ。。。