Seesaw によるバンドル型負荷分散

Anthos clusters on VMware(GKE on-prem)は、統合、手動、バンドルの 3 つの負荷分散モードのいずれかで実行できます。このドキュメントでは、バンドル型負荷分散モードで実行するように Anthos clusters on VMware を構成する方法について説明します。

Anthos clusters on VMware が提供するバンドル型ロードバランサは、Seesaw ロードバランサです。

ここでは手順全体を詳しく解説します。Seesaw ロードバランサの使用方法の概要については、Seesaw ロードバランサ(クイックスタート)をご覧ください。

バンドル型負荷分散モードでは、Anthos clusters on VMware がロードバランサを提供し、管理します。ロードバランサにライセンスを割り当てる必要はありません。必要なセットアップ作業は最小限に抑えられます。

このドキュメントでは、管理クラスタと 1 つの関連するユーザー クラスタに対してバンドル型ロードバランシングを構成する方法について説明します。

バンドル型負荷分散モードの利点

バンドル型負荷分散モードには、手動負荷分散モードに比べて次のような利点があります。

  • 単一のチームがクラスタの作成とロードバランサの構成の両方を担当できます。たとえば、クラスタ管理チームは、事前にロードバランサの取得、実行、構成を別のネットワーキング チームに頼む必要はありません。

  • Anthos clusters on VMware は、ロードバランサ上で仮想 IP アドレス(VIP)を自動的に構成します。クラスタの作成時に、Anthos clusters on VMware は Kubernetes API サーバー、Ingress サービス、クラスタ アドオンの VIP を使用してロードバランサを構成します。クライアントが LoadBalancer タイプの Service を作成すると、Anthos clusters on VMware はロードバランサ上に Service の VIP を自動的に構成します。

  • 組織、グループ、管理者の間の依存関係が軽減されます。特に、クラスタを管理するグループは、ネットワークを管理するグループにあまり依存しないようになります。

バンドル型負荷分散モードには、vSphere 6.7 以降と仮想分散スイッチ(VDS)6.6 以降を使用することを強くおすすめします。

必要に応じて、以前のバージョンを使用することもできますが、インストールの安全性は低下します。このトピックの残りのセクションでは、vSphere 6.7 以降と VDS 6.6 以降を使用する際のセキュリティ上の利点について詳しく説明します。

Virtual Router Redundancy Protocol

Seesaw ロードバランサは、単一の VM で実行することも、2 つの VM を使用する高可用性(HA)モードで実行することもできます。HA モードでは、Seesaw ロードバランサは Virtual Router Redundancy Protocol(VRRP)を使用します。その 2 つの VM は、マスターとバックアップと呼ばれます。各 Seesaw VM には、任意の仮想ルーター ID(VRID)を指定します。

VLAN の計画

この演習では、管理クラスタと 1 つのユーザー クラスタを作成します。バンドル型負荷分散モードでは、クラスタを別々の VLAN に配置することを強くおすすめします。

管理クラスタが専用の VLAN 上に存在する場合、コントロール プレーンのトラフィックはデータプレーンのトラフィックから分離されます。これにより、管理クラスタとユーザー クラスタのコントロール プレーンが構成ミスから保護されます。このようなミスは、たとえば、同じ VLAN 内のレイヤ 2 ループによるブロードキャスト ストームや、データプレーンとコントロール プレーンの間の望ましい分離を排除する IP アドレスの競合などの問題につながる可能性があります。

VM リソースのプロビジョニング

Seesaw ロードバランサを実行する VM については、発生が予想されるネットワーク トラフィックに応じて CPU リソースとメモリリソースをプロビジョニングします。

Seesaw ロードバランサは、メモリ消費量が少なく、メモリが 1 GB の VM で実行できます。ただし、ネットワークのパケットレートが増加すると、CPU の要件も増加します。

次の表では、Seesaw VM をプロビジョニングするためのストレージ、CPU、メモリのガイドラインを示します。パケットレートは、ネットワーク パフォーマンスの一般的な基準ではないため、表には、アクティブなネットワーク接続の最大数に関するガイドラインも示しています。このガイドラインでは、VM に 10 Gbps のリンクがあり、CPU が 70% 未満の能力で実行される環境を想定しています。

