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
270
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
自宅k8sクラスター構築日記
2023/2/11
小江戸らぐ 2月のオフな集まり(第247回)
当日作ったスライドなので、一部未完でアドリブで乗り切ってます(が、そのまま公開します)。
世良泰明
October 03, 2023
More Decks by 世良泰明
See All by 世良泰明
ホームラボ紹介
y_sera15
0
300
Serendie Design Systemを使ってWebアプリケーションを開発してみた
y_sera15
0
160
Kubernetesの公式ドキュメントを翻訳してみた
y_sera15
0
82
ラズパイ奮闘記 その1
y_sera15
0
82
metrics-serverをセキュアなTLSでデプロイしてみた
y_sera15
0
720
EKS勉強会
y_sera15
1
190
自宅k8s構築日記 冬休み編
y_sera15
0
330
EKSを動かしてみた話
y_sera15
0
130
ちょっと大きめのOSSにコントリビュートしかけた話
y_sera15
0
330
Other Decks in Technology
See All in Technology
私の推しは「聞いてから進む」AIです -AI-DLCに一人でアプリを作らせた話
yama3133
1
160
1人アドミンな私はAWSアカウント申請をSlackで完結したい!
ysuzuki
0
110
Databricksメトリクスビューはじめてのもくもく会
taka_aki
0
150
高負荷プロダクション環境におけるAWS Lambdaのリアル 〜スケールとコストを左右する実行ライフサイクルの技術仕様〜
maimyyym
2
850
AIは爆速なのに、私が詰まっていた話 ― 音声入力と鳴くマスコットでボトルネックを削る
yama3133
0
250
IR Today: Theory, Practice, and Agents
dtunkelang
0
310
AIに書かせて、プラットフォームで縛る ― EKSプラットフォームで実践した責任境界と権限設計
elmodev09
1
1.1k
10年欲しかった音楽管理アプリを、AIと一緒に作りはじめた
judau
1
200
Claude起点の仕様駆動開発
tanakaseiya
0
280
20260929_AmazonGuardDutyの検出通知メールにAWS DevOpsAgentの調査結果を追加する
yhana
1
410
Incremental HTTP
kazuho
5
1.9k
オブザーバビリティを高める AI エージェント体験を考える / Designing AI Agent Experiences That Enhance Observability
aoto
PRO
1
170
Featured
See All Featured
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
320
My Coaching Mixtape
mlcsv
0
330
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
440
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
290
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
500
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
440
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
610
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.3k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
450
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Transcript
自宅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クラスターを ドキュメントが英語なのと、何が分からないか分からないので難しい…