クラスタ構成フィールドのリファレンス

このページでは、ベアメタル版 Google Distributed Cloud(ソフトウェアのみ)のクラスタ構成ファイルでサポートされるフィールドについて説明します。次の表では、フィールドごとにそれが必須かどうかを示します。また、変更可能なフィールド、つまりクラスタの作成後に変更できるフィールドかどうかも示します。表に示すとおり、一部の変更可能なフィールドは、クラスタのアップグレード中にのみ変更できます。

クラスタ構成ファイルのテンプレートの生成

クラスタ構成ファイルは bmctl create config コマンドで作成できます。一部のフィールドにはデフォルト値や、metadata.name のように自動入力されるものがありますが、この YAML 形式の構成ファイルは、クラスタに関する情報を指定するためのテンプレートです。

新しいクラスタ構成ファイルを作成するには、/baremetal フォルダで次のコマンドを使用します。

bmctl create config -c CLUSTER_NAME

CLUSTER_NAME は、作成するクラスタの名前に置き換えます。bmctl の詳細については、bmctl ツールをご覧ください。生成されるクラスタ構成ファイルの例については、クラスタ構成ファイルのサンプルをご覧ください。

構成ファイルの入力

クラスタを作成またはアップグレードする前に、以下のフィールド リファレンスの表で説明するように構成ファイルにフィールド値を入力します。

クラスタ構成フィールド

  • 構成タイプを選択
  • クラスタ リソース
  • 名前空間リソース
  • NodePool リソース
  • 認証情報
  • レジストリ ミラー
  • ClusterCIDRConfig リソース

フィールド名 リソースの種類 必須かどうか 変更可能かどうか

必須。文字列。クラスタのバージョン。この値は、クラスタの作成とクラスタのアップグレードで設定します。

変更稼働かどうか: 既存クラスタの場合、この値は変更できません。バージョンは、クラスタのアップグレード プロセスでのみ更新できます。

クラスタ リソース 必須 変更可

このセクションでは、OpenID Connect(OIDC)の使用に必要な設定について説明します。 OIDC では、既存の ID プロバイダを使用して、クラスタ内のユーザーとグループの認証を管理できます。

クラスタ リソース

省略可。base64 でエンコードされた OIDC プロバイダの PEM エンコード証明書。文字列を作成するには、ヘッダーを含めた証明書を base64 でエンコードします。結果の文字列は certificateAuthorityData に 1 行で含めます。

例(サンプルは表に合わせて折り返されています):

certificateAuthorityData:
        LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC
        ...k1JSUN2RENDQWFT==
クラスタ リソース 省略可 変更不可

省略可。文字列。OpenID プロバイダへの認証リクエストを行うクライアント アプリケーションの ID。

クラスタ リソース 省略可 変更不可

省略可。文字列。OIDC クライアント アプリケーションと OIDC プロバイダ間の共有シークレット。

クラスタ リソース 省略可 変更不可

省略可。ブール値(true | false)。インターネット経由でアクセスできないオンプレミスの ID プロバイダに Google Cloud コンソールを接続するために、クラスタにリバース プロキシをデプロイするかどうかを指定します。ID プロバイダに公共のインターネット経由でアクセスできない場合は、このフィールドを true に設定して Google Cloud コンソールで認証します。デフォルトでは false に設定されます。

クラスタ リソース 省略可 変更不可

省略可。カンマ区切りのリスト。OpenID プロバイダに送信する追加の Key-Value パラメータ。

クラスタ リソース 省略可 変更不可

省略可。文字列。プロバイダがセキュリティ グループを返すために使用する JWT クレーム。

クラスタ リソース 省略可 変更不可

省略可。文字列。既存の名前と競合しないように、グループ クレームの先頭に付加される接頭辞。たとえば、グループ dev と接頭辞 oidc: が指定されている場合、oidc:dev となります。

クラスタ リソース 省略可 変更不可

