Chuyển đến nội dung chính

レッスン 2: ハードウェアとネットワーク トポロジの計画

コントロール プレーン、ワーカー ノード、ストレージ ノードの CPU/RAM/ディスクを計算します。ネットワーク トポロジの設計: 管理ネットワーク、クラスター ネットワーク、ストレージ ネットワーク、外部ネットワーク。実稼働用の VLAN、ボンディング、MTU サイジング。

🔒 DevSecOps — レッスン 2 レッスン 2: ハードウェアとネットワークの計画 トポロジー_

Kubernetes HA を使用してマイクロサービスをオンプレミスにデプロイ

パート 1: プラットフォームとオンプレミスのインフラストラクチャ設計

xdev.asia

🎯 レッスンの目的__HTMLTAG_68___

このレッスンを完了すると、次のことができるようになります:

  • ✅ 各タイプのノード (コントロール プレーン、ワーカー、ストレージ) の正確なサイズを計算
  • ✅ VLAN 分離を使用した運用グレードのネットワーク トポロジの設計__HTMLTAG_75___
  • ✅ HA ネットワーク用の NIC ボンディングの構成
  • ✅ 各ネットワーク セグメントに適切な MTU を理解して選択
  • ✅ 実際のプロジェクトの完全なハードウェア計画を作成

パート 1: コントロール プレーン ノードのサイズ設定

1.1.コントロール プレーンで実行されるコンポーネント

コードブロック_0

1.2。コントロール プレーンのリソースの計算

etcd は最も重要な要素__HTMLTAG_91___

etcd のパフォーマンスは主にディスク I/O に依存します。 etcd ドキュメントのサイズ設定ガイドラインは次のとおりです:

クラスター サイズ ノード ポッド etcd CPU etcd RAM etcd ディスク_ ディスク タイプ
小 < 10 < 500 2 コア 4GB 50GB SSD
中 10-50 500-5000 4 コア 8GB 100GB NVMe SSD_
大 50-100 5000+ 8 コア 16GB 200GB NVMe SSD_

⚠️ 重要: etcd にはディスク遅延が必要です p99 < 10ms. Dùng NVMe SSD chuyên dụng cho etcd.

kube-apiserver のサイジング

___コードブロック_1___

コントロール プレーン ノードのサイジングの合成

___HTMLTAG_268__-
コンポーネント CPU リクエスト CPU 制限 RAM リクエスト RAM 制限
kube-apiserver__HTMLTAG_193___ 250m 2000m 512Mi 4Gi
etcd 500m 4000m 1Gi 8Gi
kube-scheduler 100m 500m 128Mi 512Mi
kube-コントローラーマネージャー 200m 1000m 256Mi 1Gi
kubelet + コンテナd 200m 500m 256Mi 1Gi
Cilium エージェント_ 100m 500m 256Mi 1Gi
OS オーバーヘッド 500m 1Gi _-
_合計 _~2 コア_ ~8 コア ~3.5Gi ~16Gi

💡 制作に関する推奨事項:

___コードブロック_2___

パート 2: ワーカー ノードのサイズ設定

2.1.ワークロード要件から計算

ワーカー ノードを計算する式:

___コードブロック_3___

2.2.サイズ別のサイズガイドライン

スケール サービス 労働者 CPU/ノード RAM/ノード ディスク/ノード
小規模 (研究室) 5-10 3 8 コア 32GB 200GB SSD
中 10-30 5-8 16 コア 64GB 500GB NVMe
大 30-100 10-20 32 コア 128GB 1TB NVMe
XLarge 100+ 20+ 64 コア 256GB 2TB NVMe

2.3.システム予約リソース

Kubernetes は、各ノードのシステム コンポーネント用のリソースを予約する必要があります:

コードブロック_4

コードブロック_5


パート 3: ストレージ ノードのサイジング (CEPH)

3.1.ストレージ ノード上の Ceph コンポーネント

___コードブロック_6___

3.2.ストレージ容量の計算

___コードブロック_7___

3.3. Ceph OSD ノードのサイジング

