Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
自宅k8sクラスター構築日記
Search
世良泰明
October 03, 2023
Technology
300
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
自宅k8sクラスター構築日記
2023/2/11
小江戸らぐ 2月のオフな集まり(第247回)
当日作ったスライドなので、一部未完でアドリブで乗り切ってます(が、そのまま公開します)。
世良泰明
October 03, 2023
Transcript
24 slides
自宅k8sクラスター構築日記 2023/2/11 小江戸らぐ 1月のオフな集まり(第247回) 世良泰明
自己紹介 名前: 世良 泰明 (せら やすあき) 職業: ひよっこインフラエンジニア (2年目) 名古屋の某SIer所属
AWS上でインフラ構築・運用 趣味: 囲碁, サイクリング, 散歩, etc… twitter: @y_sera15 自宅K8sクラスター
今日の話 お家で育てているk8sクラスター コンテナアプリをIPを持たせて(自宅LAN内で)公開したい そのための試行錯誤の記録 やったこと ・BGP不通の検証 ・新規LAN構築 ・クラスター移行 ・ESXi管理用NWとVM用NWの分離
構成 物理マシン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
worker3 やりたいこと control plane 1 haproxy1 control plane 2 worker2
haproxy2 control plane 3 APIへのアクセス デスクトップ 端末 6443/tcp kubectl kube-apiserver Load Balancer kubernetesの クラスターを制御 するノード 6443/tcp コンテナを動かす ノード worker1 kubernetes上で動かすコンテナにアクセスしたい
worker3 やりたいこと kubernetes上で動かすコンテナにアクセスしたい control plane 1 worker1 haproxy1 control plane
2 worker2 haproxy2 control plane 3 APIへのアクセス デスクトップ 端末 6443/tcp kubectl kube-apiserver Load Balancer kubernetesの クラスターを制御 するノード 6443/tcp コンテナを動かす ノード コンテナのアプリ にアクセスできる ようにしたい http:80
当時の構成の前に 前提知識 ・kubernetesのネットワーク ・コンテナへのアクセス方法
kubernetesのネットワーク ・各ノードのネットワーク 192.168.100.0/24 ・コンテナの世界のネットワーク 10.0.0.0/8 worker3 worker1 worker2 192.168.100.0/24 192.168.100.34
192.168.100.66 192.168.100.98 kubernetesは2つの層のネットワークがある 10.0.0.0/8 ノード間でコンテナの世界のネットワークを繋げる機能 ⇒ CNIというプラグインにより提供
コンテナへのアクセス方法 方法としては(ざっくり)3つ 1.ノードのポートと紐づける ⇒ノード依存する, ポート被りを意識しないといけないから嫌 2.外部のロードバランサーを利用する ⇒ 管理対象が増えるのは面倒 3.k8s上でロードバランサーとして機能するアプリを利用する(例:metallb) ⇒
これを使いたい worker worker worker 8080:80 デスクトップ 端末 8080 デスクトップ 端末 Loadbarancer worker worker デスクトップ 端末 Loadbarancer
metallb ベアメタルなkubernetesに構築できる, クラスター外のIPでアクセス可能なロードバランサー https://metallb.universe.tf/ L2プロトコルかBGPを利用. (L2だと負荷分散はできない)
cilium k8s用のネットワークプラグインの1つ https://cilium.io/get-started eBPFという, カーネルに動的にプログラムを埋め込む機能を利用している. metallbと同様の機能も提供. 今回のクラスター構築で採用.
やったこと ・BGP不通の検証 ・新規LAN構築 ・クラスター移行 ・ESXi管理用NWとVM用NWの分離
前回までの進捗 ciliumを用いてクラスター再構築 ↓ ルータのBGPの設定方法分からん ←1月小江戸らぐ 昼の部 ↓ ルータのBGP設定したけどつながらん ←1月小江戸らぐ 夜の部
今回は原因調査からスタート
原因調査 BGPパケットを送信しているpodに入り, tcpdumpをしてみた $ kubectl exec -n kube-system cilium-wmjw8 -it
/bin/bash $ apt update $ apt install tcpdump $ tcpdump -n -v -i any tcp port 179
原因調査 結果
原因調査 結果 要点 ・TCP通信は疎通している ・BGP通信の開始を試みて, 失敗している ・Optional BGPのパラメータエラーと怒られている. ・Optional パラメータとして,
Multiprotocol Extentionというワードあり
原因調査 裏付け調査 自宅ルータ(RTX1220)が 拡張BGPに対応してなかった Multiprotocol BGPとは ・複数のアドレスタイプを指定できるように拡張されたBGPのこと. ・BGP-4ではipv4のユニキャストしか利用できなかったが、 MP-BGPではipv6及びマルチキャストを利用できる. ・RFC4760(現在はRFC7606にupdateされている)
https://www.rfc-editor.org/rfc/rfc4760 (https://www.rfc-editor.org/rfc/rfc7606) 利用していたルーター(YAMAHA RTX1220) http://www.rtpro.yamaha.co.jp/RT/docs/bgp/index.html#rt
Edgeルータ購入 EdgeRouter X ・k8s自宅クラスタ勢がよく使用してるルータ ・業務用ルータ並みの豊富な機能 ・価格は安め(amazonで1.6万円くらい) ・ベースOSはlinux
自宅LAN拡張 FWの設定で躓くも, 無事開通
クラスター移行(失敗) せっかくなので, k8sクラスターを生きたまま移行させようと試みた etcd内の設定が悪さをしたか何かでmasterノードは移行失敗. (etcd, apiServerのpodが上がりきらない) 諦めてゼロから再構築へ. ・master3, worker3をシャットダウン ・ESXiホスト3をEdgeRouter配下へ移動
・master3, worker3の起動 ・再度クラスターへ参加
再構築 ESXiホストを全てEdgeRouter配下へ移動 各ノード, apiServer用ロードバランサのIP変更 kubeadmで1台ずつノード構築 ・kube-proxy無効化 k8sクラスター設定 ・BGP広報するCIDRレンジ登録 ciliumインストール ・BGP設定有効化
edgeRouter側のBGP設定 ・AS番号, neighborのIP設定 疎通確認 ⇒無事疎通!!! 参考(EdgeRouterのBGP設定) https://qiita.com/suzuyui/items/c83554 dd055ef0f4253a
おまけ ESXiの管理用NWとVM用NWの分離
まとめ 自宅k8sクラスタでアプリ公開ができるLBを立てた やったこと ・パケット解析 ・自宅LANを拡張 ・k8sクラスターライブマイグレーション(失敗) ・アプリ用, VM用, ESXi管理用のセグメント分離 やり残したこと
・各セグメントのFW設定 ・現在のBGP設定は
まとめ&現状/今後 まとめ&現状 metallbをBGPを利用して動作させるため, CNIを入れ替えてkubernetesクラスターを ドキュメントが英語なのと、何が分からないか分からないので難しい…
More Decks by 世良泰明
See All by 世良泰明
Jetson Orin Nanoとk3sとローカルLLMで音声文字起こしシステム作ってみた
y_sera15
0
170
自分で立ててみるLLMサービス
y_sera15
0
200
ホームラボ紹介
y_sera15
0
340
Serendie Design Systemを使ってWebアプリケーションを開発してみた
y_sera15
0
180
Kubernetesの公式ドキュメントを翻訳してみた
y_sera15
0
93
ラズパイ奮闘記 その1
y_sera15
0
87
metrics-serverをセキュアなTLSでデプロイしてみた
y_sera15
0
740
EKS勉強会
y_sera15
1
200
自宅k8s構築日記 冬休み編
y_sera15
0
350
Other Decks in Technology
See All in Technology
Context != Context: One window, many lifecycles (AI Native DevCon, Nov 2026)
birgitta410
0
140
変更差分を読むために環境を整備しよう
pipepasta
1
330
Kiro CLI 入門 (ターミナルと CI で使う) | 目指せ Kiro マスター 03
inariku
PRO
2
150
常時稼働エージェントの作り方(Claude公式ブログを資料化)
minorun365
PRO
7
15k
高品質と高スピードを支える品質のシフトレフトのアプローチ
goyoki
4
1.2k
E2E Test というハーネス — AI時代の自動テスト民主化
daishukojima
1
760
これからのデータエンジニアの役割について考える / Rethinking the Role of Data Engineers in the AI Era
okiyuki99
0
490
AWS Emulator を評価する: 手元で動く AWS の API の仕組み、始め方、確かめ方
inariku
PRO
1
620
セキュリティ専任チームなしで攻撃を先回りするSREが実践したSIEM on Amazon OpenSearch Service
cscengineer
PRO
1
890
Kiro IDE 入門 (画面の各部から、頼み方、任せ方、戻し方まで) | 目指せ Kiro マスター 02
inariku
PRO
4
250
Kiro 入門 (1 つのエージェントを、どの画面からでも) | 目指せ Kiro マスター 01
inariku
PRO
6
1.8k
生成AI時代のIAMのマニアックな話
takuros
6
3.2k
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
247
13k
How to Talk to Developers About Accessibility
jct
2
620
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Automating Front-end Workflow
addyosmani
1370
210k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
640
SEO for Brand Visibility & Recognition
aleyda
0
4.9k
The SEO Collaboration Effect
kristinabergwall1
1
620
KATA
mclloyd
PRO
35
16k
Music & Morning Musume
bryan
48
7.5k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.7k