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

高可用性SUSE® Rancher Prime: K3s Kubernetesクラスターのインフラストラクチャの設定

このチュートリアルは、Rancher管理サーバーの基盤となるインフラストラクチャをプロビジョニングするのに役立つことを目的としています。

Rancher専用のKubernetesクラスターに推奨されるインフラストラクチャは、RancherがK3s Kubernetesクラスター、RKE Kubernetesクラスター、または単一のDockerコンテナにインストールされるかどうかによって異なります。

各インストールオプションの詳細については、このページを参照してください。

重要:

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

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

  • 2つのLinuxノード(通常は仮想マシン)を、選択したインフラストラクチャプロバイダー内に用意します。

  • 外部データベース クラスターデータを保存するためのものです。MySQLを推奨します。

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

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

1.Linuxノードの設定

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

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

2.外部データストアを設定する

etcd以外のデータストアを用いてKubernetesを実行できる機能により、K3sは他のKubernetesディストリビューションと差別化されています。この機能はKubernetesオペレーターに柔軟性を提供します。利用可能なオプションにより、ご利用のユースケースに最適なデータストアを選択できます。

高可用性のK3sインストールには、 MySQL 外部データベースを設定する必要があります。Rancherは、データストアとしてMySQLバージョン5.7を使用したK3s Kubernetesクラスターでテストされています。

K3sインストールスクリプトを使用してKubernetesをインストールする際には、K3sがデータベースに接続するための詳細を渡します。

MySQLデータベースの設定方法の一例については、AmazonのRDSサービスでMySQLを設定するためのこのチュートリアルを参照してください。

K3sクラスターのデータストアを構成するために利用可能なオプションの完全なリストについては、 K3sドキュメントを参照してください。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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