省略可。URL 文字列。認可リクエストが OpenID に送信される URL(https://example.com/adfs など)。Kubernetes API サーバーは、この URL を使用してトークン検証用の公開鍵を検出します。URL は HTTPS を使用する必要があります。

クラスタ リソース 省略可 変更不可

省略可。URL 文字列。kubectl が認証に使用するリダイレクト URL。OIDC を有効にする場合は、kubectlRedirectURL 値を指定する必要があります。

クラスタ リソース 省略可 変更不可

省略可。URL 文字列。クラスタが OIDC プロバイダに接続するために使用するプロキシ サーバー(該当する場合)。この値には、ホスト名 / IP アドレスと、必要に応じてポート、ユーザー名、パスワードを含める必要があります。例: http://user:password@10.10.10.10:8888

クラスタ リソース 省略可 変更不可

省略可。カンマ区切りのリスト。OpenID プロバイダに送信する追加のスコープ。Microsoft Azure と Okta には offline_access スコープが必要です。

クラスタ リソース 省略可 変更不可

省略可。文字列。ユーザー名として使用する JWT クレーム。指定しない場合、デフォルトで sub になります。

クラスタ リソース 省略可 変更不可

省略可。文字列。ユーザー名のクレームの先頭に付加される接頭辞。

クラスタ リソース 省略可 変更不可

省略可。ブール値(true | false)。true に設定すると、既存のクラスタにリソースを適用するときに内部プリフライト チェックが無視されます。デフォルトは false です。

変更可能かどうか: 既存クラスタの場合、この値は bmctl update コマンドで変更できます。

クラスタ リソース 省略可 変更可

文字列。オペレーション サービス アカウント キーのパス。Google Distributed Cloud は、オペレーション サービス アカウントを使用して、Google Cloud Observability で認証を行い、Logging API と Monitoring API にアクセスします。ユーザー クラスタを除き、オペレーション サービス アカウント キーが必要です。ユーザー クラスタは、管理クラスタ(管理クラスタまたはハイブリッド)に指定された認証情報を使用します。

クラスタで Cloud Logging と Cloud Monitoring を無効にすることはできません。

このサービス アカウントを構成する手順については、サービス アカウントを構成するをご覧ください。

認証情報 必須 変更可

文字列。必須。ノードプールを追加するクラスタの名前。関連付けられたクラスタと同じ Namespace にノードプール リソースを作成し、このフィールドでクラスタ名を参照します。詳細については、クラスタ内のノードプールの追加と削除をご覧ください。

次のような例になります。

apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
  name: node-pool-new
  namespace: cluster-my-cluster
spec:
  clusterName: my-cluster
  nodes:
  - address:  10.200.0.10
  - address:  10.200.0.11
  - address:  10.200.0.12
NodePool リソース 必須 変更不可

このセクションには、クラスタのネットワーク設定が含まれます。

クラスタ リソース 必須 変更可

ブール値。高度なネットワーク機能(BGP とバンドルされたロード バランシングや下り(外向き)NAT ゲートウェイなど)を有効にするには、このフィールドを true に設定します。どちらの機能も Network Gateway for GDC を使用します。Network Gateway for GDC は、GKE Enterprise と Google Kubernetes Engine(GKE)で高度なネットワーク機能を実現するための重要な要素です。Network Gateway for GDC の主なメリットの一つは、NetworkGatewayGroup カスタム リソースで指定した一連のアドレスから、フローティング IP アドレスを動的に割り振ることができる点です。

Network Gateway for GDC と、それに関連する高度なネットワーク機能の詳細については、下り(外向き)NAT ゲートウェイを構成するBGP を使用してバンドルされたロードバランサを構成するをご覧ください。

クラスタ リソース 省略可 変更不可

ブール値。Google Distributed Cloud ソフトウェアにバンドルされている Ingress 機能を無効にするには、このフィールドを false に設定します。クラスタにバンドルされている Ingress 機能は、上り(内向き)のみをサポートします。完全に機能するサービス メッシュを活用するために Istio または Cloud Service Mesh と統合する場合は、バンドルされた Ingress を無効にすることをおすすめします。このフィールドはデフォルトで true に設定されています。このフィールドは、生成されたクラスタ構成ファイルに存在しません。バージョン 1.13.0 以降のクラスタに対してのみ、バンドルされた Ingress を無効にできます。

バンドルされた Ingress 機能の詳細については、サービスと Ingress の作成をご覧ください。

クラスタ リソース 省略可 変更可

ブール値。フラットモードのクラスタ ネットワーク モデルを有効にするには、このフィールドを true に設定します。フラットモードでは、各 Pod に一意の IP アドレスがあります。Pod は、中間ゲートウェイやネットワーク アドレス変換(NAT)なしで互いに直接通信できます。flatIPv4 のデフォルトは、false です。フラットモードは、クラスタの作成時にのみ有効にできます。クラスタで有効にしたフラットモードを無効にすることはできません。

クラスタ リソース 省略可 変更不可

省略可。文字列。Dataplane V2 ロード バランシングのネットワーク モードを指定します。デフォルトのネットワーキング モードは、送信元ネットワーク アドレス変換(SNAT)です。Direct Server Return(DSR)モードは、SNAT ロード バランシングの問題を解決します。DSR モード(forwardMode: dsr)では、ロードバランサ ノードが IP オプションを使用してクライアントの送信元アドレスを保存します。Dataplane V2 ロード バランシングのネットワーク モードは、クラスタ作成時にのみ構成できます。

使用できる値: dsr | snat

詳細については、ロード バランシング ネットワーク モードを構成するをご覧ください。

クラスタ リソース 省略可 変更不可

省略可。ブール値。Pod の複数のネットワーク インターフェースを有効にするには、このフィールドを true に設定します。

複数のネットワーク インターフェースの設定と使用方法の詳細については、Pod の複数のネットワーク インターフェースを構成するをご覧ください。

クラスタ リソース 省略可 変更不可

必須。IPv4 アドレスの範囲(CIDR ブロック形式)。pods には、Pod ネットワークが割り振られる IP 範囲を指定します。

  • 最小 Pod CIDR 範囲: 14 ビットのサイズ(16,384 件の IP アドレス)に対応する /18 のマスク値。
  • 最大 Pod CIDR 範囲: 24 ビットのサイズ(16,777,216 件の IP アドレス)に対応する /8 のマスク値。

次のような例になります。

pods:
  cidrBlocks:
  - 192.168.0.0/16
クラスタ リソース 必須 変更不可

必須。IPv4 アドレスの範囲(CIDR ブロック形式)。Service の仮想 IP(VIP)アドレスが割り振られる IP アドレスの範囲を指定します。この範囲は、ネットワークから到達可能なサブネットと重複してはなりません。プライベート インターネットのアドレスの割り振りについては、RFC 1918 をご覧ください。

ベアメタル用の Google Distributed Cloud ソフトウェア リリース 1.15.0 以降では、このフィールドは変更可能です。必要に応じて、クラスタの作成後にサービスに割り振る IP アドレスの数を増やすことができます。詳細については、Service のネットワーク範囲を拡張するをご覧ください。拡張できるのは、IPv4 サービスの CIDR 範囲のみです。ネットワークの範囲は縮小できません。つまり、マスク(/ 後の値)を増やすことはできません。

  • 最小 Service CIDR 範囲: 8 ビットのサイズ(256 件のアドレス)に対応する /24 のマスク値。
  • 最大 Service CIDR 範囲: 20 ビットのサイズ(1,048,576 件の IP アドレス)に対応する /12 のマスク値。

次のような例になります。

services:
  cidrBlocks:
  - 10.96.0.0/12
クラスタ リソース 必須 変更可

省略可。ブール値。クラスタで SR-IOV ネットワークを有効にするには、このフィールドを true に設定します。

SR-IOV ネットワークの構成と使用方法については、SR-IOV ネットワークを設定するをご覧ください。

クラスタ リソース 省略可 変更可

このセクションでは、Cloud Logging と Cloud Monitoring の情報について説明します。

クラスタ リソース 必須 変更可

ブール値。Cloud Audit Logs は、不審な API リクエストの調査や統計情報の収集を行う際に有効です。Cloud Audit Logs は、デフォルトで有効(disableCloudAuditLogging: false)になっています。Cloud Audit Logs を無効にするには、true に設定します。

詳細については、監査ロギングの使用をご覧ください。

クラスタ リソース 省略可 変更可

このフィールドは使用されなくなっており、効果はありません。Stackdriver のカスタム リソースでは、アプリケーションのロギングとモニタリングが有効になっています。アプリケーションのロギングとモニタリングを有効にする方法については、アプリケーションのロギングとモニタリングを有効にするをご覧ください。

クラスタ リソース NoOps 変更可

文字列。Monitoring の指標を転送して保存するリージョン。 Google Cloud オンプレミス データセンターの近くのリージョンを選択することをおすすめします。クラスタの作成時に、この値は stackdriver リソース仕様の clusterLocation 値の設定に使用されます。

指定した値は、Stackdriver によって指標とログのラベル付けにも使用されます。これらのラベルは、Metrics Explorer と Logs Explorer でのフィルタリングに使用できます。

ロケーションの詳細については、グローバル ロケーションをご覧ください。 Google Cloud ログと指標の転送の詳細については、ログと指標の転送をご覧ください。

次のような例になります。

location: us-central1
クラスタ リソース 必須 変更不可

文字列。ログと指標を表示する Google Cloud プロジェクトのプロジェクト ID。クラスタの作成時に、この値は stackdriver リソース仕様の projectID 値の設定に使用されます。

クラスタ リソース 必須 変更不可

このセクションでは、クラスタのセキュリティ関連の設定を指定します。

クラスタ リソース 省略可 変更可

省略可。認可により、クラスタへのユーザー アクセスが構成されます。

クラスタ リソース 省略可 変更可

省略可。このクラスタのクラスタ管理者を指定します。

クラスタ リソース 省略可 変更可

省略可。gcpAccounts フィールドには、Kubernetes ロールベース アクセス制御(RBAC)のロール clusterrole/cluster-admin が付与されたアカウントのリストを指定します。このロールがあるアカウントには、すべての Namespace のクラスタ内のすべてのリソースに対する完全アクセス権があります。このフィールドでは、指定したアカウントで Connect Gateway を使用してクラスタに kubectl コマンドを実行できるようにする RBAC ポリシーも構成します。これは、特に GKE とオンプレミス クラスタの両方があるハイブリッド環境で複数のクラスタを管理する場合に便利です。

これらの RBAC ポリシーを使用すると、コンソールへのアクセスに必要な Identity and Access Management のロールがあれば、Google ID を使用して Google Cloud コンソールにログインすることもできます。

このフィールドには、アカウント名の配列を指定します。ユーザー アカウントとサービス アカウントがサポートされています。ユーザーの場合は、 Google Cloud アカウントのメールアドレスを指定します。サービス アカウントの場合は、SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com の形式でメールアドレスを指定します。次のような例になります。

...
clusterSecurity:
  authorization:
    clusterAdmin:
      gcpAccounts:
      - alex@example.com
      - hao@example.com
      - my-sa@example-project-123.iam.gserviceaccount.com
...

クラスタを更新してアカウントを追加する場合は、必ずすべてのアカウント(既存および新規アカウント)をリストに含めてください。これは、update コマンドが、更新に指定した内容でリストを上書きするためです。

このフィールドは、ワークロードを実行できるクラスタにのみ適用されます。たとえば、管理クラスタに gcpAccounts を指定することはできません。

クラスタ リソース 省略可 変更可

省略可。ブール値(true|false)。ルートレス ベアメタル システム コンテナを有効または無効にします。このフィールドが有効になっている場合、ベアメタル システム コンテナは、2000~5000 の範囲のユーザー ID を持つ root 以外のユーザーとして実行されます。無効にすると、root ユーザーとしてベアメタル システム コンテナが実行されます。この機能はデフォルトで有効になっています。root ユーザーとしてコンテナを実行すると、セキュリティ リスクが生じるため、この機能をオフにしないことを強くおすすめします。クラスタ作成後、このフィールドはアップグレード中にのみ切り替えることができます。詳細については、コンテナを root ユーザーとして実行しないをご覧ください。

クラスタ リソース 省略可 変更可(アップグレードのみ)
プレビュー

省略可。ブール値(true|false)。クラスタ全体の seccomp を有効または無効にします。このフィールドを無効にすると、クラスタ構成ファイルに seccomp プロファイルのないコンテナが未制限で実行されます。このフィールドを有効にすると、同じコンテナがコンテナ ランタイムのデフォルトの seccomp プロファイルを使用して保護されます。この機能はデフォルトで有効になっています。クラスタ作成後、このフィールドはアップグレード中にのみ切り替えることができます。詳細については、seccomp を使用してコンテナを制限するをご覧ください。

クラスタ リソース 省略可 変更可(アップグレードのみ)

省略可。整数。デフォルト値: 2000。Google Distributed Cloud ソフトウェアのシステム コンテナは、クラスタのインストールと管理に役立ちます。これらのコンテナで使用されるユーザー ID(UID)とグループ ID(GID)は、クラスタ仕様の startUIDRangeRootlessContainers フィールドで制御できます。システム コンテナは、startUIDRangeRootlessContainersstartUIDRangeRootlessContainers + 2999 の範囲(デフォルトでは 20004999 の範囲)の UID と GID を使用します。これは、を指定します。startUIDRangeRootlessContainers を更新するときは、システム コンテナで使用される UID と GID のスペースが、ユーザー ワークロードに割り当てられた UID と GID のスペースと重複しないように値を選択します。startUIDRangeRootlessContainers 値はアップグレード時にのみ変更できます。

使用できる値: 100057000

例:

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: name-of-cluster
spec:
 clusterSecurity:
    startUIDRangeRootlessContainers: 5000
...

詳細については、コンテナを root ユーザーとして実行しないをご覧ください。

クラスタ リソース 省略可 変更可(アップグレードのみ)

このセクションには、コントロール プレーンとそのコンポーネントに関する情報が含まれます。

クラスタ リソース 必須 変更可

省略可。文字列の配列(ドメイン名と IP アドレス)。サブジェクト代替名(SAN)は SSL 証明書の機能で、証明書を有効にするドメイン名とサブドメインを定義できます。Bare Metal クラスタでは、API サーバー証明書の SAN にデフォルトでコントロール プレーン ノードの IP アドレスと VIP アドレス、Kubernetes DNS 名が含まれています。このフィールドを使用して、クラスタの API サーバー証明書に SAN を追加します。ドメイン名は RFC 1035 に準拠している必要があります。詳細については、API サーバー証明書にドメインを追加するをご覧ください。

次のような例になります。

...
controlPlane:
  apiServerCertExtraSANs:
  - "demo-dns.example.com"
  - "sample-dns.com"
  nodePoolSpec:
  ...
        

このフィールドはいつでも追加または変更できます。

クラスタ リソース 省略可 変更可

このセクションでは、コントロール プレーンとそのコンポーネントで使用されるノードプールの IP アドレスを指定します。コントロール プレーンのノードプールの仕様(ロードバランサ ノードプールの仕様など)は特別なものです。この仕様では、重要なクラスタ リソースを宣言し、制御します。このリソースの正規のソースは、クラスタ構成ファイル内のこのセクションです。最上位のコントロール プレーン ノードプール リソースは直接変更しないでください。代わりに、クラスタ構成ファイル内の関連するセクションを変更してください。

クラスタ リソース 必須 変更可

省略可。このセクションには、コントロール プレーン ノードプール内のすべてのノードで kubelet を構成するためのフィールドが含まれています。

次のような例になります。

controlPlane:
  nodePoolSpec:
    kubeletConfig:
      registryBurst: 15
      registryPullQPS: 10
      serializeImagePulls: false
クラスタ リソース 省略可 変更可

省略可。整数(負ではない)。リクエストの急増に対応するために、処理キューに追加できるイメージの pull リクエストの最大数を指定します。pull が開始すると、新しいリクエストをキューに追加できます。デフォルト値は 10 です。このフィールドは、registryBurst kubelet 構成(v1beta1)オプションに対応しています。

registryPullQPS の値は、この設定よりも優先されます。たとえば、デフォルトの設定では、最大 10 件の同時クエリのバーストが許可されていますが、デフォルトのレート(秒間クエリ数 5 件)で処理する必要があります。このバースト動作は、registryPullQPS0 より大きい場合にのみ使用されます。

このフィールドは、クラスタを作成、更新、アップグレードするたびに設定できます。設定はクラスタのアップグレード後も保持されます。詳細については、kubelet イメージの pull 設定を構成するをご覧ください。

クラスタ リソース 省略可 変更可

省略可。整数(負ではない)。Container Registry イメージの pull に対するクエリの処理速度を秒間クエリ数(QPS)で指定します。registryPullQPS が 0 より大きい値に設定されている場合、クエリレートは秒間クエリ数の数値に制限されます。registryPullQPS0 に設定されている場合、クエリレートに制限はありません。デフォルト値は 5 です。

このフィールドは、registryPullQPS kubelet 構成(v1beta1)オプションに対応しています。

このフィールドは、クラスタを作成、更新、アップグレードするたびに設定できます。設定はクラスタのアップグレード後も保持されます。詳細については、kubelet イメージの pull 設定を構成するをご覧ください。

クラスタ リソース 省略可 変更可

省略可。ブール値(true | false)。このフィールドは、Container Registry の pull が並列処理されるか、一度に 1 つずつ処理されるかを指定します。デフォルトは true で、pull を 1 つずつ処理するように指定します。false に設定すると、kubelet はイメージを並列で pull します。このフィールドは、serializeImagePulls kubelet 構成(v1beta1)オプションに対応しています。

このフィールドは、クラスタを作成、更新、アップグレードするたびに設定できます。設定はクラスタのアップグレード後も保持されます。詳細については、kubelet イメージの pull 設定を構成するをご覧ください。

クラスタ リソース 省略可 変更可

必須。IP アドレスの配列。通常、この配列は 1 台のマシンの IP アドレスか、高可用性(HA)デプロイ用の 3 台のマシンの IP アドレスです。

次のような例になります。

controlPlane:
  nodePoolSpec:
    nodes:
    - address: 192.168.1.212
    - address: 192.168.1.213
    - address: 192.168.1.214
        

このフィールドは、クラスタを更新またはアップグレードするたびに変更できます。

クラスタ リソース 必須 変更可

必須。文字列(IPv4 アドレス)。ノードプールを指定する場合は、address フィールドを使用して、各ノードの SSH アクセスのデフォルトの IPv4 アドレスを指定します。SSH アクセスは、インストールやアップグレードなどのクラスタ管理オペレーションに必要です。デフォルトでは、この IP アドレスはデータと Kubernetes トラフィックに使用されます。ただし、特定のノードに k8sIP アドレスを指定すると、トラフィックはノードの 2 つのアドレス間で分割され、k8sIP アドレスはデータと Kubernetes トラフィックにのみ使用されます。

次に例を示します。

controlPlane:
  nodePoolSpec:
    nodes:
    - address: 192.168.1.212
    - address: 192.168.1.213
    - address: 192.168.1.214
        

このフィールドは、クラスタを更新またはアップグレードするたびに変更できます。

クラスタ リソース 必須 変更可

省略可。文字列(IPv4 アドレス)。ノードのオプションの k8sIP アドレスを指定すると、Kubernetes API、kubelet、ワークロードのリクエストやレスポンスなど、ノードのデータと Kubernetes トラフィックの処理専用になります。k8sIP を指定すると、ノードへの SSH 接続にのみ標準ノードの IP アドレス nodePoolSpec.nodes.address が使用されます。k8sIP アドレスを指定しない場合、標準ノードの IP アドレスがノードのすべてのトラフィックを処理します。

次に例を示します。

controlPlane:
  nodePoolSpec:
    nodes:
    - address: 192.168.2.212
      k8sIP: 192.168.1.212
    - address: 192.168.1.213
    - address: 192.168.1.214
        

このフィールドは、クラスタの作成後に変更することはできません。

Cluster リソース 省略可 変更不可

文字列。Container Registry リソースにアクセスするために必要な IAM 権限を持つサービス アカウント キーのパス。

認証情報 省略可 変更可

このセクションでは、クラスタを Google Cloudに接続するために使用する Google Cloud プロジェクトに関する情報について説明します。

クラスタ リソース 必須 変更不可

省略可。文字列。デフォルト値: global。クラスタのフリート メンバーシップは、Fleet サービス(gkehub.googleapis.com)と Connect サービス(gkeconnect.googleapis.com)で管理されます。フリート メンバーシップはグローバルまたはリージョンにできます。必要に応じて、gkeConnect.location を使用して、Fleet サービスと Connect サービスが実行されるリージョンを指定して、トラフィックが自分のリージョンに制限されるようにできます。 Google Cloud

サポートされているリージョンの一覧については、GKE On-Prem API でサポートされているリージョンをご覧ください。指定しない場合は、サービスのグローバル インスタンスが使用されます。

次の点にご注意ください。

  • バージョン 1.28 より前のバージョンで作成されたクラスタは、グローバル フリートとコネクト サービスによって管理されます。
  • GKE On-Prem API クライアント(Google Cloud コンソール、Google Cloud CLI、Terraform)を使用して作成された新しいクラスタは、GKE On-Prem API に指定したリージョンと同じリージョンを使用します。
  • 新しいクラスタの場合、このフィールドを指定する場合、指定するリージョンは gkeOnPremAPI.location に構成されたリージョンと同じでなければなりません。リージョンが同じでない場合、クラスタの作成は失敗します。

次のような例になります。

spec:
  ...
  gkeConnect:
    projectID: "my-connect-project-123"
    location: "us-central1"

既存のクラスタでは、この値は変更できません。

クラスタ リソース 省略可 変更不可

必須: 文字列。クラスタを Google Cloudに接続するために使用する Google Cloud プロジェクトの ID。これは、フリートホスト プロジェクトとも呼ばれます。

次のような例になります。

spec:
  ...
  gkeConnect:
    projectID: "my-connect-project-123"

既存のクラスタでは、この値は変更できません。

クラスタ リソース 必須 変更不可

文字列。エージェントのサービス アカウント キーへのパス。 Google Distributed Cloud は、このサービス アカウントを使用して、オンプレミス クラスタと Google Cloud間の接続を維持します。

このサービス アカウントを構成する手順については、Connect で使用するサービス アカウントの構成をご覧ください。

認証情報 省略可 変更可

文字列。登録サービス アカウント キーのパス。 Google Distributed Cloud は、このサービス アカウントを使用してユーザー クラスタを Google Cloudに登録します。

このサービス アカウントを構成する手順については、Connect で使用するサービス アカウントの構成をご覧ください。

認証情報 省略可 変更可

1.16 以降では、Google Cloud プロジェクトで GKE On-Prem API が有効になっている場合、プロジェクト内のすべてのクラスタが、clusterOperations.location で構成されたリージョンの GKE On-Prem API に登録(自動的に)されます。

  • GKE On-Prem API のプロジェクトにすべてのクラスタを登録する場合は、始める前にの手順に沿って、プロジェクト内の GKE On-Prem API を有効にしてから使用します。
  • GKE On-Prem API にクラスタを登録しない場合は、このセクションを追加して、gkeOnPremAPI.enabledfalse に設定します。プロジェクトにクラスタを登録しない場合は、プロジェクトで gkeonprem.googleapis.com(GKE On-Prem API のサービス名)を無効にします。手順については、サービスの無効化をご覧ください。
  • GKE On-Prem API のプロジェクトにすべてのクラスタを登録する場合は、始める前にの手順に沿って、プロジェクト内の GKE On-Prem API を有効にしてから使用します。
  • GKE On-Prem API にクラスタを登録しない場合は、このセクションを追加して、gkeOnPremAPI.enabledfalse に設定します。プロジェクトにクラスタを登録しない場合は、プロジェクトで gkeonprem.googleapis.com(GKE On-Prem API のサービス名)を無効にします。手順については、サービスの無効化をご覧ください。

GKE On-Prem API に管理クラスタまたはユーザー クラスタを登録すると、標準ツール(Google Cloud コンソール、Google Cloud CLI、または Terraform)を使用してクラスタの詳細を表示し、クラスタのライフサイクルを管理できます。たとえば、gcloud CLI コマンドを実行して、クラスタに関する情報を取得できます。

GKE On-Prem API は、クラスタの状態メタデータを Google Cloudに保存します。このメタデータにより、API でクラスタ ライフサイクルを管理できるようになります。標準ツールは、GKE On-Prem API を使用し、総称して GKE On-Prem API クライアントと呼びます。

gkeOnPremAPI.enabledtrue に設定した場合、bmctl を使用してクラスタを作成または更新する前に、GKE On-Prem API を有効にして初期化するために、始める前にに記載されている手順を実行してください。

このセクションを追加してクラスタを作成または更新した後、セクションを削除してクラスタを更新すると、更新が失敗します。

bmctl ではなく、標準ツールを使用してクラスタを作成する場合は、以下をご覧ください。

標準ツールを使用してユーザー クラスタを作成すると、クラスタは GKE On-Prem API に自動的に登録されます。

クラスタ リソース 省略可

デフォルトでは、プロジェクトで GKE On-Prem API が有効になっている場合、クラスタは GKE On-Prem API に登録されます。クラスタを登録しない場合は false に設定します。

クラスタを GKE On-Prem API に登録した後、クラスタの登録を解除する必要がある場合は、次の変更を行い、クラスタを更新します。

gkeOnPremAPI:
  enabled: false
クラスタ リソース 必須 変更可

GKE On-Prem API が実行され、クラスタ メタデータが保存されるリージョン。 Google Cloud サポートされているリージョンのいずれかを選択します。gkeOnPremAPI.enabledtrue の場合、空でない文字列にする必要があります。gkeOnPremAPI.enabledfalse の場合、このフィールドを含めないでください。

このセクションが構成ファイルに含まれていない場合、このフィールドは clusterOperations.location に設定されます。

クラスタ リソース 省略可 変更不可

IPv4 CIDR 範囲の構成を定義します。ClusterCidrConfig リソースには、少なくとも ipv4 フィールドまたは ipv6 フィールドのいずれかを指定する必要があります。

ClusterCIDRConfig リソース 省略可 変更不可

文字列。IPv4 ノードの CIDR ブロックを設定します。ノードに設定できるのは、各ファミリーの 1 つの範囲のみです。この CIDR ブロックは、Cluster リソースに記述されている Pod CIDR と一致する必要があります。

次のような例になります。

ipv4:
  cidr: "10.1.0.0/16"
         
ClusterCIDRConfig リソース 必須 変更不可

整数。ノードの IPv4 CIDR ブロックのマスクサイズを定義します。たとえば、値 24 はネットマスク /24 に変換されます。ノードの CIDR ブロック ネットマスクが、kubelet がスケジューリングできる Pod の最大数より大きいことを確認します。これは、kubelet の --max-pods フラグで定義されています。

ClusterCIDRConfig リソース 必須 変更不可

IPv6 CIDR 範囲の構成を定義します。ClusterCidrConfig リソースには、少なくとも ipv4 フィールドまたは ipv6 フィールドのいずれかを指定する必要があります。

ClusterCIDRConfig リソース 省略可 変更不可

文字列。IPv6 ノードの CIDR ブロックを設定します。ノードに設定できるのは、各ファミリーの 1 つの範囲のみです。

次のような例になります。

ipv6:
  cidr: "2620:0:1000:2631:3:10:3:0/112"
         
ClusterCIDRConfig リソース 必須 変更不可

整数。ノードの IPv6 CIDR ブロックのマスクサイズを定義します。たとえば、値 120 はネットマスク /120 に変換されます。ノードの CIDR ブロック ネットマスクが、kubelet がスケジューリングできる Pod の最大数より大きいことを確認します。これは、kubelet の --max-pods フラグで定義されています。

ClusterCIDRConfig リソース 必須 変更不可

省略可。このセクションには、コントロール プレーン ノードプール内のすべてのノードで kubelet を構成するためのフィールドが含まれています。

次のような例になります。

apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
  name: node-pool-new
  namespace: cluster-my-cluster
spec:
  clusterName: my-cluster
  ...
  kubeletConfig:
    serializeImagePulls: true
    registryBurst: 20
    registryPullQPS: 10
NodePool リソース 省略可 変更可

省略可。整数(負ではない)。リクエストの急増に対応するために、処理キューに追加できるイメージの pull リクエストの最大数を指定します。pull が開始すると、新しいリクエストをキューに追加できます。デフォルト値は 10 です。このフィールドは、registryBurst kubelet 構成(v1beta1)オプションに対応しています。

registryPullQPS の値は、この設定よりも優先されます。たとえば、デフォルトの設定では、最大 10 件の同時クエリのバーストが許可されていますが、デフォルトのレート(秒間クエリ数 5 件)で処理する必要があります。このバースト動作は、registryPullQPS0 より大きい場合にのみ使用されます。

このフィールドは、クラスタを作成、更新、アップグレードするたびに設定できます。設定はクラスタのアップグレード後も保持されます。詳細については、kubelet イメージの pull 設定を構成するをご覧ください。

NodePool リソース 省略可 変更可

省略可。整数(負ではない)。Container Registry イメージの pull に対するクエリの処理速度を秒間クエリ数(QPS)で指定します。registryPullQPS が 0 より大きい値に設定されている場合、クエリレートは秒間クエリ数の数値に制限されます。registryPullQPS0 に設定されている場合、クエリレートに制限はありません。デフォルト値は 5 です。

このフィールドは、registryPullQPS kubelet 構成(v1beta1)オプションに対応しています。

このフィールドは、クラスタを作成、更新、アップグレードするたびに設定できます。設定はクラスタのアップグレード後も保持されます。詳細については、kubelet イメージの pull 設定を構成するをご覧ください。

NodePool リソース 省略可 変更可

省略可。ブール値(true | false)。このフィールドは、Container Registry の pull が並列処理されるか、一度に 1 つずつ処理されるかを指定します。デフォルトは true で、pull を 1 つずつ処理するように指定します。false に設定すると、kubelet はイメージを並列で pull します。このフィールドは、serializeImagePulls kubelet 構成(v1beta1)オプションに対応しています。

このフィールドは、クラスタを作成、更新、アップグレードするたびに設定できます。設定はクラスタのアップグレード後も保持されます。詳細については、kubelet イメージの pull 設定を構成するをご覧ください。

NodePool リソース 省略可 変更可

非推奨。リリース 1.11.2 時点では、VMRuntime カスタム リソースのみを更新することで、GDC上の VM ランタイムを有効または無効にできます。ブール値。仮想マシンの実行にソフトウェア エミュレーションを使用するかどうかを指定します。ノードがハードウェア仮想化をサポートしている場合は、パフォーマンスを向上させるために useEmulationfalse に設定します。ハードウェア仮想化がサポートされていない場合、またはサポートされているかどうか不明な場合は、true に設定します。

Cluster リソース 省略可 変更可

省略可。マッピング(Key-Value ペア)。baremetal.cluster.gke.io/label-taint-no-sync アノテーションがクラスタに適用されていない限り、ラベルはノードプールのノードに対して調整されます。ラベルの詳細については、ラベルとセレクタをご覧ください。

NodePool リソース 省略可 変更可

このセクションでは、クラスタ ロード バランシングの設定について説明します。

クラスタ リソース 必須 変更可

オブジェクト。クラスタ ロードバランサ プールの名前と IP アドレスの配列。アドレスプールの構成は、非管理クラスタの bundled LB モードでのみ有効です。新しいアドレスプールはいつでも追加できますが、既存のアドレスプールの変更や削除はできません。既存のアドレスプールは、avoidBuggyIPs フィールドと manualAssign フィールドのみを変更する場合に編集できます。

クラスタ リソース 省略可 変更不可

IP アドレス範囲の配列。データプレーン ロードバランサの重複しない IP 範囲のリストを指定します。すべてのアドレスが、ロードバランサ ノードと同じサブネット内にある必要があります。

次のような例になります。

addressPools:
- name: pool1
  addresses:
  - 192.168.1.0-192.168.1.4
  - 192.168.1.240/28
  
クラスタ リソース 省略可 変更不可

省略可。ブール値(true | false)。true の場合、.0.255 で終わる IP アドレスは除外されます。一部のネットワーク ハードウェアは、これらの特別なアドレスへのトラフィックをドロップします。このフィールドは省略できます。デフォルト値は false です。

クラスタ リソース 省略可 変更可

省略可。ブール値(true | false)。true の場合、このプール内のアドレスは Kubernetes Services に自動的に割り当てられません。true の場合、このプール内の IP アドレスは、サービスによって明示的に指定された場合にのみ使用されます。このフィールドは省略できます。デフォルト値は false です。

クラスタ リソース 省略可 変更可

文字列。クラスタ ロードバランサ プールに付ける名前。

クラスタ リソース 必須 変更不可

省略可。オブジェクト(マッピングのリスト)。このセクションでは、(クラスタの外部にある)ローカル ネットワークの 1 つ以上の Border Gateway Protocol(BGP)ピアを指定します。BGP ピアは、BGP を使用するバンドルされたロード バランシング ソリューションのコントロール プレーンのロード バランシング部分を設定するときに指定します。各ピアは、IP アドレス、自律システム番号(ASN)、コントロール プレーン ノードの 1 つ以上の IP アドレス(必要な場合)のリストで構成されるマッピングで指定されます。クラスタの作成後に、コントロール プレーン ロード バランシングの BGP ピアリング構成は更新できません。

次のような例になります。

loadBalancer:
  mode: bundled
  type: bgp
  localASN: 65001
  bgpPeers:
  - ip: 10.0.1.254
    asn: 65002
    controlPlaneNodes:
      - 10.0.1.10
      - 10.0.1.11
  - ip: 10.0.2.254
    asn: 65002
    controlPlaneNodes:
      - 10.0.2.10
  

詳細については、BGP を使用するバンドルされたロードバランサを構成するをご覧ください。

クラスタ リソース 省略可 変更可

省略可。文字列。外部ピアデバイスを含むネットワークの自律システム番号(ASN)。BGP を使用するバンドルされたロード バランシング ソリューションを設定するときに、コントロール プレーン ロード バランシング用に設定したすべての BGP ピアに ASN を指定します。詳細については、BGP を使用するバンドルされたロードバランサを構成するをご覧ください。

クラスタ リソース 省略可 変更可

省略可。IP(IPv4)アドレスの配列。BGP を使用するバンドルされたロード バランシング ソリューションを設定するときに、外部 BGP ピアに接続するコントロール プレーン ノードの IP アドレス。コントロール プレーン ノードを指定しない場合、すべてのコントロール プレーン ノードが外部ピアに接続できます。1 つ以上の IP アドレスを指定すると、指定したノードのみがピアリング セッションに参加します。詳細については、BGP を使用するバンドルされたロードバランサを構成するをご覧ください。

クラスタ リソース 省略可 変更可

省略可。文字列(IPv4 アドレス)。ローカル ネットワークからの外部ピアリング デバイスの IP アドレス。詳細については、BGP を使用するバンドルされたロードバランサを構成するをご覧ください。

クラスタ リソース 省略可 変更可

省略可。文字列。作成するクラスタの自律システム番号(ASN)を指定します。このフィールドは、境界ゲートウェイ プロトコル(BGP)を使用するバンドルされたロード バランシング ソリューションを設定するときに使用されます。詳細については、BGP を使用するバンドルされたロードバランサを構成するをご覧ください。

クラスタ リソース 省略可 変更可

必須。文字列。負荷分散モードを指定します。bundled モードでは、クラスタの作成時に Google Distributed Cloud ソフトウェアがロードバランサ ノードにロードバランサをインストールします。manual モードでは、クラスタは手動で構成された外部ロードバランサに依存します。詳細については、ロードバランサの概要をご覧ください。

使用できる値: bundled | manual

クラスタ リソース 必須 変更不可

省略可。このセクションは、ロードバランサのノードプールを構成するために使用します。指定するノードは Kubernetes クラスタの一部であり、通常のワークロードとロードバランサを実行します。ノードプールを指定しない場合は、コントロール プレーン ノードがロード バランシングに使用されます。このセクションは、ロード バランシング モードが bundled に設定されている場合にのみ適用されます。

ロードバランサ ノードプール内のノードでワークロードが実行されないようにするには、次の taint をノードに追加します。

node-role.kubernetes.io/load-balancer:NoSchedule

Google Distributed Cloud ソフトウェアは、ロード バランシングに必要な Pod にこの taint の toleration を追加します。

クラスタ リソース 省略可 変更可

省略可。このセクションには、コントロール プレーン ノードプール内のすべてのノードで kubelet を構成するためのフィールドが含まれています。

次のような例になります。

loadBalancer:
  nodePoolSpec:
    kubeletConfig:
      registryBurst: 15
      registryPullQPS: 10
      serializeImagePulls: false
クラスタ リソース 省略可 変更可

省略可。整数(負ではない)。リクエストの急増に対応するために、処理キューに追加できるイメージの pull リクエストの最大数を指定します。pull が開始すると、新しいリクエストをキューに追加できます。デフォルト値は 10 です。このフィールドは、registryBurst kubelet 構成(v1beta1)オプションに対応しています。

registryPullQPS の値は、この設定よりも優先されます。たとえば、デフォルトの設定では、最大 10 件の同時クエリのバーストが許可されていますが、デフォルトのレート(秒間クエリ数 5 件)で処理する必要があります。このバースト動作は、registryPullQPS0 より大きい場合にのみ使用されます。

このフィールドは、クラスタを作成、更新、アップグレードするたびに設定できます。設定はクラスタのアップグレード後も保持されます。詳細については、kubelet イメージの pull 設定を構成するをご覧ください。

クラスタ リソース 省略可 変更可

省略可。整数(負ではない)。Container Registry イメージの pull に対するクエリの処理速度を秒間クエリ数(QPS)で指定します。registryPullQPS が 0 より大きい値に設定されている場合、クエリレートは秒間クエリ数の数値に制限されます。registryPullQPS0 に設定されている場合、クエリレートに制限はありません。デフォルト値は 5 です。

このフィールドは、registryPullQPS kubelet 構成(v1beta1)オプションに対応しています。

このフィールドは、クラスタを作成、更新、アップグレードするたびに設定できます。設定はクラスタのアップグレード後も保持されます。詳細については、kubelet イメージの pull 設定を構成するをご覧ください。

クラスタ リソース 省略可 変更可

省略可。ブール値(true | false)。このフィールドは、Container Registry の pull が並列処理されるか、一度に 1 つずつ処理されるかを指定します。デフォルトは true で、pull を 1 つずつ処理するように指定します。false に設定すると、kubelet はイメージを並列で pull します。このフィールドは、serializeImagePulls kubelet 構成(v1beta1)オプションに対応しています。

このフィールドは、クラスタを作成、更新、アップグレードするたびに設定できます。設定はクラスタのアップグレード後も保持されます。詳細については、kubelet イメージの pull 設定を構成するをご覧ください。

クラスタ リソース 省略可 変更可

このセクションには、ロードバランサ ノードプール内のノードの IP アドレスの配列が含まれます。

デフォルトでは、ロードバランサ ノードプール内のすべてのノードは、構成ファイルの loadBalancer.addressPools セクションで構成されているロードバランサの VIP と同じレイヤ 2 サブネット内にある必要があります。ただし、ノードに Kubernetes IP アドレス k8sIP を指定する場合は、そのアドレスのみが他のロードバランサの VIP と同じレイヤ 2 サブネットに存在する必要があります。

Cluster リソース 省略可 変更可

省略可。文字列(IPv4 アドレス)。ノードプールを指定する場合は、address フィールドを使用して、各ノードの SSH アクセスのデフォルトの IPv4 アドレスを指定します。SSH アクセスは、インストールやアップグレードなどのクラスタ管理オペレーションに必要です。デフォルトでは、この IP アドレスはデータと Kubernetes トラフィックに使用されます。ただし、特定のノードに k8sIP アドレスを指定すると、トラフィックはノードの 2 つのアドレス間で分割され、k8sIP アドレスはデータと Kubernetes トラフィックにのみ使用されます。

ロードバランサ ノードプール内のノードはワークロードを実行できますが、ワーカー ノードプール内のノードとは分離されています。特定のクラスタノードを複数のノードプールに含めることはできません。ノード IP アドレスが重複すると、クラスタの作成などのクラスタ オペレーションがブロックされます。

次に例を示します。

loadBalancer:
  mode: bundled
  ...
  nodePoolSpec:
    nodes:
    - address: 10.200.0.25
    - address: 10.200.0.26
    - address: 10.200.0.27
        
クラスタ リソース 省略可 変更可

省略可。文字列(IPv4 アドレス)。ノードのオプションの k8sIP アドレスを指定すると、Kubernetes API、kubelet、ワークロードのリクエストやレスポンスなど、ノードのデータと Kubernetes トラフィックの処理専用になります。k8sIP を指定すると、ノードへの SSH 接続にのみ標準ノードの IP アドレス nodePoolSpec.nodes.address が使用されます。k8sIP アドレスを指定しない場合、標準ノードの IP アドレスがノードのすべてのトラフィックを処理します。

次のような例になります。

loadBalancer:
  mode: bundled
  ...
  addressPools:
  - name: pool1
    addresses:
    - 10.200.0.92-10.200.0.100
  nodePoolSpec:
    nodes:
    - address: 10.200.1.25
      k8sIP: 10.200.0.25
    - address: 10.200.0.26
    - address: 10.200.0.27
        

このフィールドは、クラスタの作成後に変更することはできません。

Cluster リソース 省略可 変更不可

数値。Kubernetes コントロール プレーン(Kubernetes API サーバー)に送信されるトラフィックに使用される宛先ポート。

クラスタ リソース 必須 変更不可

省略可。文字列。使用するバンドルされたロード バランシングのタイプ、レイヤ 2 または境界ゲートウェイ プロトコル(BGP)を指定します。標準のバンドルされたロード バランシングを使用している場合は、typelayer2 に設定します。BGP によるバンドル型ロード バランシングを使用している場合は、typebgp に設定します。type を設定しない場合、デフォルトで layer2 になります。

使用できる値: layer2 | bgp

クラスタ リソース 省略可 変更不可

必須。Kubernetes API サーバーに接続する仮想 IP アドレス(VIP)を指定します。このアドレスは、ロードバランサのアドレスプール(loadBalancer.addressPools.addresses)に使用される IP アドレスの範囲外にする必要があります。

クラスタ リソース 必須 変更不可

省略可。文字列(IPv4 アドレス)。上り(内向き)トラフィックのロードバランサに構成するよう選択した IP アドレス。

クラスタ リソース 省略可 変更不可

省略可。単一の IPv4 アドレスまたは IPv4 アドレスの範囲。メンテナンス モードにするノードマシンの IP アドレスを指定します。詳細については、ノードをメンテナンス モードにするをご覧ください。

次のような例になります。

  maintenanceBlocks:
    cidrBlocks:
    - 192.168.1.200  # Single machine
    - 192.168.1.100-192.168.1.109  # Ten machines
  
クラスタ リソース 省略可 変更可

必須。文字列。通常、Namespace の名前は cluster-CLUSTER_NAME のパターンを使用しますが、Google Distributed Cloud ソフトウェア リリース 1.7.2 以降では、cluster- 接頭辞は必ずしも必須ではありません。

既存のクラスタでは、この値は変更できません。

名前空間リソース 必須 変更不可

省略可。文字列。クラスタ内のノードマシンにパスワードなしでアクセスする SUDO 機能を許可する root 以外のユーザー名を指定します。SSH 認証鍵 sshPrivateKeyPath は、指定したユーザーに対して機能する必要があります。クラスタの作成および更新オペレーションでは、指定されたユーザーと SSH 認証鍵を使用してノードマシンにアクセスできることを確認します。

クラスタ リソース 省略可 変更可

このセクションには、クラスタノード構成の設定が含まれます。

クラスタ リソース 省略可 変更可(アップグレードのみ)

非推奨です。リリース 1.13.0 以降、Google Distributed Cloud は containerd をコンテナ ランタイムとしてのみサポートしています。containerRuntime フィールドは非推奨となっており、生成されたクラスタ構成ファイルから削除されています。Google Distributed Cloud ソフトウェア バージョン 1.13.0 以降で、このフィールドがクラスタ構成ファイルに含まれている場合は、値が containerd である必要があります。

クラスタ リソース 省略可 変更可(アップグレードのみ)

このセクションでは、Pod の密度の構成を指定します。

クラスタ リソース 省略可 変更不可

省略可。整数。単一ノードで実行できる Pod の最大数を指定します。セルフマネージド クラスタで maxPodsPerNode に使用できる値は、32250(高可用性(HA)クラスタの場合)または 64250(HA 以外のクラスタの場合)です。ユーザー クラスタの場合、maxPodsPerNode に使用できる値は 32250 です。指定しない場合のデフォルト値は 110 です。クラスタの作成後に、この値を更新することはできません。

Kubernetes は、各 Pod に一意の IP アドレスが指定されるように、クラスレス ドメイン間ルーティング(CIDR)ブロックを各ノードに割り当てます。CIDR ブロックのサイズは、ノードあたりの最大 Pod 数に対応します。ノードあたりの最大ポッド数の設定の詳細については、ポッド ネットワーキングをご覧ください。

クラスタ リソース 省略可 変更不可

このセクションでは、ユーザー クラスタのノードレベルの非公開レジストリ構成を指定します。ノードレベルの非公開レジストリは、ワークロードを使用してイメージの pull とそれに関連するセキュリティをより細かく制御できるようにすることを目的としています。

例:

spec:
  bypassPreflightCheck: false
  ...
  nodeConfig:
    containerRuntime: containerd
    podDensity:
      maxPodsPerNode: 250
    privateRegistries:
    - caCertSecretRef:
        name: ca-9dd74fd308bac6df562c7a7b220590b5
        namespace: some-namespace
      host: 10.200.0.2:5007
      pullCredentialSecretRef:
        name: pull-creds-9dd74fd308bac6df562c7a7b220590b5
        namespace: some-namespace
  ...

管理クラスタの場合、ノードレベルの非公開レジストリは、管理クラスタ構成ファイルの認証情報セクションで指定します。

非公開レジストリへのノードアクセスの構成の詳細については、非公開レジストリに対して認証を行うノードを構成するをご覧ください。

次のリストに、ノードレベルの非公開レジストリの構成のリリース ステージ(バージョンごと)を示します。

クラスタ リソース 省略可 変更可

必要に応じて、このセクションを使用して、非公開レジストリの CA 証明書(サーバールート CA)を保存するために作成された Secret の名前と Namespace を指定します。ローカル レジストリでプライベート TLS 証明書が不要な場合、このブロックは省略できます。

次のリストに、ノードレベルの非公開レジストリの構成のリリース ステージ(バージョンごと)を示します。

クラスタ リソース 省略可 変更可

省略可。文字列。非公開レジストリの CA 証明書を保存するために作成された Secret の名前。

非公開レジストリへのノードアクセスの構成の詳細については、非公開レジストリに対して認証を行うノードを構成するをご覧ください。

次のリストに、ノードレベルの非公開レジストリを構成するためのリリース ステージ(バージョンごと)を示します。

クラスタ リソース 省略可 変更可

省略可。文字列。非公開レジストリの CA 証明書を保存するために作成された Secret の Namespace。

非公開レジストリへのノードアクセスの構成の詳細については、非公開レジストリに対して認証を行うノードを構成するをご覧ください。

次のリストに、ノードレベルの非公開レジストリの構成のリリース ステージ(バージョンごと)を示します。

クラスタ リソース 省略可 変更可

文字列。このフィールドは、単一の非公開レジストリのホストとポートを指定します。ホストは、ドメイン名または IP アドレスで指定できます。http または https 接頭辞は含めないでください。

ユーザー クラスタに非公開レジストリを指定する場合、host フィールドは必須です。

次のリストに、ノードレベルの非公開レジストリの構成のリリース ステージ(バージョンごと)を示します。

クラスタ リソース 省略可 変更可

必要に応じて、このセクションを使用して、非公開レジストリの認証情報を保存するために作成された Secret の名前と Namespace を指定します。

認証が必要な非公開レジストリへのアクセスをノードに許可するようにユーザー クラスタを構成するときに、pullCredentialSecretRef ブロックを使用します。

次のリストに、ノードレベルの非公開レジストリの構成のリリース ステージ(バージョンごと)を示します。

クラスタ リソース 省略可 変更可

省略可。文字列。非公開レジストリの認証情報を保存するために作成された Secret の名前。

非公開レジストリへのノードアクセスの構成の詳細については、非公開レジストリに対して認証を行うノードを構成するをご覧ください。

次のリストに、ノードレベルの非公開レジストリの構成のリリース ステージ(バージョンごと)を示します。

クラスタ リソース 省略可 変更可

省略可。文字列。非公開レジストリの認証情報を保存するために作成された Secret の Namespace。

非公開レジストリへのノードアクセスの構成の詳細については、非公開レジストリに対して認証を行うノードを構成するをご覧ください。

次のリストに、ノードレベルの非公開レジストリの構成のリリース ステージ(バージョンごと)を示します。

クラスタ リソース 省略可 変更可

省略可。このセクションには、クラスタ内のワーカー ノードプールのアップグレード方法を構成するための設定が含まれます。詳細については、並列アップグレードをご覧ください。

クラスタ リソース 省略可 変更可

省略可。ブール値(0 または 1)。デフォルト: 1。このフィールドには、1 つのクラスタのすべてのワーカー ノードプールを同時にアップグレードするかどうかを指定します。デフォルト(1)では、順次アップグレードが実行されます。concurrentNodePools0 に設定すると、クラスタ内のすべてのワーカー ノードプールが並行してアップグレードされます。

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: cluster1
  namespace: cluster-cluster1
spec:
  ...
  nodePoolUpgradeStrategy:
    concurrentNodePools: 0
  ...

詳細については、ノードプールのアップグレード戦略をご覧ください。

各ワーカー ノードプール内のノードは、対応する NodePool 仕様のアップグレード戦略に従ってアップグレードされます。

クラスタ リソース 省略可 変更可

省略可。ブール値(true または false)。デフォルト: false。このフィールドは、アクティブなクラスタ アップグレードを一時停止または再開するかどうかを指定します。

1.29 以上1.28

アップグレードの一時停止と再開の機能は、すべてのコントロール プレーン ノードがマイナー バージョン 1.29 以降であるクラスタで一般提供されています。バージョン 1.29 のクラスタの場合、この機能はデフォルトで有効になっています。

アップグレードの一時停止と再開機能は、すべてのコントロール プレーン ノードがマイナー バージョン 1.28 以降であるクラスタではプレビュー版として提供されています。バージョン 1.28 のクラスタでこの機能を有効にするには、preview.baremetal.cluster.gke.io/upgrade-pause-and-resume アノテーションを使用します。

アクティブなクラスタ アップグレードを一時停止するには、nodePoolUpgradeStrategy.pause の値を true に更新します。

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: cluster1
  namespace: cluster-cluster1
  annotations: preview.baremetal.cluster.gke.io/upgrade-pause-and-resume
spec:
  ...
  nodePoolUpgradeStrategy:
    pause: true
  ...

詳しくは、アップグレードの一時停止と再開をご覧ください。

クラスタ リソース 省略可 変更可

省略可。IP(IPv4)アドレスの配列。これにより、ワーカーノードのノードプールが定義されます。

NodePool リソース 省略可 変更可

省略可。文字列(IPv4 アドレス)。ワーカーノードのプールを構成するノードの 1 つ以上の IP アドレス。

NodePool リソース 省略可 変更可

CIDR 構成を適用するノードを定義します。空のノードセレクタは、すべてのノードに適用されるデフォルトとして機能します。

次のような例になります。

nodeSelector:
  matchLabels:
    baremetal.cluster.gke.io/node-pool: "workers"
         
ClusterCIDRConfig リソース 省略可 変更可

省略可。ブール値(true | false)。デフォルトの Docker apt リポジトリではなく、独自のパッケージ リポジトリ サーバーを使用するかどうかを指定します。独自のパッケージ リポジトリを使用するには、addPackageRepofalse に設定します。この機能を使用すると、Deployment 内の各ベアメタル マシンへのパッケージ リポジトリの追加が省略されます。詳細については、プライベート パッケージ リポジトリ サーバーを使用するをご覧ください。

クラスタ リソース 省略可 変更不可

このセクションでは、定期的なヘルスチェックの構成情報について説明します。クラスタ リソースで定期的なヘルスチェックに使用できる設定は enable フィールドのみです。詳細については、定期的なヘルスチェックをご覧ください。

クラスタ リソース 省略可 変更可

省略可。ブール値(true|false)。クラスタの定期的なヘルスチェックを有効または無効にします。定期的なヘルスチェックは、すべてのクラスタでデフォルトで有効になっています。クラスタの定期的なヘルスチェックを無効にするには、periodicHealthCheck.enable フィールドを false に設定します。詳細については、定期的なヘルスチェックを無効にするをご覧ください。

クラスタ リソース 省略可 変更可

省略可。このセクションでは、ワークロード イメージに使用する非公開レジストリを指定します。この方法では、クラスタ構成ファイルの認証情報セクションで非公開レジストリを構成します。これは、ワーカー ノードプールのみがあるハイブリッド クラスタまたはスタンドアロン クラスタを対象としています。

非公開レジストリへのノードアクセスの構成の詳細については、非公開レジストリに対して認証を行うノードを構成するをご覧ください。

次のような例になります。

---
gcrKeyPath: baremetal/gcr.json
sshPrivateKeyPath: .ssh/id_rsa
...
privateRegistries:
  - host: 10.200.0.2:5007
    caCertPath: /root/cert.pem
    pullCredentialConfigPath: /root/dockerconfig.json
...
認証情報 省略可 変更可

省略可。文字列。CA 証明書ファイル(サーバールート CA)のパス(レジストリ サーバーがプライベート TLS 証明書を使用している場合)。ローカル レジストリでプライベート TLS 証明書が不要な場合、このフィールドは省略できます。

認証情報 省略可 変更可

文字列。このフィールドは、単一の非公開レジストリのホストとポートを指定します。ホストは、ドメイン名または IP アドレスで指定できます。http または https 接頭辞は含めないでください。

ハイブリッド クラスタまたはスタンドアロン クラスタの非公開レジストリを指定する場合、host フィールドは必須です。

次のような例になります。

- host: 10.200.0.2:5007
認証情報 省略可 変更可

省略可。文字列。Docker CLI 構成ファイルconfig.json)のパス。Docker では、認証設定が構成ファイルに保存されます。このフィールドは、ノードレベルの非公開レジストリの使用にのみ適用されます。

