🎯 レッスンの目的__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 台 + 電源インフラストラクチャ
💡 重要なポイント
- コントロール プレーン には、etcd 用の NVMe SSD、8 コア以上、ノードあたり 16 ~ 32 GB の RAM が必要
- ワーカーのサイズ ポッド リクエストの合計 + 30% のバッファ + システム予約済みから計算
- Ceph ストレージOSD ごとに 5GB RAM が必要、未フォーマットのディスク
- VLAN 別の 4 つの個別のネットワーク: 管理、クラスター、ストレージ、外部
- NIC ボンディング (LACP) リンク冗長性、ジャンボ フレーム 9000 クラスタ/ストレージ
- ディスク レイアウト: 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 強化をセットアップし、すべてのノードを準備します。