コンポーネント サイズ設定ルール_ 例 (ノードあたり 4 つの OSD)
OSD あたりの CPU OSD あたり 1 コア (分) OSD 用の 4 コア
OSD ごとの RAM OSD ごとに 5GB (BlueStore のデフォルト) OSD 用 20GB
Ceph MON RAM ~2~4GB 4GB
システム + K8s ~4GB RAM、2 コア 4GB、2コア
_ノードごとの合計 6 コア、28GB RAM

💡 推奨事項:

___コードブロック_8___

⚠️ 重要な決定: 専用ストレージ ノード vs コンバージド (ワーカー + ストレージ)?

___コードブロック_9___

パート 4: ネットワーク トポロジの設計

4.1.本番用の 4 つのネットワーク

コードブロック_10

4.2. IP プランニングの詳細

___HTMLTAG_503__- ___HTMLTAG_523__- ___HTMLTAG_539__- ___HTMLTAG_563__- ___HTMLTAG_587__- ___HTMLTAG_647__-
ノード 管理 (VLAN 10) クラスター (VLAN 20) ストレージ (VLAN 30) 役割
lb1 192.168.10.9 10.10.20.9 HAProxy/キープアライブプライマリ
lb2 192.168.10.10 10.10.20.10 _- HAProxy/キープアライブバックアップ
VIP 10.10.20.100 - K8s API サーバー VIP
マスター1 192.168.10.11 10.10.20.11 コントロール プレーン 1
マスター2 192.168.10.12 10.10.20.12 - コントロール プレーン 2
マスター3 192.168.10.13 10.10.20.13 コントロール プレーン 3
worker1 192.168.10.21 10.10.20.21 _- ワーカー ノード 1
worker2 192.168.10.22 10.10.20.22 ワーカー ノード 2
worker3 192.168.10.23 10.10.20.23 _- ワーカー ノード 3
ストレージ1 192.168.10.31 10.10.20.31 10.10.30.31 Ceph OSD ノード 1
ストレージ2 192.168.10.32 10.10.20.32 10.10.30.32 Ceph OSD ノード 2
ストレージ3 192.168.10.33 10.10.20.33 10.10.30.33 Ceph OSD ノード 3
_メタルLBプール - _- 10.10.40.200-250

4.3. NIC ボンディング構成

NIC ボンディング (LACP) は、リンク冗長性と帯域幅集約を提供します:

コードブロック_11

コードブロック_12

4.4. MTU サイズ

ネットワーク MTU 理由
管理 1500 標準、すべてのデバイスと互換性
クラスター (K8s) 9000 ジャンボ フレームは CPU オーバーヘッドを削減し、スループットを向上させます__HTMLTAG_688___
ストレージ (Ceph) 9000 Ceph OSD レプリケーションのパフォーマンスにとって重要__HTMLTAG_696___
外部 1500 _インターネット接続トラフィックの標準__HTMLTAG_704___
ポッド ネットワーク (Cilium) 8950 MTU アンダーレイ (9000) - VXLAN オーバーヘッド (50)

⚠️ ジャンボ フレーム要件: パス上のすべてのスイッチ ポートが MTU 9000 をサポートし、有効にする必要があります。展開する前にスイッチ管理者に確認してください。


パート 5: スイッチとファイアウォールの要件

5.1.切り替え要件

___コードブロック_13___

5.2.ネットワーク間のファイアウォール ルール

出典 目的地 ポート プロトコル 目的
管理 すべてのノード 22 TCP SSH
外部 労働者/LB 80、443 TCP HTTP/HTTPS イングレス
外部 マスター VIP _6443 TCP K8s API (外部が必要な場合)
クラスター クラスター 6443 TCP K8s API サーバー
クラスター クラスター 2379-2380 TCP etcd ピアとクライアント_
クラスター クラスター 10250 TCP kubelet API_
クラスター クラスター 10259 TCP kube-scheduler__HTMLTAG_827___
クラスター クラスター 10257 TCP kube-コントローラーマネージャー
クラスター クラスター 30000-32767 TCP NodePort 範囲
クラスター クラスター 4240、4244 TCP 繊毛の健康、ハッブル
クラスター クラスター 8472 UDP Cilium VXLAN
ストレージ ストレージ 6789 TCP Ceph MO_
ストレージ ストレージ 6800-7300 TCP Ceph OSD
クラスター ストレージ 6789,6800-7300 TCP Ceph クライアント アクセス