ハイブリッド クラスタまたはスタンドアロン クラスタを構成して、認証が必要な非公開レジストリにノードがアクセスできるようにする場合は、pullCredentialConfigPath フィールドを使用します。

認証情報 省略可 変更可

省略可。文字列。スタンドアロン クラスタの profileedge に設定されている場合、クラスタのリソース消費は最小限に抑えられます。Edge プロファイルはスタンドアロン クラスタでのみ使用できます。Edge プロファイルはシステム リソースの要件が軽減されているため、リソースの制約が厳しい Edge デバイスにおすすめします。Edge プロファイルに関連するハードウェア要件については、Edge プロファイルを使用するスタンドアロン クラスタのリソース要件をご覧ください。

クラスタ リソース 省略可 変更不可

ネットワークがプロキシ サーバーの背後にある場合は、このセクションに入力します。 それ以外の場合は、このセクションを削除します。

クラスタ リソース 省略可 変更可

文字列。プロキシ サーバーを経由しない IP アドレス、IP アドレス範囲、ホスト名、ドメイン名のカンマ区切りのリスト。クラスタがこれらのアドレス、ホスト、ドメインのいずれかにリクエストを送信する場合、そのリクエストは直接送信されます。

クラスタ リソース 省略可 変更不可

文字列。プロキシ サーバーの HTTP アドレス。スキームのデフォルト ポートと同じ場合でも、ポート番号を含めます。

