Kubernetes - 3 つのオフィス拠点にわたる HA 分散セットアップ

Kubernetes - 3 つのオフィス拠点にわたる HA 分散セットアップ

社内のオンプレミス スタック HA Kubernetes を、3 つのコントロール プレーン、3 つのオフィス ロケーションにまたがる 3 つのワーカー ノード クラスターで拡張したいと考えています。各コントロール プレーンと 1 人のワーカーが各オフィスに存在します。各コントロール プレーンには独自の静的 IP があります。

たとえば、オフィス 1 で停電が発生した場合、ロード バランサー (metallb を使用しています) がどのように機能するのか理解できません。トラフィックはどのようにしてオフィス 2 と 3 にリダイレクトされるのでしょうか。

たとえば、office-1-node で実行されている nextcloud にアクセスする外部のパブリック ユーザーは、office-1-node の静的 IP に関連付けられた fqdn cloud.company.com を使用している可能性があります。(ただし、nextcloud は office-2-node または office-3-node のワーカーまたはマスターで実行されている可能性がありますが、ユーザーにとっては問題ではありません。)

office-1-node で停電が発生した場合、cloud.company.com を office-2-node または office-3-node の静的 IP に誘導するにはどうすればよいでしょうか?

私もまだ勉強中ですので、回答する際にはその点を念頭に置いてください。

答え1

Metal LBが展開されているのがわかりました(https://metallb.universe.tf/インストール/)をコントローラー(IP割り当てを処理)とデーモンセット(コンポーネント - スピーカー -> これは、外部アナウンスを処理するものだと思いますhttps://metallb.universe.tf/concepts/)。したがって、この LB は基本的に Kubernetes リソースとしてデプロイされます。

さて、あなたの質問ですが、office-1-node が停止した場合、他のノードのデーモンセット内のポッドは必要に応じて機能し (外部にアナウンスしてサービスにアクセスできるようにします)、他のマスター ノードのコントローラーは IP 割り当てを引き続き処理します。

リソース:

  1. Kubernetes コントローラーhttps://kubernetes.io/docs/concepts/architecture/controller/
  2. Kubernetes デーモンセットhttps://kubernetes.io/docs/concepts/workloads/controllers/daemonset/
  3. Kubernetes Metallb マニフェスト -https://github.com/metallb/metallb/blob/main/manifests/metallb.yaml

編集: 2番目のコメントで質問に答えます。まず、ドメイン名を購入する必要があります(godaddy、bigrock、AWS Route53などから)。次に、そのドメイン名をロードバランサーのIP(オプションでポート付き)にポイントするCNAMEを作成します(あなたの場合、稼働時間を確保するために、office-1、2、3のIPをラウンドロビン方式で使用できます)。このラウンドロビン方式は、DNS 負荷分散または、実装することもできますDNSフェイルオーバーAWS Route53 のように、ロードバランサーにヘルスチェックを実装します。完了すると、外部ユーザーは引き続き kubernetes のサービスにアクセスできるようになります (office-2 および 3 から)

関連情報