手動負荷分散モードの有効化

GKE On-Prem クラスタは、「統合」または「手動」のいずれかの負荷分散モードで実行できます。統合モードでは、GKE On-Prem クラスタは F5 BIG-IP ロードバランサを使用します。手動モードでは、別のロードバランサを手動で構成します。たとえば、Citrix ロードバランサSeesaw ロードバランサなどを手動で構成できます。

手動負荷分散モードでは、統合モードよりも多くの構成を行う必要があります。このページでは、手動モードで必要な手順について説明します。

制限事項

手動負荷分散には次の制限事項があります。

  • DHCP を使用してクラスタノードに IP アドレスを割り当てることはできません。静的ノード IP アドレスを割り当てる必要があります。

  • タイプ LoadBalancer の Service をクラスタ外のクライアントに公開することはできません。ただし、NodePort タイプの Service を作成し、それらをバックエンドとして使用するようにロードバランサを手動で構成できます。また、Ingress オブジェクトを使用して Service を公開することもできます。

  • クラスタノードを追加または削除する場合は、それに応じてロードバランサを手動で構成する必要があります。

手動負荷分散のサポートの取得について

Google では、手動負荷分散モードを使用して構成されたロードバランサはサポートされません。ロードバランサに問題が発生した場合は、ロードバランサのベンダーにお問い合わせください。

IP アドレスの予約

作成する各クラスタには、ノードと呼ばれる VM が 3 つ以上あります。作成するクラスタ内の各ノードの IP アドレスを予約します。たとえば、4 つのノードを持つ管理クラスタと 3 つのノードを持つユーザー クラスタを作成する場合は、ノード用に 7 つの IP アドレスを予約します。すべてのノード IP アドレスがルーティング可能となるようにルーターを構成します。

また、負荷分散用に次の VIP を予約する必要があります。

  • 管理コントロール プレーンの VIP(公開ポート: TCP 443)
  • 管理クラスタ Ingress コントローラの VIP(公開ポート: TCP 80、TCP 443)
  • アドオン マネージャーの VIP(公開ポート: TCP 8443)
  • ユーザー コントロール プレーンの VIP(公開ポート: TCP 443)
  • ユーザー クラスタ Ingress コントローラの VIP(公開ポート: TCP 80、TCP 443)

ノードポートの予約

GKE On-Prem は、タイプ NodePortKubernetes Service オブジェクトを使用してトラフィックを Pod にルーティングします。

Service には ServicePort オブジェクトの配列である ports フィールドがあります。NodePort タイプの Service 内では、各 ServicePort オブジェクトに protocolportnodePort、および targetPort があります。たとえば、ports 配列に ServicePort オブジェクトが 2 つある Service のマニフェストの一部は次のとおりです。

...
kind: Service
...
spec:
  ...
  type: NodePort
  ports:
  - protocol: TCP
    port: 80
    nodePort: 32676
    targetPort: 8080
  - protocol: TCP
    port: 443
    nodePort: 32677
    targetPort: 443
...

上述の Service がユーザー クラスタの Ingress コントローラを表すとします。さらに、次の選択を行ったとします。

  • 203.0.113.5 は、ユーザー クラスタ Ingress コントローラの VIP です。
  • ユーザー クラスタのノードアドレスは 192.168.0.10192.168.0.11192.168.0.12 です。

ロードバランサを構成すると、トラフィックは次のように転送されます。

  • クライアントは TCP ポート 80 で 203.0.113.5 にリクエストを送信します。ロードバランサはユーザー クラスタ ノードを選択します。この例では、ノードアドレスは 192.168.0.11 であると仮定しています。ロードバランサは、リクエストを TCP ポート 32676 で 192.168.0.11 に転送します。ノードの iptables ルールは、TCP ポート 8080 で適切な Pod にリクエストを転送します。

  • クライアントは TCP ポート 443 で 203.0.113.5 にリクエストを送信します。ロードバランサはユーザー クラスタ ノードを選択します。この例では、ノードアドレスは 192.168.0.10 であると仮定しています。ロードバランサは、リクエストを TCP ポート 32677 で 192.168.0.10 に転送します。ノードの iptables ルールは、TCP ポート 443 で適切な Pod にリクエストを転送します。

VIP 用の Service オブジェクトを作成する必要はありません。これは、GKE On-Prem により自動的に行われます。ただし、VIP、TCP ポートのペアごとに、次の項目を選択して指定する必要があります。

  • 一連のノード IP アドレス
  • nodePort の値

次に示す 7 通りの nodePort 値を予約する必要があります。

  • 管理クラスタ コントロール プレーン用の nodePort: TCP ポート 443
  • 管理クラスタ Ingress コントローラ用の nodePort: TCP ポート 80
  • 管理クラスタ Ingress コントローラ用の nodePort: TCP ポート 443
  • アドオン マネージャー用の nodePort: TCP ポート 8443
  • ユーザー コントロール プレーン用の nodePort: TCP ポート 80
  • ユーザー クラスタ Ingress コントローラ用の nodePort: TCP ポート 80
  • ユーザー クラスタ Ingress コントローラ用の nodePort: TCP ポート 443

GKE On-Prem 構成ファイルの変更

GKE On-Prem をインストールする際、構成ファイルを生成します。その構成ファイル中の以下のセクションを、次のように変更する必要があります。

  • lbmodeManual に設定する。

  • admincluster:ipblockfilepath を管理クラスタの静的 IP YAML ファイルのパスに設定します。これについての詳細は、静的 IP の構成をご覧ください。Manual モードでは DHCP は選択できません。

  • usercluster: ipblockfilepath をユーザー クラスタの静的 IP YAML ファイルのパスに設定します。

  • admincluster:manuallbspec フィールドを管理クラスタ用に選択した nodePort 値に更新します。

  • usercluster:manuallbspec セクションをユーザー クラスタ用に選択した nodePort 値に更新します。

次の例は、更新された構成ファイルの一部を示しています。

lbmode: Manual

admincluster:
  ipblockfilepath: "ipblock1.yaml"
  manuallbspec:
    ingresshttpnodeport: 32527
    ingresshttpsnodeport: 30139
    controlplanenodeport: 30968
    addonsnodeport: 31405

usercluster:
  ipblockfilepath: "env/default/ipblock2.yaml"
  manuallbspec:
    ingresshttpnodeport: 30243
    ingresshttpsnodeport: 30879
    controlplanenodeport: 30562

ロードバランサを構成する

構成ファイルを更新したら、ロードバランサの管理コンソールにログインして、VIP を構成します。

まず、管理クラスタとユーザー クラスタの IP アドレスプールが異なることを確認します。

前述のとおり、5 つの VIP と 7 つのポートを構成する必要があります。そこで、以下の 7 つの仮想サービスをロードバランサに作成します。

  • 管理クラスタ コントロール プレーン、TCP ポート 443
  • 管理クラスタ Ingress コントローラ、TCP ポート 80
  • 管理クラスタ Ingress コントローラ、TCP ポート 443
  • アドオン マネージャー、TCP ポート 8443
  • ユーザー コントロール プレーン、TCP ポート 80
  • ユーザー クラスタ Ingress コントローラ、TCP ポート 80
  • ユーザー クラスタ Ingress コントローラ、TCP ポート 443

次のステップ

トラブルシューティング

詳しくは、トラブルシューティングを参照してください。