次のような例になります。

proxy:
  url: "http://my-proxy.example.local:80"
  noProxy: "10.151.222.0/24, my-host.example.local,10.151.2.1"
  
クラスタ リソース 省略可 変更可

省略可。このセクションを使用して、Container Registry(gcr.io)の代わりにクラスタのインストールに使用するレジストリ ミラーを指定します。レジストリ ミラーの使用の詳細については、コンテナ イメージにレジストリ ミラーを使用するをご覧ください。

次のような例になります。

registryMirrors:
  - endpoint: https://172.18.0.20:5000
    caCertPath: /root/ca.crt
    pullCredentialConfigPath: /root/.docker/config.json
    hosts:
      - somehost.io
      - otherhost.io
レジストリ ミラー 省略可 変更可

省略可。文字列。CA 証明書ファイル(サーバールート CA)のパス(レジストリ サーバーがプライベート TLS 証明書を使用している場合)。ローカル レジストリでプライベート TLS 証明書が不要な場合、このフィールドは省略できます。

レジストリ ミラー 省略可 変更可

文字列。ミラーのエンドポイント。レジストリ サーバーの IP アドレスとポート番号で構成されます。必要に応じて、レジストリ サーバーで、ルート Namespace ではなく独自の Namespace を使用できます。Namespace を使用しない場合、エンドポイントの形式は REGISTRY_IP:PORT です。Namespace を使用する場合、エンドポイントの形式は REGISTRY_IP:PORT/v2/NAMESPACE です。名前空間を指定するときは、/v2 が必要です。