Seesaw ロードバランサを HA モードで実行すると、(マスター、バックアップ)ペアが使用され、すべてのトラフィックが 1 つの VM を通過します。

実際の使用例は変化するため、これらのガイドラインは実際のトラフィックに基づいて変更する必要があります。 必要な変更は、CPU とパケットレートの指標をモニタリングして判断します。

Seesaw VM の CPU とメモリを変更する場合は、ロードバランサのアップグレードをご覧ください。なお、ロードバランサのバージョンを変えずに維持し、CPU の数とメモリ割り当てを変更できます。

小規模な管理クラスタの場合は 2 つの CPU を、大規模な管理クラスタの場合は 4 つの CPU をおすすめします。

ストレージ CPU メモリ パケットレート(pps) アクティブ接続の最大数
20 GB 1(非本番環境) 1 GB 250,000 100
20 GB 2 3 GB 450,000 300
20 GB 4 3 GB 850,000 6,000
20 GB 6 3 GB 1,000,000 10,000

仮想 IP アドレスの確保

負荷分散モードのどれを選択するかにかかわらず、負荷分散に使用する仮想 IP アドレス(VIP)をいくつか確保する必要があります。この VIP により、外部クライアントは Kubernetes API サーバー、Ingress Service、アドオン サービスにアクセスできます。

管理クラスタ VIP

管理クラスタの Kubernetes API サーバー用に VIP を確保します。管理クラスタの構成ファイルでは、これを controlPlaneVIP とします。この VIP は、管理クラスタノードと、管理クラスタ用 Seesaw VM と同じ VLAN 上にある必要があります。

管理クラスタ内のアドオン用に VIP を確保します。管理クラスタの構成ファイルでは、これを addonsVIP と呼びます。 この VIP は、管理クラスタノードと、管理クラスタ用 Seesaw VM と同じ VLAN 上にある必要があります。

ユーザー クラスタ VIP

ユーザー クラスタの Kubernetes API サーバー用に VIP を確保します。ユーザー クラスタの構成ファイルでは、これを controlPlaneVIP と呼びます。この VIP は、管理クラスタノードと、管理クラスタ用 Seesaw VM と同じ VLAN 上にある必要があります。これは、ユーザー クラスタの Kubernetes API サーバーが管理クラスタ内のノードで実行されるためです。

ユーザー クラスタに Ingress 用の VIP を確保します。ユーザー クラスタの構成ファイルでは、これを ingressVIP と呼びます。この VIP は、ユーザー クラスタノードと、ユーザー クラスタ用 Seesaw VM と同じ VLAN 上にある必要があります。

ノード IP アドレスの確保

バンドル型負荷分散モードでは、クラスタノードの静的 IP アドレスを指定することも、クラスタノードが DHCP サーバーから IP アドレスを取得することもできます。

クラスタノードに静的 IP アドレスを割り当てる場合は、管理クラスタ内のノードと、作成するすべてのユーザー クラスタのノードに十分な数のアドレスを確保します。設定するノード IP アドレスの数の詳細については、管理クラスタの作成をご覧ください。

Seesaw VM の IP アドレスの確保

次に、Seesaw ロードバランサを実行する VM の IP アドレスを確保します。

確保するアドレスの数は、HA Seesaw ロードバランサか非 HA Seesaw ロードバランサを作成するかによって異なります。

ケース 1: HA Seesaw ロードバランサ

管理クラスタでは、Seesaw VM のペア用に 2 つの IP アドレスを確保します。また、管理クラスタでは、Seesaw VM のペア用に単一のマスター IP アドレスを確保します。これら 3 つのアドレスはすべて、管理クラスタノードと同じ VLAN 上にある必要があります。

ユーザー クラスタでは、ペアの Seesaw VM 用に IP アドレスを 2 つ確保します。また、Seesaw VM のペアに、マスター IP アドレスを 1 つ確保します。この 3 つのアドレスはすべて、ユーザー クラスタノードと同じ VLAN 上になければなりません。

ケース 2: 非 HA Seesaw ロードバランサ