パート 6: ディスクのレイアウトとパーティショニング__HTMLTAG_918___

6.1。コントロール プレーンのディスク レイアウト

___コードブロック_14___

6.2.ワーカー ノードのディスク レイアウト

___コードブロック_15___

6.3.ストレージ ノードのディスク レイアウト

___コードブロック_16___

パート 7: 部品表 (BOM)

7.1。実稼働用の BOM (中 - 20 マイクロサービス)

# コンポーネント 数量 仕様 役割
1 サーバー (コントロール プレーン) 3 8C/32GB/500GB NVMe、2×10GbE K8s マスター
2 サーバー (ワーカー) 5 16C/64GB/500GB NVMe、2×25GbE ワークロード ノード_
3 サーバー (ストレージ) 3 8C/64GB/500GB NVMe + 4×2TB NVMe、2×25GbE Ceph OSD
4 サーバー (LB) 2 4C/8GB/100GB SSD、2×10GbE HAProxy/キープアライブ
5 ToR スイッチ 2 48×25GbE + 8×100GbE アップリンク ネットワーク
6 UPS 2 3kVA オンライン二重変換 電源保護
7 PDU 2 管理されたデュアル フィード 配電

合計: サーバー 13 台 + スイッチ 2 台 + 電源インフラストラクチャ


💡 重要なポイント

  1. コントロール プレーン には、etcd 用の NVMe SSD、8 コア以上、ノードあたり 16 ~ 32 GB の RAM が必要
  2. ワーカーのサイズ ポッド リクエストの合計 + 30% のバッファ + システム予約済みから計算
  3. Ceph ストレージOSD ごとに 5GB RAM が必要、未フォーマットのディスク
  4. VLAN 別の 4 つの個別のネットワーク: 管理、クラスター、ストレージ、外部
  5. NIC ボンディング (LACP) リンク冗長性、ジャンボ フレーム 9000 クラスタ/ストレージ
  6. ディスク レイアウト: etcd には別のパーティションが必要、Ceph には生のブロック デバイスが必要

🎯 演習__HTMLTAG_1069___

演習 1: サイズの計算

以下を含むシステムの場合:

  • 30 マイクロサービス、各サービス 2 レプリカ、平均 1 CPU/2GB RAM
  • PostgreSQL 3 ノード (それぞれ 4 CPU/8GB RAM)
  • Kafka 3 ブローカー (それぞれ 4 CPU/8GB RAM)
  • 完全な可観測性スタック
  • データ保持: 90 日間のログ、1 年間の指標

計算: ワーカー ノード、ストレージ ノードの数、必要な合計ディスク容量。

演習 2: ネットワーク設計__HTMLTAG_1089___

次の内容を含む、上記のシステムの詳細なネットワーク トポロジ図を描画します。

  • 各ネットワーク セグメントの VLAN 割り当て__HTMLTAG_1094___
  • すべてのノードの IP 計画表__HTMLTAG_1096___
  • NIC ボンディング トポロジ
  • ファイアウォール ルール マトリックス

演習 3: ラボのセットアップ__HTMLTAG_1103___
  • レッスン 1 の Vagrantfile を使用して、ストレージ ネットワーク用の NIC を追加
  • VM で VLAN を構成する (ハイパーバイザーがサポートする場合)
  • 接続のテスト: すべてのネットワーク間の ping、iperf3
  • MTU 9000 がクラスタ ネットワークで動作することを確認

📚 次の投稿

__HTMLTAG_1118___レッスン 3: Linux OS とシステム チューニングの準備 では、Kubernetes をインストールする前に、カーネル パラメーターを構成し、スワップをオフにし、NTP と SSH 強化をセットアップし、すべてのノードを準備します。