レジストリ ミラーを指定する場合、endpoint フィールドは必須です。複数のミラー / エンドポイントを指定できます。

次のような例になります。

- endpoint: https://172.18.0.20:5000/v2/test-namespace
レジストリ ミラー 省略可 変更可

省略可。特定のレジストリ ミラー(endpoint)用としてローカルにミラーリングされたホストのドメイン名の配列。コンテナ ランタイムは、指定されたホストからのイメージの pull リクエストを検出すると、まず、ローカルのレジストリ ミラーを確認します。詳細については、レジストリ ミラーからクラスタを作成するをご覧ください。

次のような例になります。

registryMirrors:
  - endpoint: https://172.18.0.20:5000
    caCertPath: /root/ca.crt
    pullCredentialConfigPath: /root/.docker/config.json
    hosts:
    - somehost.io
    - otherhost.io
         
レジストリ ミラー 省略可 変更可

省略可。文字列。Docker CLI 構成ファイルconfig.json)のパス。Docker では、認証設定が構成ファイルに保存されます。このフィールドはレジストリ ミラーの使用にのみ適用されます。レジストリ サーバーで認証に Docker 構成ファイルが必要ない場合は、このフィールドを省略できます。

次のような例になります。

registryMirrors:
  - endpoint: https://172.18.0.20:5000
    caCertPath: /root/ca.crt
    pullCredentialConfigPath: /root/.docker/config.json
        
