コントロール プレーンの IP ローテーション

このページでは、Google Kubernetes Engine でコントロール プレーンの IP ローテーションを行う方法について説明します。

概要

IP ローテーションを行うことで、クラスタの Kubernetes マスターが Kubernetes API からのリクエストに対応するために使用する IP アドレスを変更できます。

IP ローテーションにより SSL 証明書とクラスタ認証局が変更されるため、以前のアドレスと新しいアドレスとの間に外部から認識できる接続はありません。

始める前に

このタスクの準備として、次の手順を行います。

  • Google Kubernetes Engine API が有効になっていることを確認します。
  • Enable Google Kubernetes Engine API を有効にする
  • Cloud SDK がインストール済みであることを確認します。
  • デフォルトのプロジェクト ID を設定します。
    gcloud config set project [PROJECT_ID]
  • ゾーンクラスタを使用する場合は、デフォルトのコンピューティング ゾーンを設定します。
    gcloud config set compute/zone [COMPUTE_ZONE]
  • リージョン クラスタを使用する場合は、デフォルトのコンピューティング リージョンを設定します。
    gcloud config set compute/region [COMPUTE_REGION]
  • gcloud を最新バージョンに更新します。
    gcloud components update

IP ローテーションの仕組み

IP ローテーションは、複数ステップのプロセスです。

  • IP ローテーションを開始すると、クラスタ マスターは元の IP アドレスに加えて新しい IP アドレスでもサービスを開始します。
  • ローテーションを開始した後は、クラスタの API クライアント(kubectl コマンドライン インターフェースを使用する開発マシンなど)を更新して、新しい IP アドレスでマスターとの通信を開始する必要があります。
  • ローテーションを完了すると、マスターは以前の IP アドレスでのトラフィックの処理を停止します。

IP ローテーションの実行

以降のセクションで、IP ローテーションを行う方法について説明します。

ローテーションを開始する

IP ローテーションを開始するには、次のコマンドを実行します。

gcloud container clusters update [CLUSTER_NAME] --start-ip-rotation

ここで、[CLUSTER_NAME] はクラスタの名前です。

上記のコマンドは、元のアドレスと新しいアドレスの 2 つの IP アドレスで機能するように、クラスタ マスターを構成します。これにより、クラスタ API で短時間のダウンタイムが発生します。

このコマンドは、次の出力を返します。


This will start an IP Rotation on cluster [CLUSTER-NAME].
The master will be updated to serve on a new IP address in addition to
the current IP address. GKE will then recreate all
nodes to point to the new IP address. This operation is
long-running and will block other operations on the cluster (including
delete) until it has run to completion.
Do you want to continue (Y/n)?

確認したら、オペレーションが完了するまでシェルを開いたままにします。

マスターが再構成されると、GKE は新しい IP アドレスを使用するようにクラスタのノードを自動的に更新します。各ノードプールは「要再作成」とマークされます。GKE は、自動再作成が完了するまで IP ローテーションを終了しません。

ローテーションを検査する

更新オペレーションをモニタリングするには、次のコマンドを実行します。

gcloud container operations list --filter="UPGRADE_NODES RUNNING"

このコマンドは、更新オペレーションのオペレーション ID を返します。

オペレーションをポーリングするには、オペレーション ID を次のコマンドに渡します。

gcloud container operations wait [OPERATION_ID]

ノードプールは 1 つずつ再作成され、それぞれに固有のオペレーションがあります。複数のノードプールがある場合は、上記の手順を使用して各オペレーションをポーリングできます。

API クライアントを更新する

IP ローテーションの開始後、新しいアドレスを参照するように、クラスタの外部にあるすべての API クライアント(デベロッパー マシンの kubectl など)を更新する必要があります。

API クライアントを更新するには、クライアントごとに次のコマンドを実行します。

gcloud container clusters get-credentials [CLUSTER_NAME]

ローテーションを完了する

ローテーションを完了するには、次のコマンドを実行します。

gcloud container clusters update [CLUSTER_NAME] --complete-ip-rotation

このコマンドは、次の出力を返します。

This will complete the in-progress IP Rotation on cluster [CLUSTER_NAME].
The master will be updated to stop serving on the old IP address and only
serve on the new IP address. Make sure all API clients have been updated
to communicate with the new IP address (e.g. by running `gcloud container
clusters get-credentials --project [PROJECT-ID] --zone [COMPUTE-ZONE]
[CLUSTER-NAME]`). This operation is long-running and will
block other operations on the cluster (including delete) until it has
run to completion.

上記のコマンドは、新しい IP アドレスのみでサービスを提供するようにクラスタ マスターを構成します。これにより、クラスタ API で短時間のダウンタイムが発生します。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Kubernetes Engine のドキュメント