管理クラスタでは、Seesaw VM 用に 1 個の IP アドレスを確保します。管理クラスタ用に、Seesaw ロードバランサのマスター IP アドレスも確保します。これらのアドレスは両方とも、管理クラスタノードと同じ VLAN 上にある必要があります。

ユーザー クラスタでは、Seesaw VM 用に 1 個の IP アドレスを確保します。また、管理クラスタ用に、Seesaw ロードバランサのマスター IP アドレスも確保します。これらのアドレスは両方とも、ユーザー クラスタノードと同じ VLAN 上にある必要があります。

ポートグループの計画

Seesaw VM ごとに 2 つのネットワーク インターフェースがあります。マスター Seesaw VM の場合、そうしたネットワーク インターフェースの 1 つは VIP で構成され、もう 1 つのネットワーク インターフェースは指定した IP ブロック ファイルから取得した IP アドレスで構成されます。バックアップ Seesaw VM の場合、IP ブロック ファイルから取得した IP アドレスで 1 つのインターフェースが構成され、他のネットワーク インターフェースには何も構成されません。

個々の Seesaw VM では、2 つのネットワーク インターフェースを同じ vSphere ポートグループに接続することも、別々のポートグループに接続することもできます。ポートグループが別々の場合は、同じ VLAN 上にある必要があります。

このトピックでは、次の 2 つのポートグループを参照します。

  • ロードバランサ ポートグループ: Seesaw VM の場合、VIP で構成されたネットワーク インターフェースがこのポートグループに接続されます。

  • クラスタノード ポート グループ: Seesaw VM の場合、IP ブロック ファイルから取得された IP アドレスで構成されるネットワーク インターフェースがこのポートグループに接続されます。クラスタノードも、このポートグループに接続されます。

ロードバランサ ポートグループとクラスタノード ポートグループは同じものにできます。ただし、これらは別々にすることを強くおすすめします。

次の図では、Seesaw 負荷分散の推奨ネットワーク構成を示します。

Seesaw ロードバランサのネットワークを示す図。 VLAN 上の VM とクラスタノード

上の図は、1 つのクラスタ(管理クラスタまたはユーザー クラスタ)を示しています。各クラスタは独自の VLAN に配置することをおすすめします。

この図では、次のネットワークの特性を確認できます。

  • 2 つの Seesaw VM、1 つのマスターと 1 つバックアップがあります。

  • Seesaw VM はクラスタノードと同じ VLAN 上にあります。

  • バックアップ Seesaw VM には、ネットワーク インターフェースが 2 つあります。一方のインターフェースは、Seesaw IP ブロック ファイルから取得した IP アドレスで構成されます。もう一方のインターフェースには、IP アドレスは構成されません。

  • マスター Seesaw VM には、ネットワーク インターフェースが 2 つあります。一方のインターフェースは、Seesaw IP ブロック ファイルから取得した IP アドレスで構成されます。他のインターフェースは VIP で構成されます。

  • 各 Seesaw VM では、1 つのネットワーク インターフェースがロードバランサのポートグループに接続されています。図の他のすべてのネットワーク インターフェースが、クラスタノード ポートのグループに接続されています。

図に示されているネットワーク インターフェースで構成されているすべての IP アドレス(VIP を含む)は、VLAN にルーティング可能である必要があります。

管理クラスタの場合、Seesaw マスター VM 上の VIP インターフェースは、次の IP アドレスで構成されます。

  • 管理クラスタのマスター Seesaw VM の VIP
  • 管理クラスタのアドオン VIP
  • 管理クラスタのコントロール プレーン VIP
  • ユーザー クラスタのコントロール プレーン VIP
  • 管理クラスタで実行されている LoadBalancer タイプの Service の VIP

ユーザー クラスタの場合、Seesaw マスター VM 上の VIP インターフェースは、次の IP アドレスで構成されます。

  • ユーザー クラスタのマスター Seesaw VM の VIP
  • ユーザー クラスタの上り(内向き)VIP
  • ユーザー クラスタで実行されている LoadBalancer タイプの Service の VIP

IP ブロック ファイルの作成