レジストリ ミラー 省略可 変更可

文字列。SSH 秘密鍵のパス。Node へのアクセスには SSH が必要です。

認証情報 省略可 変更可

このセクションには、クラスタ ストレージの設定が含まれます。

クラスタ リソース 必須 変更不可

このセクションでは、マウントされたディスクで使用するローカル永続ボリュームの構成(パス)を指定します。これらのディスクは、自身でフォーマットしてマウントする必要があります。このタスクは、クラスタの作成前でも作成後でも行えます。詳細については、LVP ノードのマウントをご覧ください。

クラスタ リソース 必須 変更不可

必須。文字列。path フィールドは、マウントされたディスクを検出できるホストマシンのパスを指定するために使用します。それぞれのマウントに対してローカル PersistentVolume(PV)が作成されます。デフォルトのパスは /mnt/localpv-share です。ノードマウントを構成する手順については、LVP ノードマウントの構成をご覧ください。

クラスタ リソース 必須 変更不可

このセクションでは、共有ファイル システムのサブディレクトリで使用するローカル永続ボリュームの構成を指定します。これらのサブディレクトリは、クラスタの作成時に自動的に作成されます。詳細については、LVP 共有をご覧ください。

クラスタ リソース 必須 変更不可

必須。文字列。lvpShare.path 内に作成するサブディレクトリの数を指定します。デフォルト値は 5 です。LVP 共有を構成する手順については、LVP 共有の構成をご覧ください。

