この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

高可用性RKE Kubernetesクラスターのインフラストラクチャの設定

Rancher Kubernetes Engine (RKE/RKE1) will reach end of life on July 31, 2025. Rancher 2.12.0 and later will no longer support provisioning or managing downstream RKE1 clusters. We recommend replatforming RKE1 clusters to RKE2 to ensure continued support and security updates. Learn more about the transition here.

このチュートリアルは、高可用性のRKEクラスターを作成し、Rancherサーバーをインストールするのに役立つことを目的としています。

重要:

これらのノードは同じリージョンに存在する必要があります。これらのサーバーを別々の可用性ゾーン(データセンター)に配置することができます。

高可用性のRKEクラスターにRancher管理サーバーをインストールするには、以下のインフラストラクチャを設定することをお勧めします:

  • 3つのLinuxノード、通常はAmazonのEC2、Google Compute Engine、またはvSphereなどのインフラストラクチャプロバイダーにおける仮想マシンです。

  • *ロードバランサー*がフロントエンドトラフィックを3つのノードに振り分けます。

  • *DNSレコード*がURLをロードバランサーにマッピングします。これがRancherサーバーのURLとなり、ダウンストリームのKubernetesクラスターはそれにアクセスする必要があります。

これらのノードは同じリージョン/データセンターに存在する必要があります。これらのサーバーを別々の可用性ゾーンに配置することができます。

なぜ3つのノードなのですか?

RKEクラスターでは、Rancherサーバーのデータはetcdに保存されます。このetcdデータベースは3つのノードすべてで実行されます。

etcdデータベースは、常にetcdクラスターの過半数でリーダーを選出できるように、奇数のノードを必要とします。etcdデータベースがリーダーを選出できない場合、etcdは スプリットブレインに苦しむ可能性があり、クラスターはバックアップから復元する必要があります。3つのetcdノードのうち1つが故障した場合、残りの2つのノードはetcdノードの総数の過半数を持っているため、リーダーを選出できます。

1.Linuxノードの設定

ノードがOS、コンテナランタイム、ハードウェア、ネットワークの一般的なインストール要件を満たしていることを確認してください。

Linuxノードを設定する1つの方法の例については、Amazon EC2でインスタンスとしてノードを設定するためのこのチュートリアルを参照してください。

2.ロードバランサーの設定

Rancherのレプリカにトラフィックを送るために、3つのノードのいずれかにロードバランサーを設定する必要があります。これにより、単一のノードの障害がRancher管理サーバーへの通信を妨げることを防ぎます。

Kubernetesが後のステップで設定されると、RKEツールがNGINX Ingressコントローラーをデプロイします。このコントローラーは、ワーカーノードのポート80および443でリスンし、特定のホスト名宛てのトラフィックに応答します。

Rancherがインストールされると(これも後のステップで)、RancherシステムはIngressリソースを作成します。そのIngressは、NGINX IngressコントローラーにRancherのホスト名宛てのトラフィックをリスンするよう指示します。NGINX Ingressコントローラーは、Rancherのホスト名宛てのトラフィックを受信すると、そのトラフィックをクラスター内の実行中のRancherポッドに転送します。

実装において、Layer-4またはLayer-7のロードバランサーを使用するかどうかを検討してください:

  • *Layer-4ロードバランサー*は、ノードにTCPトラフィックを転送するという2つの選択肢の中で、よりシンプルな方です。ロードバランサーをLayer 4バランサーとして構成し、TCP/80およびTCP/443のポートにトラフィックをRancher管理クラスターのノードに転送することをお勧めします。クラスター内のIngressコントローラーは、HTTPトラフィックをHTTPSにリダイレクトし、ポートTCP/443でSSL/TLSを終了します。Ingressコントローラーは、Rancherデプロイメント内のIngressポッドにTCP/80のポートへのトラフィックを転送します。

  • *Layer-7ロードバランサー*は少し複雑ですが、必要な機能を提供することができます。例えば、Layer-7ロードバランサーは、RancherがTLS終了を自ら行うのではなく、ロードバランサーでTLS終了を処理することができます。これは、インフラストラクチャ内でTLS終了を集中管理したい場合に有益です。Layer-7負荷分散は、Layer-4ロードバランサーが関与できないクッキーなどのHTTP属性に基づいて、ロードバランサーが意思決定を行う能力も提供します。Layer-7ロードバランサーでSSL/TLSトラフィックを終了することを決定した場合、後のステップでRancherをインストールする際に`--set tls=external`オプションを使用する必要があります。詳細については、Rancher Helmチャートオプションを参照してください。

NGINXロードバランサーの設定方法を示す例については、このページを参照してください。

Amazon ELB ネットワークロードバランサーの設定に関するハウツーについては、こちらのページをご覧ください。

このロードバランサー(すなわち、local クラスターの Ingress)を、インストール後に Rancher 以外のアプリケーションのロードバランシングに使用しないでください。この Ingress を他のアプリケーションと共有すると、他のアプリケーションの Ingress 設定のリロード後に Rancher に websocket エラーが発生する可能性があります。local クラスターは Rancher 専用とし、他のアプリケーションには使用しないことをお勧めします。

3.DNS レコードを設定する

ロードバランサーを設定したら、このロードバランサーにトラフィックを送信するための DNS レコードを作成する必要があります。

環境によっては、LB IP を指す A レコードであるか、ロードバランサーのホスト名を指す CNAME である場合があります。いずれの場合でも、このレコードが Rancher が応答することを意図しているホスト名であることを確認してください。

Rancher をインストールする際に、このホスト名を後のステップで指定する必要があり、後で変更することはできません。あなたの決定が最終的なものであることを確認してください。

ドメイントラフィックを Amazon ELB ロードバランサーにルーティングするための DNS レコードの設定に関するハウツーガイドについては、 公式 AWS ドキュメントをご覧ください。