🎯 レッスンの目的__HTMLTAG_68___
このレッスンを完了すると、次のことができるようになります:
- ✅ HA セットアップの K8s API サーバーにロード バランサが必要な理由を理解する
- ✅ 仮想 IP (VIP) フェイルオーバー用にキープアライブをインストールして構成する
- ✅ API サーバーの負荷分散用に HAProxy をインストールして構成する
- ✅ ヘルスチェックと自動フェイルオーバーを構成する
- ✅ 障害をシミュレートして HA をテスト
- ✅ keepalived+HAProxy と kube-vip を比較
パート 1: API サーバーにロード バランサーが必要な理由
1.1。単一の API エンドポイントの問題
コードブロック_0
1.2.ロード バランサ アーキテクチャ
コードブロック_1
1.3。アーキテクチャを選択
| オプション | 利点_ | 欠点 | 推奨 |
|---|---|---|---|
| 専用 LB ノード | 分離、シンプル、明確な分離__HTMLTAG_115___ | あと 2 台のサーバーが必要__HTMLTAG_117___ | ✅ 制作_ |
| マスター上の HAProxy | _追加のサーバーは必要ありません | リソースの競合、複雑さ | ラボ/小規模 |
| kube-vip (DaemonSet) | 外部 LB は不要 | K8 内で実行 → ニワトリと卵 | 簡単なセットアップ |
本番グレードのセットアップには、__HTMLTAG_145___専用 LB ノード (lb1 + lb2) を使用します。
パート 2: HAPROXY のインストールと構成
2.1. HAProxy
をインストールする ___コードブロック_2___2.2. HAProxy 構成
___コードブロック_3___2.3.高度なヘルスチェック (HTTP)
TCP チェックでは、開いているポートのみがチェックされます。 API サーバーが本当に正常であることを確認するには、HTTP ヘルス チェックを使用します:
コードブロック_4
⚠️ 注: K8s API は自己署名証明書を使用するため、HTTP ヘルス チェックには check-ssl verify none が必要です。運用環境では、検証用に CA 証明書を構成できます。
2.4. HAProxy を開始
___コードブロック_5___パート 3: インストールと構成の維持
3.1.キープアライブとは何ですか?
keepalived は VRRP (仮想ルーター冗長プロトコル) を使用して、2 つ以上のサーバー間の仮想 IP を管理します:
コードブロック_6
3.2.キープアライブをインストール
___コードブロック_7___3.3. lb1 でのキープアライブ設定 (MASTER)
___コードブロック_8___3.4. lb2 でのキープアライブ構成 (バックアップ)
___コードブロック_9___3.5。通知スクリプト (オプション)
___コードブロック_10___3.6.キープアライブを開始
___コードブロック_11___パート 4: HA フェイルオーバーのテスト
4.1.テスト 1: lb1 ダウン時の VIP フェイルオーバー
___コードブロック_12___4.2.テスト 2: HAProxy の失敗 → キープアライブのデモ
___コードブロック_13___4.3.テスト 3: API サーバー バックエンド フェイルオーバー
___コードブロック_14___パート 5: 代替案 — kube-vip
5.1. kube-vip とは何ですか?
kube-vip は、コントロール プレーン ノード上で静的ポッドとして実行され、VIP と負荷分散を 1 つのコンポーネントで組み合わせます:
コードブロック_15
5.2.詳細な比較_
| 基準 | キープアライブ + HAProxy | kube-vip |
|---|---|---|
| _追加サーバー | 2 つの LB サーバーが必要 | 必要ありません |
| _複雑さ | 2 つのコンポーネントを管理する必要があります | 1 コンポーネント |
| _独立 | ✅ K8s クラスターから独立 | ❌ K8 で実行 (鶏卵) |
| 鶏卵問題 | ✅ なし | ⚠️ K8s の前に初期化する必要があります |
| _ヘルスチェック | ✅ 高度な (HTTP、TCP、スクリプト) | 基本 |
| _モニタリング | ✅ HAProxy 統計、Prometheus | 限定 |
| _実証済みの制作 | ✅ 20 年以上 | より新しく、あまり実戦テストされていない |
| ラボ/開発 | やりすぎ | _✅ 完璧 |
💡 推奨事項:
- _制作: keepalived + HAProxy (成熟した、独立した、監視可能)
- _ラボ/小規模: kube-vip (よりシンプル、追加のサーバーなし)
5.3. kube-vip クイック セットアップ (リファレンス)
___コードブロック_16___パート 6: 制作上の考慮事項
6.1. HAProxy 実稼働チューニング
___コードブロック_17___6.2. Prometheus を使用した HAProxy の監視
___コードブロック_18___6.3.キープアライブの監視
___コードブロック_19___💡 重要なポイント
- _VIP は K8s HA にとって重要 — すべてのコンポーネントは VIP 経由で接続され、ハードコード マスター IP はありません
- keepalived VRRP プロトコル経由で VIP フェイルオーバーを管理、フェイルオーバー < 3 giây
- HAProxy ヘルスチェックを使用して TCP トラフィックを正常な API サーバーに負荷分散します
- nopreempt モードは、MASTER 回復時の不要な VIP の羽ばたきを回避
- ヘルスチェックスクリプト キープアライブで、VIP が HAProxy が正常なノード上にのみ存在することを確認
- _フェイルオーバーのテスト K8 を展開する前に: LB をオフにし、HAProxy をオフにして、VIP の移行を確認します_
🎯 演習
演習 1: HAProxy + keepalived のデプロイ
- 指示に従って HAProxy + keepalived を lb1 と lb2 にインストールします
- lb1 で VIP がアクティブであることを確認
- HAProxy 統計ページにアクセス
演習 2: フェイルオーバー テスト
- テスト 1: lb1 でキープアライブを停止し、VIP が lb2 に移動することを確認
- テスト 2: lb1 で HAProxy を停止し、自動降格を確認します
- テスト 3: 両方を再起動し、正しい状態を確認します
- 連続 ping によるフェイルオーバー時間の測定
_演習 3: 上級
- HAProxy 用の Prometheus エクスポーターを追加
- フェイルオーバーの発生時に Slack にアラートを送信する通知スクリプトを作成します__HTMLTAG_385___
- HAProxy ログの詳細を別のファイルで構成
📚 次の投稿
__HTMLTAG_393___レッスン 5: すべてのノードにcontainerdとkubeadmをインストールでは、コンテナ ランタイム (containerd) とkubeadm ツールをインストールし、K8s HA クラスターの初期化の準備をします。