クラスタ、管理者、ユーザーごとに、Seesaw VM 用に選択したアドレスを IP ブロック ファイルに指定します。 この IP ブロック ファイルは、クラスタノードではなく、ロードバランサ VM 用です。クラスタノードに静的 IP アドレスを使用する場合は、それらのアドレスに個別の IP ブロック ファイルを作成する必要があります。次に、Seesaw VM の 2 つの IP アドレスを指定する IP ブロック ファイルの例を示します。

blocks:
  - netmask: "255.255.255.0"
    gateway: "172.16.20.1"
    ips:
    - ip: "172.16.20.18"
      hostname: "seesaw-vm-1"
    - ip: "172.16.20.19"
      hostname: "seesaw-vm-2"

構成ファイルの入力

構成ファイルは、管理クラスタ用と、ユーザー クラスタ用に別々に準備します。

各クラスタの構成ファイルで、loadBalancer.kind"Seesaw" に設定します。

loadBalancer で、seesaw セクションに以下を入力します。

loadBalancer:
  kind: Seesaw
  seesaw:
    ipBlockFilePath:
    vrid:
    masterIP:
    cpus:
    memoryMB:
    vCenter:
      networkName:
    enableHA:
    disableVRRPMAC:

クラスタ構成ファイルの seesaw セクションの入力方法については、loadbalancer.seesaw(管理クラスタ)またはloadbalancer.seesaw(ユーザー クラスタ)を参照してください。

MAC ラーニングまたは無作為モードの有効化(HA のみ)

非 HA Seesaw ロードバランサを設定する場合は、このセクションをスキップできます。

loadBalancer.seesaw.disableVRRPMAC を true に設定した場合は、このセクションをスキップできます。

HA Seesaw ロードバランサをセットアップしていて、loadBalancer.seesaw.disableVRRPMACfalse に設定している場合は、ロードバランサのポートグループで、MAC ラーニング、偽装送信、プロミキャスト モードの組み合わせを有効化する必要があります。

こうした機能を有効にする方法は、スイッチのタイプによって異なります。

スイッチのタイプ機能の有効化セキュリティへの影響
vSphere 7.0 VDS vSphere 7.0 HA では、loadBalancer.seesaw.disableVRRPMACtrue に設定する必要があります。MAC ラーニングはサポートされていません。
vSphere 6.7 と VDS 6.6

次のコマンドを実行し、ロードバランサの MAC ラーニングと偽造送信を有効にします。gkectl prepare network --config [CONFIG_FILE]。ここで、[CONFIG_FILE] はクラスタ構成ファイルのパスです。これを行うには、dvPort group.Modify 権限が必要です。

最小。ロードバランサ ポートグループが Seesaw VM にのみ接続されている場合、MAC ラーニングを信頼できる Seesaw VM のみに制限できます。

vSphere 6.5 または

VDS のバージョンが 6.6 より前のバージョンの vSphere 6.7

ロードバランサ ポートグループの無作為モードと偽造転送を有効にします。[ネットワーキング] タブのポートグループ ページで vSphere のユーザー インターフェースを使用します([設定を編集] -> [セキュリティ])。 ロードバランサ ポートグループのすべての VM は無作為モードです。そのため、ロードバランサ ポートグループのどの VM もすべてのトラフィックを表示できます。ロードバランサ ポートグループが Seesaw VM にのみ接続されている場合、すべてのトラフィックを表示できるのはそれらの VM のみです。
NSX-T 論理スイッチ 論理スイッチで MAC ラーニングを有効化します。 vSphere は、同じレイヤ 2 ドメインに 2 つの論理スイッチを作成することをサポートしていません。そのため、Seesaw VM とクラスタノードは同じ論理スイッチ上にある必要があります。これは、すべてのクラスタノードで MAC ラーニングが有効であることを意味します。攻撃者がクラスタ内で特権 Pod を運用中にすることで、MAC なりすましを実現できる可能性があります。
vSphere Standard Switch ロードバランサ ポートグループの無作為モードと偽造転送を有効にします。各 ESXI ホストで vSphere のユーザー インターフェースを使用します([構成] -> [仮想スイッチ] -> [Standard Switch] -> [ポートグループの設定を編集] -> [セキュリティ])。 ロードバランサ ポートグループのすべての VM は無作為モードです。そのため、ロードバランサ ポートグループのどの VM もすべてのトラフィックを表示できます。ロードバランサ ポートグループが Seesaw VM にのみ接続されている場合、すべてのトラフィックを表示できるのはそれらの VM のみです。

