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
39
小江戸らぐ 自宅にkubernetesクラスターを構築した話
2022/9/10
小江戸らぐ 9月のオフな集まり(第242回)
世良泰明
September 10, 2022
Tweet
Share
More Decks by 世良泰明
See All by 世良泰明
ラズパイ奮闘記 その1
y_sera15
0
51
metrics-serverをセキュアなTLSでデプロイしてみた
y_sera15
0
480
EKS勉強会
y_sera15
1
120
自宅k8s構築日記 冬休み編
y_sera15
0
220
自宅k8sクラスター構築日記
y_sera15
0
190
EKSを動かしてみた話
y_sera15
0
99
ちょっと大きめのOSSにコントリビュートしかけた話
y_sera15
0
240
小江戸らぐ kubernetesクラスターを再構築した話
y_sera15
0
210
Other Decks in Technology
See All in Technology
オフィスビルを監視しよう:フィジカル×デジタルにまたがるSLI/SLO設計と運用の難しさ / Monitoring Office Buildings: The Challenge of Physical-Digital SLI/SLO Design & Operation
bitkey
1
290
Claude Code に プロジェクト管理やらせたみた
unson
7
4.8k
AI エージェントと考え直すデータ基盤
na0
17
6.8k
ゼロからはじめる採用広報
yutadayo
3
1k
Lakebaseを使ったAIエージェントを実装してみる
kameitomohiro
0
170
〜『世界中の家族のこころのインフラ』を目指して”次の10年”へ〜 SREが導いたグローバルサービスの信頼性向上戦略とその舞台裏 / Towards the Next Decade: Enhancing Global Service Reliability
kohbis
2
890
TableauLangchainとは何か?
cielo1985
1
140
AWS CDKの仕組み / how-aws-cdk-works
gotok365
10
730
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
3
980
Rethinking Incident Response: Context-Aware AI in Practice
rrreeeyyy
1
230
全部AI、全員Cursor、ドキュメント駆動開発 〜DevinやGeminiも添えて〜
rinchsan
0
250
事例で学ぶ!B2B SaaSにおけるSREの実践例/SRE for B2B SaaS: A Real-World Case Study
bitkey
1
270
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
96
6.1k
How to Ace a Technical Interview
jacobian
278
23k
Facilitating Awesome Meetings
lara
54
6.5k
Being A Developer After 40
akosma
90
590k
Done Done
chrislema
184
16k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
What's in a price? How to price your products and services
michaelherold
246
12k
Fireside Chat
paigeccino
37
3.5k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
980
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 ・ サーバーレス ・ワーカー,
マスター障害テスト 構築して放置。。。バージョンアップ対応もしなければ。。。