クラスタ リソース 必須 変更不可

必須。文字列。path フィールドは、サブディレクトリを作成できるホストマシンのパスを指定するために使用します。サブディレクトリごとにローカル PersistentVolume(PV)が作成されます。LVP 共有を構成する手順については、LVP 共有の構成をご覧ください。

クラスタ リソース 必須 変更不可

必須。文字列。永続ボリュームの作成に使用する StorageClass を指定します。StorageClass はクラスタの作成時に作成されます。デフォルト値は local-shared です。LVP 共有を構成する手順については、LVP 共有の構成をご覧ください。

クラスタ リソース 省略可 変更不可

省略可。オブジェクト。ノード taint を使用してノードをマークすると、スケジューラは特定の Pod でそのノードの使用を回避または禁止します。taint は、Key-Value ペアと関連付けられた効果で構成されます。keyvalue の値は taint を識別するための文字列であり、effect の値はノードに対する Pod の処理方法を指定します。taints オブジェクトには複数の taint を含めることができます。

effect ラベルには、次のいずれかの値が設定されます。

  • NoSchedule - 一致する toleration のない Pod はノードにスケジュールできません。
  • PreferNoSchedule - ノードへの taint を許容しない Pod の配置は回避されますが、必須ではありません。
  • NoExecute - taint を容認しないポッドは直ちに強制排除され、taint を容認するポッドは強制排除されません。