管理クラスタ構成ファイルの入力を完了する

管理クラスタの作成の手順に沿って、管理クラスタの構成ファイルの入力を完了します。

プリフライト チェックを実行する

管理クラスタ構成ファイルのプリフライト チェックを実行します。

gkectl check-config --config ADMIN_CLUSTER_CONFIG

ADMIN_CLUSTER_CONFIG は、管理クラスタ構成ファイルのパスで置き換えます。

OS イメージのアップロード

OS イメージを vSphere 環境にアップロードします。

gkectl prepare --config ADMIN_CLUSTER_CONFIG

管理クラスタのロードバランサを作成する

gkectl create loadbalancer --config [ADMIN_CLUSTER_CONFIG]

管理クラスタを作成する

管理クラスタの作成の手順に沿って、管理クラスタを作成します。

ユーザー クラスタ構成ファイルの入力を完了する

ユーザー クラスタを作成するの手順に沿って、ユーザー クラスタ構成ファイルの入力を完了します。

プリフライト チェックを実行する

ユーザー クラスタ構成ファイルのプリフライト チェックを実行します。

gkectl check-config --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

次のように置き換えます。

  • ADMIN_CLUSTERE_KUBECONFIG: 管理クラスタの kubeconfig ファイルのパス

  • USER_CLUSTER_CONFIG: ユーザー クラスタの構成ファイルのパス

OS イメージのアップロード

OS イメージを vSphere 環境にアップロードします。

gkectl prepare --config USER_CLUSTER_CONFIG

ユーザー クラスタにロードバランサを作成する

ユーザー クラスタにロードバランサを作成する

gkectl create loadbalancer --config USER_CLUSTER_CONFIG

ユーザー クラスタを作成する

ユーザー クラスタを作成するの手順に沿ってユーザー クラスタを作成します。

パフォーマンスと負荷テスト

アプリケーションのダウンロード スループットは、バックエンドの数に比例します。これは、ロードバランサを迂回し、Direct Server Return を使用して、バックエンドがクライアントに直接レスポンスを送信するためです。

対照的に、アプリケーションのアップロード スループットは、負荷分散を実行する 1 つの Seesaw VM の処理能力によって制限されます。

必要な CPU とメモリの量はアプリケーションによって異なるため、多数のクライアントへの運用を開始する前に負荷テストを行うことが非常に重要です。

テストでは、6 個の CPU と 3 GB のメモリを備えた 1 つの Seesaw VM が、10 K の同時 TCP 接続で 10 GB/秒(ラインレート)のアップロードのトラフィックを処理できることが示されています。ただし、多数の同時 TCP 接続のサポートを計画している場合は、独自の負荷テストを実行することが重要です。

スケーリングの上限

バンドル型負荷分散では、クラスタのスケーリングに上限があります。クラスタ内のノード数には上限があり、ロードバランサで構成できるサービス数にも上限があります。ヘルスチェックにも上限があります。ヘルスチェック数は、ノード数とサービス数の両方に依存します。

バージョン 1.3.1 以降では、ヘルスチェックの数はノードの数とトラフィックのローカル サービスの数によって異なります。トラフィックのローカル サービスは、externalTrafficPolicy"Local" に設定された Service です。

バージョン 1.3.0バージョン 1.3.1 以降
最大サービス数(S)100500
最大ノード数(N)100100
最大ヘルスチェック数S * N <= 10KN + L * N <= 10K、L はトラフィックのローカル サービス数

例: バージョン 1.3.1 では、100 個のノードと 99 個のトラフィックのローカル サービスがあります。この場合、ヘルスチェックの数は 100 + 99 × 100 = 10,000 となります。これは上限 10,000 の範囲内です。

クラスタのロードバランサのアップグレード

クラスタをアップグレードすると、ロードバランサは自動的にアップグレードされます。ロードバランサをアップグレードするために別のコマンドを実行する必要はありません。

