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

レッスン 4: Kubernetes API サーバーのロード バランサー (キープアライブ + HAPROXY)

keepalived + HAProxy をインストールして構成し、Kubernetes API サーバーの仮想 IP (VIP) を作成します。ヘルスチェック、自動フェイルオーバーを構成し、kube-vip と比較し、tcpdump/curl で HA をテストします。

🔒 DevSecOps — レッスン 4 レッスン 4: KUBERNETES API のロード バランサー サーバー (キープアライブ + HAPROXY)

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

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

xdev.asia

🎯 レッスンの目的__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___

💡 重要なポイント

  1. _VIP は K8s HA にとって重要 — すべてのコンポーネントは VIP 経由で接続され、ハードコード マスター IP はありません
  2. keepalived VRRP プロトコル経由で VIP フェイルオーバーを管理、フェイルオーバー < 3 giây
  3. HAProxy ヘルスチェックを使用して TCP トラフィックを正常な API サーバーに負荷分散します
  4. nopreempt モードは、MASTER 回復時の不要な VIP の羽ばたきを回避
  5. ヘルスチェックスクリプト キープアライブで、VIP が HAProxy が正常なノード上にのみ存在することを確認
  6. _フェイルオーバーのテスト 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 クラスターの初期化の準備をします。