ハイブリッド クラスタを作成する

Google Distributed Cloud では、ハイブリッド クラスタは管理クラスタとユーザー クラスタの 2 つの役割を担いますす。ハイブリッド クラスタはワークロードの実行と同時に、他のクラスタとクラスタ自身の管理を行います。

ハイブリッド クラスタでは、リソース制限のあるシナリオで個別の管理クラスタを実行する必要がなくなり、高可用性(HA)の信頼性が得られます。HA ハイブリッド クラスタでは、1 つのノードに障害が発生した場合、他のノードが障害の発生したノードの代わりをします。

ハイブリッド クラスタは、他のクラスタも管理できる点で、スタンドアロン クラスタとは異なります。スタンドアロン クラスタでは、他のクラスタを作成または管理できません。

ただし、ハイブリッド クラスタを作成する場合、柔軟性とセキュリティとの間にはトレードオフの関係があります。ハイブリッド クラスタはクラスタ自身を管理するため、同じクラスタ上でのワークロードの実行は、SSH 認証鍵などの機密性の高い管理データが公開されるセキュリティ リスクが高まります。

bmctl コマンドを使用して、高可用性(HA)コントロール プレーンを含むハイブリッド クラスタを作成します。bmctl コマンドは、別のワークステーションまたはハイブリッド クラスタノードのいずれかでの実行が可能です。