必要な場合は、完全にアップグレードせずに Seesaw VM の CPU やメモリを更新できます。まず、クラスタ構成ファイルの cpus 値と memoryMB 値を編集します。次に例を示します。

apiVersion: v1
bundlePath:
loadBalancer:
  kind: Seesaw
  seesaw:
    cpus: 3
    memoryMB: 3072

次に、管理クラスタのロードバランサを更新するために、以下の処理を行います。

gkectl upgrade loadbalancer --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --config ADMIN_CLUSTER_CONFIG --admin-cluster
ユーザー クラスタのロードバランサを更新します。
gkectl upgrade loadbalancer --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --config USER_CLUSTER_CONFIG

次のように置き換えます。

  • ADMIN_CLUSTER_KUBECONFIG: 管理クラスタの kubeconfig ファイルのパス

  • ADMIN_CLUSTER_CONFIG は、管理クラスタ構成ファイルのパス

  • USER_CLUSTER_CONFIG: ユーザー クラスタの構成ファイルのパス

Seesaw のログの表示

Seesaw がバンドルされたロードバランサでは、Seesaw VM のログファイルが /var/log/seesaw/ に保存されます。最も重要なログファイルは seesaw_engine.INFO です。

v1.6 以降で Stackdriver が有効になっている場合、ログも Cloud にアップロードされます。このようなリソースは anthos_l4lb リソースで確認できます。ログのアップロードを無効にするには、SSH で VM に接続し、次のコマンドを実行します。

sudo systemctl disable --now docker.fluent-bit.service

Seesaw VM に関する情報を表示する

クラスタの Seesaw VM に関する情報は、SeesawGroup のカスタム リソースから取得できます。

クラスタの SeesawGroup のカスタム リソースを表示します。

kubectl --kubeconfig CLUSTER_KUBECONFIG get seesawgroups -n kube-system -o yaml

CLUSTER_KUBECONFIG は、クラスタの kubeconfig ファイルのパスに置き換えます。

出力には、VM がトラフィックを処理できる状態かどうかを示す isReady フィールドがあります。出力には、Seesaw VM の名前と IP アドレス、およびどの VM がプライマリであるかも表示されます。

apiVersion: seesaw.gke.io/v1alpha1
kind: SeesawGroup
metadata:
  ...
  name: seesaw-for-cluster-1
  namespace: kube-system
  ...
spec: {}
status:
  machines:
  - hostname: cluster-1-seesaw-1
    ip: 172.16.20.18
    isReady: true
    lastCheckTime: "2020-02-25T00:47:37Z"
    role: Master
  - hostname: cluster-1-seesaw-2
    ip: 172.16.20.19
    isReady: true
    lastCheckTime: "2020-02-25T00:47:37Z"
    role: Backup

Seesaw 指標を表示する

Seesaw がバンドルされたロードバランサには次の指標があります。

  • サービスまたはノードあたりのスループット
  • サービスまたはノードあたりのパケットレート
  • サービスまたはノードあたりのアクティブな接続の数
  • CPU とメモリの使用状況
  • サービスあたりの正常なバックエンド Pod の数
  • プライマリ VM とバックアップ VM
  • 稼働率

v1.6 以降では、これらの指標が Stackdriver で Cloud にアップロードされます。これらのリソースは、anthos_l4lb のモニタリング リソースで確認できます。

Prometheus 形式がサポートされている限り、任意のモニタリング ソリューションとダッシュボード ソリューションを使用できます。

ロードバランサの削除

バンドルされた負荷分散を使用するクラスタを削除する場合は、そのクラスタの Seesaw VM を削除する必要があります。これを行うには、vSphere ユーザー インターフェースで Seesaw VM を削除します。

別の方法として、gkectl delete loadbalancer を実行することもできます。

管理クラスタの場合は、次のコマンドを実行します。

gkectl delete loadbalancer --config ADMIN_CLUSTER_CONFIG --seesaw-group-file GROUP_FILE

ユーザー クラスタの場合は、次のコマンドを実行します。

gkectl delete loadbalancer  --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG \
    --seesaw-group-file GROUP_FILE