Google Distributed Cloud ソフトウェアの場合、baremetal.cluster.gke.io/label-taint-no-sync アノテーションがクラスタに適用されていない限り、taint はノードプールのノードに調整されます。taint の詳細については、taint と容認をご覧ください。

次のような例になります。

  taints:
  - key: status
    value: testpool
    effect: NoSchedule
  
NodePool リソース 省略可 変更可

必須。文字列。クラスタのタイプを指定します。標準デプロイモデルは、単一の管理クラスタと、管理クラスタが管理する 1 つ以上のユーザー クラスタで構成されます。Google Distributed Cloud ソフトウェアは、次のタイプのクラスタをサポートしています。

  • 管理 - ユーザー クラスタの管理に使用されるクラスタ
  • ユーザー - ワークロードの実行に使用されるクラスタ。
  • ハイブリッド - 管理とワークロード両方に使用される単一のクラスタ。ユーザー クラスタの管理も可能
  • スタンドアロン - 自身を管理でき、ワークロードを実行できるが、他のユーザー クラスタの作成または管理はできない単一クラスタ。

クラスタタイプはクラスタの作成時に指定されます。更新やアップグレードでは変更できません。クラスタの作成方法については、クラスタの作成: 概要をご覧ください。

使用できる値: admin | user | hybrid | standalone

既存のクラスタでは、この値は変更できません。

クラスタ リソース 必須 変更不可

省略可。このセクションには、ワーカー ノードプール内のノードのアップグレード戦略を構成するための設定が含まれます。詳細については、並列アップグレードをご覧ください。注: コントロール プレーンまたはロードバランサのノードプールには、このセクションを追加しないでください。

NodePool リソース 省略可 変更可

省略可。このセクションには、ワーカーノード プールの並列ノード アップグレードを構成する設定が含まれます。一般的なデフォルトのクラスタ アップグレードでは、各クラスタノードが順次アップグレードされます。ワーカーノード プールは、クラスタをアップグレードするときに複数のノードが同時にアップグレードするように構成できます。ノードを並行してアップグレードすると、クラスタのアップグレード時間が短くなります。特に、クラスタに数百のノードがある場合は、大幅に短縮されます。

ワーカーノード プールでは、同時にアップグレードするノードの数を指定し、アップグレード プロセス全体でワークロードを実行可能なノードの数の最小しきい値を設定できます。

詳細については、ノードのアップグレード戦略をご覧ください。

apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
  name: np1
  namespace: cluster-cluster1
spec:
  clusterName: cluster1
  nodes:
  - address:  10.200.0.1
  ...
  upgradeStrategy:
    parallelUpgrade:
      concurrentNodes: 2
      minimumAvailableNodes: 5
        
NodePool リソース 省略可 変更可

省略可。整数(正)。デフォルト: 1最大: 15。デフォルト(1)では、ノードが順次アップグレードされます。concurrentNodes を 1 より大きい値に設定した場合は、このフィールドに並列でアップグレードするノードの数を指定します。concurrentNodes の次の制約に注意してください。

  • この値は、ノードプール内のノード数の 50% または固定数 15 よりも小さくする必要があります。たとえば、ノードプールに 20 個のノードがある場合、10 より大きい値は指定できません。ノードプールに 100 個のノードがある場合、15 が指定できる最大値です。
  • このフィールドを minimumAvailableNodes フィールドとともに使用する場合、合計値は、ノードプール内のノードの総数を超えることはできません。たとえば、ノードプールに 20 個のノードがあり、minimumAvailableNodes18 に設定されている場合、concurrentNodes2 以下にする必要があります。

並列アップグレードは、Pod Disruption Budget(PDB)を考慮しません。ワークロードが中断の影響を受けやすい場合は、minimumAvailableNodes を指定して、アップグレード プロセス全体を通して一定数のノードがワークロードを実行し続けるようにすることをおすすめします。詳細については、並列アップグレードをご覧ください。

NodePool リソース 省略可 変更可

省略可。整数(負ではない)。デフォルト: concurrentNodes によって異なります。minimumAvailableNodes のデフォルト値の詳細については、並列アップグレードのデフォルトをご覧ください。minimumAvailableNodes を使用すると、アップグレード プロセス全体を通じて維持する必要があるノードプール内のノード数を指定できます。アクティブにアップグレードされているノードは、使用不可とみなされます。次の条件のいずれかに該当する場合、ノードは使用不可とみなされます。

  • 1 個のノードがメンテナンス モード
  • 1 個のノードが調整中
  • アップグレード中にノードが停止している

このフィールドを concurrentNodes フィールドとともに使用する場合、合計値は、ノードプール内のノードの総数を超えることはできません。たとえば、ノードプールに 20 個のノードがあり、concurrentNodes10 に設定されている場合、minimumAvailableNodes10 以下にする必要があります。

minimumAvailableNodes の値を大きくすると、Pod のスケジューリング時の容量の問題が最小限に抑えられるため、クラスタのアップグレード中のワークロードの保護に役立ちます。ただし、minimumAvailableNodes の値が大きいと、ノードが利用可能になるまでアップグレードが待機するリスクが高くなります。詳細については、並列アップグレードをご覧ください。

NodePool リソース 省略可 変更可

bmctl によって生成されるクラスタ構成ファイルには、ローカル ファイル システム内の認証情報と鍵ファイルのパスを指定するフィールドが含まれています。クラスタを相互に、かつ Google Cloud プロジェクトに接続するために必要な認証情報と鍵。

次のような例になります。

gcrKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-gcr.json
sshPrivateKeyPath: /home/root-user/.ssh/id_rsa
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
        
認証情報 省略可 変更可