前提条件

  • 最新の bmctl が Cloud Storage からダウンロードされている(gs://anthos-baremetal-release/bmctl/1.29.100-gke.251/linux-amd64/bmctl)。
  • bmctl を実行するワークステーションが、ターゲットのハイブリッド クラスタ内のすべてのノードとネットワークで接続されている。
  • bmctl を実行するワークステーションが、ターゲット ハイブリッド クラスタのコントロール プレーンの VIP とネットワークで接続されている。
  • ハイブリッド クラスタの作成に使用される SSH 認証鍵が root で使用できる。または、ターゲット ハイブリッド クラスタ内のすべてのノードに対して SUDO のユーザー アクセス権がある。
  • Connect-register サービス アカウントは、Connect で使用できるように構成されています。

ハイブリッド クラスタを作成する手順ガイドについては、Google Distributed Cloud のクイックスタートをご覧ください。

SELinux を有効にする

コンテナを保護するために SELinux を有効にする場合は、すべてのホストマシンで SELinux を Enforced モードで有効にする必要があります。リリース 1.9.0 以降の Google Distributed Cloud では、クラスタの作成やクラスタのアップグレードの前または後に SELinux を有効または無効にできます。Red Hat Enterprise Linux(RHEL)では、SELinux がデフォルトで有効になっています。ホストマシンで SELinux が無効になっている場合や、不明な場合は、SELinux を使用したコンテナの保護をご覧ください。

Google Distributed Cloud は、RHEL システムの SELinux のみをサポートしています。

gcloud にログインしてクラスタ構成ファイルを作成する

  1. gcloud auth application-default login を使用して、ユーザーとして gcloud CLI にログインします。

    gcloud auth application-default login
    

    次のセクションで説明するように、自動 API 有効化とサービス アカウント作成機能を使用するには、プロジェクト オーナーまたは編集者のロールが必要です。

    次の IAM ロールをユーザーに追加することもできます。

    • サービス アカウント管理者
    • サービス アカウント キー管理者
    • プロジェクト IAM 管理者
    • Compute 閲覧者
    • Service Usage 管理者

    あるいは、これらのロールを持つサービス アカウントがすでにある場合は、次のコマンドを実行します。

    export GOOGLE_APPLICATION_CREDENTIALS=JSON_KEY_FILE
    

    JSON_KEY_FILE は、サービス アカウント JSON キーファイルのパスで置き換えます。

  2. クラスタ作成に使用する Google Cloud プロジェクト ID を取得します。

    export CLOUD_PROJECT_ID=$(gcloud config get-value project)
    

bmctl を使用してクラスタ構成ファイルを作成する

gcloud CLI にログインしてプロジェクトを設定すると、bmctl コマンドを使用してクラスタ構成ファイルを作成できます。

クラスタ構成ファイルを作成するには:

  1. 次のコマンドを実行して、クラスタ構成ファイルを作成し、必要なサービス アカウントをすべて作成し、必要なすべての API を有効にします。

    bmctl create config -c CLUSTER_NAME</var> --enable-apis \
        --create-service-accounts --project-id=CLOUD_PROJECT_ID
    

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

    • CLUSTER_NAME: 作成するクラスタの名前。
    • CLOUD_PROJECT_ID: Google Cloud プロジェクトの ID。

    デフォルトでは、構成ファイルは bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME.yaml に書き込まれます。

    API をすでに有効にしており、サービス アカウントを作成している場合は、API を有効にしサービス アカウントを作成しなくても構成ファイルを作成できます。また、--project-id フラグを使用する必要もありません。ただし、構成ファイルで認証情報を手動で指定する必要があります。

    コマンド オプションの詳細については、構成の作成をご覧ください。

クラスタ構成ファイルの編集

クラスタ構成ファイルが完成したら、次のように修正します。

  1. ハイブリッド クラスタノードにアクセスするための SSH 秘密鍵を指定します。

    # bmctl configuration variables. Because this section is valid YAML but not a valid Kubernetes
    # resource, this section can only be included when using bmctl to
    # create the initial admin/hybrid cluster. Afterwards, when creating user clusters by directly
    # applying the cluster and node pool resources to the existing cluster, you must remove this
    # section.
    gcrKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-gcr.json
    sshPrivateKeyPath: /path/to/your/ssh_private_key
    gkeConnectAgentServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-connect.json
    gkeConnectRegisterServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-register.json
    cloudOperationsServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-cloud-ops.json
    
  2. フリートにクラスタを登録します。bmctl create config コマンドで指定したプロジェクト ID が、クラスタ構成ファイルの gkeConnect.projectID フィールドに自動的に追加されます。このプロジェクトはフリート ホスト プロジェクトと呼ばれます。

    • 構成ファイルを作成し、自動 API 有効化とサービス アカウント作成機能を使用している場合は、この手順を省略できます。
    • API の自動有効化機能とサービス アカウント作成機能を使用せずに構成ファイルを作成した場合は、ダウンロードしたサービス アカウント JSON キーを、クラスタ構成ファイルの対応する gkeConnectAgentServiceAccountKeyPath および gkeConnectRegisterServiceAccountKeyPath フィールドで参照します。
  3. 構成を変更して、クラスタタイプを admin ではなく hybrid を指定します。

    spec:
      # Cluster type. This can be:
      #   1) admin:  to create an admin cluster. This can later be used to create user clusters.
      #   2) user:   to create a user cluster. Requires an existing admin cluster.
      #   3) hybrid: to create a hybrid cluster that runs admin cluster components and user workloads.
      #   4) standalone: to create a cluster that manages itself, runs user workloads, but does not manage other clusters.
      type: hybrid
    
  4. マルチノード、高可用性、コントロール プレーンを指定するように構成を変更します。 HA 用に過半数のクォーラムが確保できるように、ノード数を奇数で指定します。

      # Control plane configuration
      controlPlane:
        nodePoolSpec:
          nodes:
          # Control plane node pools. Typically, this is either a single machine
          # or 3 machines if using a high availability deployment.
          - address: 10.200.0.4
          - address: 10.200.0.5
          - address: 10.200.0.6
    
  5. クラスタノードの Pod 密度を指定します

    ....
    # NodeConfig specifies the configuration that applies to all nodes in the cluster.
    nodeConfig:
      # podDensity specifies the pod density configuration.
      podDensity:
        # maxPodsPerNode specifies at most how many pods can be run on a single node.
        maxPodsPerNode: 250
    ....
    

    ハイブリッド クラスタの場合、maxPodsPerNode の値は、HA クラスタ用には 32-250、HA 以外のクラスタ用には 64-250 です。指定しない場合、maxPodsPerNode のデフォルト値は 110 です。クラスタの作成後、この値を更新することはできません。

    Pod 密度も、クラスタで使用可能な IP リソースによって制限されます。詳しくは、Pod ネットワークをご覧ください。

クラスタ構成ファイルでハイブリッド クラスタを作成する

bmctl コマンドを使用して、クラスタを作成します。

bmctl create cluster -c CLUSTER_NAME

CLUSTER_NAME は、前のセクションのクラスタ構成ファイルの作成時に使用した名前に置き換えます。

hybrid1 という名前のクラスタを作成するコマンドの例を次に示します。

bmctl create cluster -c hybrid1

ハイブリッド クラスタ構成の例

ハイブリッド クラスタの構成例については、クラスタ構成サンプルのハイブリッド クラスタをご覧ください。