次のように置き換えます。

  • ADMIN_CLUSTER_CONFIG: 管理クラスタの構成ファイルのパス

  • USER_CLUSTER_CONFIG: ユーザー クラスタの構成ファイルのパス

  • ADMIN_CLUSTER_KUBECONFIG: 管理クラスタの kubeconfig ファイルのパス

  • GROUP_FILE: Seesaw グループ ファイルのパス。グループ ファイルの名前の形式は
    seesaw-for-CLUSTER_NAME-IDENTIFIER.yamlです。
    例: seesaw-for-gke-admin-12345.yaml

トラブルシューティング

Seesaw VM への SSH 接続の確立

場合によっては、Seesaw VM に SSH 接続してトラブルシューティングやデバッグを行うこともあります。

SSH 認証鍵の取得

クラスタをすでに作成している場合は、次の手順で SSH 認証鍵を取得します。

  1. クラスタから seesaw-ssh Secret を取得します。Secret から SSH 認証鍵を取得し、base64 でデコードします。デコードした鍵を一時ファイルに保存します。

    kubectl --kubeconfig CLUSTER_KUBECONFIG get -n  kube-system secret seesaw-ssh -o \
    jsonpath='{@.data.seesaw_ssh}' | base64 -d | base64 -d > /tmp/seesaw-ssh-key
    

    CLUSTER_KUBECONFIG は、クラスタの kubeconfig ファイルのパスに置き換えます。

  2. 鍵のファイルに適切な権限を設定します。

    chmod 0600 /tmp/seesaw-ssh-key

クラスタをまだ作成していない場合は、次の手順で SSH 認証鍵を取得します。

  1. seesaw-for-CLUSTER_NAME-IDENTIFIER.yaml という名前のファイルを見つけます。

    このファイルはグループ ファイルと呼ばれ、config.yaml の横にあります。

    また、gkectl create loadbalancer でグループ ファイルの場所が表示されます。

  2. ファイルで credentials.ssh.privateKey の値を取得し、base64 でデコードします。デコードした鍵を一時ファイルに保存します。

    cat seesaw-for-CLUSTER_NAME-IDENTIFIER.yaml  | grep privatekey | sed 's/    privatekey: //g' \
    | base64 -d > /tmp/seesaw-ssh-key
    
  3. 鍵のファイルに適切な権限を設定します。

    chmod 0600 /tmp/seesaw-ssh-key
    

これで、Seesaw VM に SSH 接続できるようになりました。

ssh -i /tmp/seesaw-ssh-key ubuntu@SEESAW_IP

SEESAW_IP は、Seesaw VM の IP アドレスに置き換えます。

スナップショットを取得する

--scenario フラグと一緒に gkectl diagnose snapshot コマンドを使用すると、Seesaw VM のスナップショットがキャプチャできます。

--scenarioallall-with-logs に設定した場合、出力には Seesaw スナップショットと他のスナップショットが含まれます。

--scenarioseesaw に設定した場合、出力には Seesaw スナップショットのみが含まれます。

例:

gkectl diagnose snapshot --kubeconfig ADMIN_CLUSTER_KUBECONFIG --scenario seesaw

gkectl diagnose snapshot --kubeconfig ADMIN_CLUSTER_KUBECONFIG --cluster-name CLUSTER_NAME --scenario seesaw

gkectl diagnose snapshot --seesaw-group-file GROUP_FILE --scenario seesaw

次のように置き換えます。

  • ADMIN_CLUSTER_KUBECONFIG: 管理クラスタの kubeconfig ファイルのパス

  • GROUP_FILE: クラスタ用のグループ ファイルのパス。

既知の問題

Cisco ACI は Direct Server Return(DSR)と連動しない

Seesaw は DSR モードで動作します。デフォルトでは、データプレーン IP 学習が原因で Cisco ACI では機能しません。アプリケーション エンドポイント グループを使用した可能な回避策については、こちらをご覧ください。

Seesaw ロードバランサをアップグレードできない場合がある

DHCP モードや、IPAM モードでは、1.8.0 からクラスタをアップグレードすることおよび、gkectl upgrade loadbalancer を使用してバージョン 1.8.0 の Seesaw ロードバランサのパラメータを更新することはできません。今後のバージョンで修正が発表されるのを待ってアップグレードしてください。