クラスタ リソース
必須
変更可
authentication
このセクションでは、OpenID Connect(OIDC)の使用に必要な設定について説明します。
OIDC では、既存の ID プロバイダを使用して、Google Distributed Cloud クラスタでのユーザーとグループの認証を管理できます。
クラスタ リソース
—
—
authentication.oidc.certificateAuthorityData
省略可。base64
でエンコードされた OIDC プロバイダの PEM エンコード証明書 。文字列を作成するには、ヘッダーを含めた証明書を base64
でエンコードします。結果の文字列は certificateAuthorityData
に 1 行で含めます。
例(サンプルはテーブルに合わせて折り返されています):
certificateAuthorityData:
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC
...k1JSUN2RENDQWFT==
クラスタ リソース
任意
不変
authentication.oidc.clientID
省略可。文字列。OpenID プロバイダへの認証リクエストを行うクライアント アプリケーションの ID。
クラスタ リソース
任意
不変
authentication.oidc.clientSecret
省略可。文字列。OIDC クライアント アプリケーションと OIDC プロバイダ間の共有シークレット。
クラスタ リソース
任意
不変
authentication.oidc.deployCloudConsoleProxy
省略可。ブール値(true
|false
)。インターネット経由でアクセスできないオンプレミスの ID プロバイダに Google Cloud Console を接続するため、クラスタにリバース プロキシをデプロイするかどうかを指定します。ID プロバイダに公共のインターネット経由でアクセスできない場合は、このフィールドを true
に設定して Google Cloud Console で認証します。デフォルトでは false
に設定されます。
クラスタ リソース
任意
不変
省略可。カンマ区切りのリスト。OpenID プロバイダに送信する追加の Key-Value パラメータ。
クラスタ リソース
任意
不変
authentication.oidc.groupPrefix
省略可。文字列。既存の名前と競合しないように、グループ クレームの先頭に付加される接頭辞。たとえば、グループ dev
と接頭辞 oidc:
が指定されている場合、oidc:dev
となります。
クラスタ リソース
任意
不変
authentication.oidc.group
省略可。文字列。
プロバイダがセキュリティ グループを返すために使用する JWT クレーム。
クラスタ リソース
任意
不変
authentication.oidc.issuerURL
省略可。URL 文字列。認可リクエストが OpenID に送信される URL(https://example.com/adfs
など)。Kubernetes API サーバーは、この URL を使用してトークン検証用の公開鍵を検出します。URL は HTTPS を使用する必要があります。
クラスタ リソース
任意
不変
authentication.oidc.kubectlRedirectURL
省略可。URL 文字列。kubectl
が認証に使用するリダイレクト URL。OIDC を有効にする場合は、kubectlRedirectURL
値を指定する必要があります。
クラスタ リソース
任意
不変
authentication.oidc.proxy
省略可。URL 文字列。クラスタが OIDC プロバイダに接続するために使用するプロキシ サーバー(該当する場合)。この値には、ホスト名 / IP アドレスと、必要に応じてポート、ユーザー名、パスワードを含める必要があります。例: http://user:password@10.10.10.10:8888
。
クラスタ リソース
任意
不変
authentication.oidc.scopes
省略可。カンマ区切りのリスト。OpenID プロバイダに送信する追加のスコープ。Microsoft Azure と Okta には offline_access
スコープが必要です。
クラスタ リソース
任意
不変
authentication.oidc.usernamePrefix
省略可。文字列。ユーザー名のクレームの先頭に付加される接頭辞。
クラスタ リソース
任意
不変
authentication.oidc.username
省略可。文字列。
ユーザー名として使用する JWT クレーム。指定しない場合、デフォルトで sub
になります。
クラスタ リソース
任意
不変
bypassPreflightCheck
省略可。ブール値(true
|false
)。true
に設定すると、既存のクラスタにリソースを適用するときに内部プリフライト チェックが無視されます。デフォルトは false
です。
変更可否: 既存クラスタのこの値は、bmctl update
コマンドで変更できます。
クラスタ リソース
任意
変更可
clusterNetwork
このセクションには、クラスタのネットワーク設定が含まれます。
クラスタ リソース
必須
変更可
clusterNetwork.advancedNetworking
データ型はブール値です。高度なネットワーク機能(BGP とバンドルされたロード バランシングや下り(外向き)NAT ゲートウェイなど)を有効にするには、このフィールドを true
に設定します。どちらの機能も Network Gateway for GDC を使用します。Network Gateway for GDC は、GKE Enterprise と Google Kubernetes Engine(GKE)で高度なネットワーク機能を実現するための重要な要素です。Network Gateway for GDC の主なメリットの 1 つは、NetworkGatewayGroup
カスタム リソースで指定した一連のアドレスから、フローティング IP アドレスを動的に割り当てることができることです。
Network Gateway for GDC と、それに関連する高度なネットワーク機能の詳細については、下り(外向き)NAT ゲートウェイを構成する と BGP を使用してバンドルされたロードバランサを構成する をご覧ください。
クラスタ リソース
任意
不変
clusterNetwork.bundledIngress
データ型はブール値です。Google Distributed Cloud にバンドルされている Ingress 機能を無効にするには、このフィールドを false
に設定します。クラスタ用にバンドルされている Ingress 機能は、Ingress のみをサポートします。完全に機能するサービス メッシュをさらに活用するために Istio または Cloud Service Mesh と統合する場合は、バンドルされた Ingress を無効にすることをおすすめします。このフィールドはデフォルトで true
に設定されています。このフィールドは、生成されたクラスタ構成ファイルに存在しません。バージョン 1.13.0 以降のクラスタに対してのみ、バンドルされた Ingress を無効にできます。
バンドルされた Ingress 機能の詳細については、サービスと Ingress の作成 をご覧ください。
クラスタ リソース
任意
変更可
clusterNetwork.flatIPv4
データ型はブール値です。フラットモードのクラスタ ネットワーク モデルを有効にするには、このフィールドを true
に設定します。フラットモードでは、各 Pod のそれぞれに一意の IP アドレスがあります。Pod は、中間ゲートウェイやネットワーク アドレス変換(NAT)を必要とせず、互いに直接通信できます。flatIPv4
のデフォルトは、false
です。フラットモードは、クラスタの作成時にのみ有効にできます。クラスタでフラットモードを有効にすると、無効にはできません。
クラスタ リソース
任意
不変
clusterNetwork.forwardMode
省略可。文字列。Dataplane V2 ロード バランシングのネットワーク モードを指定します。送信元ネットワーク アドレス変換(SNAT)がデフォルトのネットワーキング モードです。Direct Server Return(DSR)モードは、SNAT ロード バランシングの問題を解決します。DSR モード(forwardMode: dsr
)では、ロードバランサ ノードが IP オプションを使用してクライアントの送信元アドレスを保存します。Dataplane V2 ロード バランシングのネットワーク モードは、クラスタ作成時にのみ構成できます。
使用できる値: dsr
| snat
詳細については、ロード バランシング ネットワーク モードの構成 をご覧ください。
クラスタ リソース
任意
不変
clusterNetwork.multipleNetworkInterfaces
省略可。ブール値。Pod の複数のネットワーク インターフェースを有効にするには、このフィールドを true
に設定します。
複数のネットワーク インターフェースの設定と使用方法の詳細については、Pod の複数のネットワーク インターフェースを構成する ドキュメントをご覧ください。
クラスタ リソース
任意
不変
clusterNetwork.pods.cidrBlocks
必須。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
クラスタ リソース
必須
不変
clusterNetwork.sriovOperator
省略可。ブール値。クラスタで SR-IOV ネットワークを有効にするには、このフィールドを true
に設定します。
SR-IOV ネットワークの構成と使用方法については、SR-IOV ネットワークの設定 のドキュメントをご覧ください。
クラスタ リソース
任意
変更可
clusterNetwork.services.cidrBlocks
必須。IPv4 アドレスの範囲(CIDR ブロック形式)。Service の仮想 IP(VIP)アドレスが割り振られる IP アドレスの範囲を指定します。この範囲は、ネットワークから到達可能なサブネットと重複してはなりません。プライベート インターネットのアドレスの割り振りについては、RFC 1918 をご覧ください。
Google Distributed Cloud リリース 1.15.0 以降では、このフィールドは変更可能です。必要に応じて、クラスタの作成後にサービスに割り振る IP アドレスの数を増やすことができます。詳細については、サービスのネットワーク範囲を拡張する をご覧ください。IPv4 サービスの CIDR の範囲のみを拡張できます。ネットワークの範囲は縮小できません。つまり、マスク(「/」後の値)を増やすことはできません。
最小 Service CIDR 範囲: 8 ビットのサイズ(256 件のアドレス)に対応する /24
のマスク値。
サービスの最大 CIDR 範囲: 20 ビットのサイズ(1,048,576 件の IP アドレス)に対応する /12
のマスク値。
次のような例になります。
services:
cidrBlocks:
- 10.96.0.0/12
クラスタ リソース
必須
変更可
clusterOperations
このセクションでは、Cloud Logging と Cloud Monitoring の情報について説明します。
クラスタ リソース
必須
変更可
clusterOperations.enableApplication
このフィールドは使用されなくなっており、効果はありません。Stackdriver のカスタム リソースで、アプリケーションのロギングとモニタリングが有効になっています。アプリケーションのロギングとモニタリングを有効にする方法については、アプリケーションのロギングとモニタリングを有効にする をご覧ください。
クラスタ リソース
オペレーションなし
変更可
clusterOperations.disableCloudAuditLogging
ブール値。Cloud Audit Logs は、不審な API リクエストの調査や統計情報の収集を行う際に有効です。Cloud Audit Logs は、デフォルトで有効(disableCloudAuditLogging: false
)になっています。Cloud Audit Logs を無効にするには、true
に設定します。
詳細については、監査ロギングの使用 をご覧ください。
クラスタ リソース
任意
変更可
clusterOperations.location
文字列。Logging のログと Monitoring の指標を保存する Google Cloud リージョン。オンプレミスのデータセンターに近いリージョンを選択することをおすすめします。詳細については、グローバル ロケーション をご覧ください。
次のような例になります。
location: us-central1
クラスタ リソース
必須
不変
clusterOperations.projectID
文字列。ログと指標を表示する Google Cloud プロジェクトのプロジェクト ID。
クラスタ リソース
必須
不変
controlPlane
このセクションには、コントロール プレーンとそのコンポーネントに関する情報が含まれます。
クラスタ リソース
必須
変更可
省略できます。文字列の配列(ドメイン名と IP アドレス)。サブジェクト代替名(SAN)は SSL 証明書の機能で、証明書を有効にするドメイン名とサブドメインを定義できます。GKE on Bare Metal クラスタでは、API サーバー証明書の SAN にデフォルトでコントロール プレーン ノードの IP アドレスと VIP アドレス、および Kubernetes DNS 名が含まれています。
このフィールドを使用して、クラスタの API サーバー証明書に SAN を追加します。ドメイン名は RFC 1035 に準拠している必要があります。 詳細については、API サーバー証明書にドメインを追加する をご覧ください。
次のような例になります。
...
controlPlane:
apiServerCertExtraSANs:
- "demo-dns.example.com"
- "sample-dns.com"
nodePoolSpec:
...
このフィールドはいつでも追加または変更できます。
クラスタ リソース
任意
変更可
controlPlane.nodePoolSpec
このセクションでは、コントロール プレーンとそのコンポーネントで使用されるノードプールの IP アドレスを指定します。コントロール プレーンのノードプールの仕様(ロードバランサ ノードプールの仕様 など)は特別なものです。この仕様では、重要なクラスタ リソースを宣言し、制御します。このリソースの正規ソースは、クラスタ構成ファイル内のこのセクションです。最上位のコントロール プレーン ノードプール リソースを直接変更しないでください。代わりに、クラスタ構成ファイル内の関連するセクションを変更してください。
クラスタ リソース
必須
変更可
controlPlane.nodePoolSpec.nodes
必須。IP アドレスの配列。通常、この配列は 1 台のマシンの IP アドレスか、高可用性(HA)デプロイメント用の 3 台のマシンの IP アドレスです。
次のような例になります。
controlPlane:
nodePoolSpec:
nodes:
- address: 192.168.1.212
- address: 192.168.1.213
- address: 192.168.1.214
このフィールドは、クラスタを更新またはアップグレードするたびに変更できます。
クラスタ リソース
必須
変更可
controlPlane.nodePoolSpec.kubeletConfig
省略可。このセクションでは、コントロール プレーン ノードプール内のすべてのノードで kubelet を構成するフィールドについて説明します。
次のような例になります。
controlPlane:
nodePoolSpec:
kubeletConfig:
registryBurst: 15
registryPullQPS: 10
serializeImagePulls: false
クラスタ リソース
任意
変更可
controlPlane.nodePoolSpec.kubeletConfig.registryBurst
省略できます。整数(負ではない)。リクエストの急増に対応するために、処理キューに追加できるイメージの pull リクエストの最大数を指定します。pull が開始すると、新しいリクエストをキューに追加できます。デフォルト値は 10 です。このフィールドは、registryBurst
kubelet 構成(v1beta1)オプションに対応します。
registryPullQPS
の値は、この設定よりも優先されます。たとえば、デフォルトの設定では、最大 10 件の同時クエリのバーストが許可されていますが、デフォルトのレート(秒間クエリ数 5 件)で処理する必要があります。このバースト動作は、registryPullQPS
が 0
より大きい場合にのみ使用されます。
このフィールドは、クラスタを作成、更新、アップグレードするたびに設定でき、設定はクラスタのアップグレード後も保持されます。詳細については、kubelet イメージの pull 設定を構成する をご覧ください。
クラスタ リソース
任意
変更可
controlPlane.nodePoolSpec.kubeletConfig.registryPullQPS
省略できます。整数(負ではない)。Container Registry イメージの pull に対するクエリの処理速度を秒間クエリ数(QPS)で指定します。
registryPullQPS
が 0 より大きい値に設定されている場合、クエリレートは秒間クエリ数の数値に制限されます。registryPullQPS
が 0
に設定されている場合、クエリレートに制限はありません。デフォルト値は 5
です。
このフィールドは、registryPullQPS
kubelet 構成(v1beta1)オプションに対応します。
このフィールドは、クラスタを作成、更新、アップグレードするたびに設定でき、設定はクラスタのアップグレード後も保持されます。詳細については、kubelet イメージの pull 設定を構成する をご覧ください。
クラスタ リソース
任意
変更可
controlPlane.nodePoolSpec.kubeletConfig.serializeImagePulls
省略できます。ブール値(true
|false
)。このフィールドは、Container Registry の pull が並列処理されるか、一度に 1 つずつ処理されるかを指定します。デフォルトは true
で、pull を 1 つずつ処理するように指定します。false
に設定すると、kubelet はイメージを並列で pull します。このフィールドは、serializeImagePulls
kubelet 構成(v1beta1)オプションに対応します。
このフィールドは、クラスタを作成、更新、アップグレードするたびに設定でき、設定はクラスタのアップグレード後も保持されます。詳細については、kubelet イメージの pull 設定を構成する をご覧ください。
クラスタ リソース
任意
変更可
gkeConnect
このセクションでは、クラスタを Google Cloud に接続するために使用する Google Cloud プロジェクトに関する情報について説明します。
クラスタ リソース
必須
変更不可
gkeConnect.projectID
必須: 文字列。クラスタを Google Cloud に接続するために使用する Google Cloud プロジェクトの ID。これは、フリートホスト プロジェクト とも呼ばれます。
次のような例になります。
spec:
...
gkeConnect:
projectID: "my-connect-project-123"
既存のクラスタでは、この値は変更できません。
クラスタ リソース
必須
不変
gkeConnect.location
省略可。文字列。デフォルト値: global
。クラスタのフリート メンバーシップは、フリート サービス(gkehub.googleapis.com
)と Connect サービス(gkeconnect.googleapis.com
)で管理されます。フリート メンバーシップはグローバルまたはリージョンにできます。必要に応じて、gkeConnect.location
を使用して、フリートと Connect サービスが実行される Google Cloud リージョンを指定して、トラフィックが自分のリージョンに制限されるようにできます。
サポートされているリージョンの一覧については、GKE On-Prem API でサポートされているリージョン をご覧ください。
指定しない場合は、サービスのグローバル インスタンスが使用されます。
次の点にご注意ください。
バージョン 1.28 より前のバージョンで作成されたクラスタは、グローバル フリートとコネクト サービスによって管理されます。
Google Cloud コンソール、Google Cloud CLI、Terraform など、GKE On-Prem API クライアントを使用して作成された新しいクラスタは、GKE On-Prem API で指定したリージョンと同じリージョンを使用します。
新しいクラスタの場合、このフィールドを指定する場合、指定するリージョンは gkeOnPremAPI.location
に構成されたリージョンと同じでなければなりません。リージョンが同じでない場合、クラスタの作成は失敗します。
次のような例になります。
spec:
...
gkeConnect:
projectID: "my-connect-project-123"
location: "us-central1"
既存のクラスタでは、この値は変更できません。
クラスタ リソース
任意
変更不可
gkeOnPremAPI
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.enabled
を false
に設定します。
プロジェクトにクラスタを登録しない場合は、プロジェクトで gkeonprem.googleapis.com
(GKE On-Prem API のサービス名)を無効にします。手順については、サービスの無効化 をご覧ください。
GKE On-Prem API のプロジェクトにすべてのクラスタを登録する場合は、始める前に の手順に沿って、プロジェクト内の GKE On-Prem API を有効にしてから使用します。
GKE On-Prem API にクラスタを登録しない場合は、このセクションを追加して、gkeOnPremAPI.enabled
を false
に設定します。
プロジェクトにクラスタを登録しない場合は、プロジェクトで 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.enabled
を true
に設定した場合、bmctl
を使用してクラスタを作成または更新する前に、GKE On-Prem API を有効にして初期化するために、始める前に に記載されている手順を実行してください。
このセクションを追加してクラスタを作成または更新した後、セクションを削除してクラスタを更新すると、更新が失敗します。
bmctl
ではなく、標準ツールを使用してクラスタを作成する場合は、以下をご覧ください。
標準ツールを使用してユーザー クラスタを作成すると、クラスタは GKE On-Prem API に自動的に登録されます。
クラスタ リソース
省略可
gkeOnPremAPI.enabled
デフォルトでは、プロジェクトで GKE On-Prem API が有効になっている場合、クラスタは Anthos On-Prem API に登録されます。クラスタを登録しない場合は false
に設定します。
クラスタを GKE On-Prem API に登録した後、クラスタの登録を解除する必要がある場合は、次の変更を行ってからクラスタを更新します。
gkeOnPremAPI:
enabled: false
クラスタ リソース
必須
変更可
gkeOnPremAPI.location
GKE On-Prem API が実行され、クラスタ メタデータが保存される Google Cloud リージョン。サポートされているリージョン のいずれかを選択します。gkeOnPremAPI.enabled
が true
の場合、空でない文字列にする必要があります。gkeOnPremAPI.enabled
が false
の場合、このフィールドを含めないでください。
このセクションが構成ファイルに含まれていない場合、このフィールドは clusterOperations.location
に設定されます。
クラスタ リソース
任意
不変
kubevirt.useEmulation
(非推奨)
非推奨 。リリース 1.11.2 時点では、VMRuntime カスタム リソースのみを更新することで、GDC上の VM ランタイムを有効または無効にできます。データ型はブール値です。仮想マシンの実行にソフトウェア エミュレーションを使用するかどうかを指定します。ノードがハードウェア仮想化をサポートしている場合は、パフォーマンスを向上させるために useEmulation
を false
に設定します。ハードウェア仮想化がサポートされていない、またはサポートされているかどうか不明な場合は、true
に設定します。
この項目は使用されなくなりました。useEmulation
の設定やその他の VM 設定は、VMRuntime
カスタム リソースで構成されます。詳細については、GDC 上の VM ランタイムを有効にする をご覧ください。
クラスタ リソース
任意
変更可
loadBalancer
このセクションでは、クラスタ ロード バランシングの設定について説明します。
クラスタ リソース
必須
変更可
loadBalancer.addressPools
オブジェクト。クラスタ ロードバランサ プールの名前と IP アドレスの配列。アドレスプールの構成は、非管理クラスタの bundled
LB モードでのみ有効です。新しいアドレスプールはいつでも追加できますが、既存のアドレスプールの変更や削除はできません。既存のアドレスプールは、avoidBuggyIPs
フィールドと manualAssign
フィールドのみを変更するために編集できます。
クラスタ リソース
任意
不変
loadBalancer.addressPools.addresses
IP アドレス範囲の配列。データプレーン ロードバランサの重複しない IP 範囲のリストを指定します。すべてのアドレスが、ロードバランサ ノードと同じサブネット内になくてはなりません。
次のような例になります。
addressPools:
- name: pool1
addresses:
- 192.168.1.0-192.168.1.4
- 192.168.1.240/28
クラスタ リソース
任意
不変
loadBalancer.addressPools.name
文字列。クラスタ ロードバランサ プールに付ける名前。
クラスタ リソース
必須
不変
loadBalancer.addressPools.avoidBuggyIPs
省略可。ブール値(true
| false
)。true
の場合、.0
と .255
で終わる IP アドレスは除外されます。一部のネットワーク ハードウェアは、これらの特別なアドレスへのトラフィックをドロップします。このフィールドは省略できます。デフォルト値は false
です。
クラスタ リソース
任意
変更可
loadBalancer.addressPools.manualAssign
省略できます。ブール値(true
| false
)。true
の場合、このプール内のアドレスは Kubernetes Services に自動的に割り当てられません。true
の場合、このプール内の IP アドレスは、サービスによって明示的に指定された場合にのみ使用されます。このフィールドは省略できます。デフォルト値は false
です。
クラスタ リソース
任意
変更可
loadBalancer.mode
必須。文字列。負荷分散モードを指定します。bundled
モードでは、クラスタの作成時に、Google Distributed Cloud がロードバランサ ノードにロードバランサをインストールします。manual
モードでは、クラスタは手動で構成された外部ロードバランサに依存します。詳細については、ロードバランサの概要 をご覧ください。
使用できる値: bundled
| manual
クラスタ リソース
必須
不変
loadBalancer.type
省略可。文字列。使用するバンドル負荷分散のタイプ、レイヤ 2 または境界ゲートウェイ プロトコル(BGP)を指定します。標準のバンドル型ロード バランシング を使用している場合は、type
を layer2
に設定します。BGP によるバンドル型ロード バランシング を使用している場合は、type
を bgp
に設定します。type
を設定しない場合、デフォルトで layer2
になります。
使用できる値: layer2
| bgp
クラスタ リソース
任意
不変
loadBalancer.nodePoolSpec
省略可。このセクションは、ロードバランサのノードプールを構成するために使用します。指定するノードは Kubernetes クラスタの一部であり、通常のワークロードとロードバランサを実行します。ノードプールを指定しない場合は、コントロール プレーン ノードがロード バランシングに使用されます。このセクションは、ロード バランシング モードが bundled
に設定されている場合にのみ適用されます。
重要: loadBalancer.nodePoolSpec
を指定せずにクラスタを作成すると、後で nodePoolSpec
を追加することはできません。loadBalancer.nodePoolSpec
で構成されたクラスタの場合は、いつでも nodePoolSpec
を更新できます。
ロードバランサ ノードプール内のノードでワークロードが実行されないようにするには、次の taint をノードに追加します。
node-role.kubernetes.io/load-balancer:NoSchedule
Google Distributed Cloud は、ロード バランシングに必要な Pod にこの taint の toleration を追加します。
クラスタ リソース
任意
変更可
loadBalancer.nodePoolSpec.nodes
このセクションには、ロードバランサ ノードプール内のノードの IP アドレスの配列が含まれます。
クラスタ リソース
任意
変更可
loadBalancer.nodePoolSpec.nodes.address
省略可。文字列(IPv4 アドレス)。ノードの IP アドレス。 ロードバランサ ノードプール内のノードはワークロードを実行できますが、ワーカー ノードプール内のノードとは分離されています。特定のクラスタノードを複数のノードプールに含めることはできません。ノード IP アドレスが重複すると、クラスタの作成などのクラスタ オペレーションがブロックされます。
クラスタ リソース
任意
変更可
loadBalancer.nodePoolSpec.kubeletConfig
省略可。このセクションでは、コントロール プレーン ノードプール内のすべてのノードで kubelet を構成するフィールドについて説明します。
次のような例になります。
loadBalancer:
nodePoolSpec:
kubeletConfig:
registryBurst: 15
registryPullQPS: 10
serializeImagePulls: false
クラスタ リソース
任意
変更可
loadBalancer.nodePoolSpec.kubeletConfig.registryBurst
省略できます。整数(負ではない)。リクエストの急増に対応するために、処理キューに追加できるイメージの pull リクエストの最大数を指定します。pull が開始すると、新しいリクエストをキューに追加できます。デフォルト値は 10 です。このフィールドは、registryBurst
kubelet 構成(v1beta1)オプションに対応します。
registryPullQPS
の値は、この設定よりも優先されます。たとえば、デフォルトの設定では、最大 10 件の同時クエリのバーストが許可されていますが、デフォルトのレート(秒間クエリ数 5 件)で処理する必要があります。このバースト動作は、registryPullQPS
が 0
より大きい場合にのみ使用されます。
このフィールドは、クラスタを作成、更新、アップグレードするたびに設定でき、設定はクラスタのアップグレード後も保持されます。詳細については、kubelet イメージの pull 設定を構成する をご覧ください。
クラスタ リソース
任意
変更可
loadBalancer.nodePoolSpec.kubeletConfig.registryPullQPS
省略できます。整数(負ではない)。Container Registry イメージの pull に対するクエリの処理速度を秒間クエリ数(QPS)で指定します。
registryPullQPS
が 0 より大きい値に設定されている場合、クエリレートは秒間クエリ数の数値に制限されます。registryPullQPS
が 0
に設定されている場合、クエリレートに制限はありません。デフォルト値は 5
です。
このフィールドは、registryPullQPS
kubelet 構成(v1beta1)オプションに対応します。
このフィールドは、クラスタを作成、更新、アップグレードするたびに設定でき、設定はクラスタのアップグレード後も保持されます。詳細については、kubelet イメージの pull 設定を構成する をご覧ください。
クラスタ リソース
任意
変更可
loadBalancer.nodePoolSpec.kubeletConfig.serializeImagePulls
省略できます。ブール値(true
|false
)。このフィールドは、Container Registry の pull が並列処理されるか、一度に 1 つずつ処理されるかを指定します。デフォルトは true
で、pull を 1 つずつ処理するように指定します。false
に設定すると、kubelet はイメージを並列で pull します。このフィールドは、serializeImagePulls
kubelet 構成(v1beta1)オプションに対応します。
このフィールドは、クラスタを作成、更新、アップグレードするたびに設定でき、設定はクラスタのアップグレード後も保持されます。詳細については、kubelet イメージの pull 設定を構成する をご覧ください。
クラスタ リソース
任意
変更可
loadBalancer.ports.controlPlaneLBPort
番号。Kubernetes コントロール プレーン(Kubernetes API サーバー)に送信されるトラフィックに使用される宛先ポート。
クラスタ リソース
必須
不変
クラスタ リソース
必須
不変
loadBalancer.vips.ingressVIP
省略可。文字列(IPv4 アドレス)。上り(内向き)トラフィックのロードバランサに構成するよう選択した IP アドレス。
クラスタ リソース
任意
不変
loadBalancer.localASN
省略可。文字列。作成するクラスタの自律システム番号(ASN)を指定します。このフィールドは、境界ゲートウェイ プロトコル(BGP)を使用するバンドル型ロード バランシング ソリューションを設定するときに使用されます。詳細については、BGP を使用してバンドルされたロードバランサを構成する をご覧ください。
クラスタ リソース
任意
変更可
loadBalancer.bgpPeers
省略可。オブジェクト(マッピングのリスト)。このセクションでは、(クラスタの外部にある)ローカル ネットワークから 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 を使用してバンドルされたロードバランサを構成する をご覧ください。
クラスタ リソース
任意
変更可
クラスタ リソース
任意
変更可
loadBalancer.bgpPeers.asn
省略可。文字列。外部ピアデバイスを含むネットワークの自律システム番号(ASN)。BGP を使用するバンドル型ロード バランシング ソリューションを設定するときに、コントロール プレーン ロード バランシング用に設定したすべての BGP ピアに ASN を指定します。詳細については、BGP を使用してバンドルされたロードバランサを構成する をご覧ください。
クラスタ リソース
任意
変更可
loadBalancer.bgpPeers.controlPlaneNodes
省略可。IP(IPv4)アドレスの配列。BGP を使用するバンドル型ロード バランシング ソリューションを設定するときに、外部 BGP ピアに接続するコントロール プレーン ノードの IP アドレス。コントロール プレーン ノードを指定しない場合、すべてのコントロール プレーン ノードが外部ピアに接続します。1 つ以上の IP アドレスを指定すると、指定したノードのみがピアリング セッションに参加します。詳細については、BGP を使用してバンドルされたロードバランサを構成する をご覧ください。
クラスタ リソース
任意
変更可
maintenanceBlocks.cidrBlocks
省略可。単一の IPv4 アドレスまたは IPv4 アドレスの範囲。メンテナンス モードにするノードマシンの IP アドレスを指定します。詳細については、ノードをメンテナンス モードにする をご覧ください。
次のような例になります。
maintenanceBlocks:
cidrBlocks:
- 192.168.1.200 # Single machine
- 192.168.1.100-192.168.1.109 # Ten machines
クラスタ リソース
任意
変更可
nodeAccess.loginUser
省略可。文字列。クラスタ内のノードマシンへのパスワードなしの SUDO 機能アクセスに使用する root 以外のユーザー名を指定します。SSH 認証鍵 sshPrivateKeyPath
は、指定したユーザーに対して機能する必要があります。クラスタの作成および更新オペレーションでは、指定されたユーザーと SSH 認証鍵を使用してノードマシンにアクセスできることを確認します。
クラスタ リソース
任意
変更可
osEnvironmentConfig.addPackageRepo
省略できます。ブール値(true
| false
)。デフォルトの Docker apt
リポジトリではなく、独自のパッケージ リポジトリ サーバーを使用するかどうかを指定します。独自のパッケージ リポジトリを使用するには、addPackageRepo
を false
に設定します。この機能を使用すると、デプロイメント内の各ベアメタル マシンへのパッケージ リポジトリの追加が省略されます。詳細については、プライベート パッケージ リポジトリ サーバーを使用する をご覧ください。
クラスタ リソース
任意
変更不可
nodeConfig
このセクションには、クラスタノード構成の設定が含まれます。
クラスタ リソース
省略可
変更可(アップグレードのみ)
nodeConfig.containerRuntime
(非推奨)
非推奨です。リリース 1.13.0 以降、Google Distributed Cloud は containerd
をコンテナ ランタイムとしてのみサポートしています。containerRuntime
フィールドは非推奨となっており、生成されたクラスタ構成ファイルから削除されています。Google Distributed Cloud バージョン 1.13.0 以降では、クラスタ構成ファイルにこのフィールドが含まれている場合、値は containerd
である必要があります。
クラスタ リソース
省略可
変更可(アップグレードのみ)
nodeConfig.podDensity
このセクションでは、Pod の密度の構成を指定します。
クラスタ リソース
任意
不変
nodeConfig.podDensity.maxPodsPerNode
省略できます。整数。単一ノードで実行できる Pod の最大数を指定します。セルフマネージド クラスタの場合、maxPodsPerNode
で使用できる値は、高可用性(HA)クラスタの場合は 32
~250
、HA 以外のクラスタの場合は 64
~250
です。ユーザー クラスタの場合、maxPodsPerNode
で使用できる値は 32
~250
です。指定しない場合のデフォルト値は 110
です。クラスタが作成されたら、この値を更新することはできません。
Kubernetes は、各 Pod に一意の IP アドレスが指定されるように、クラスレス ドメイン間ルーティング(CIDR)ブロック を各ノードに割り当てます。CIDR ブロックのサイズは、ノードあたりの最大 Pod 数に対応します。
ノードあたりの最大ポッド数の設定の詳細については、ポッド ネットワーキング をご覧ください。
クラスタ リソース
任意
変更不可
nodeConfig.privateRegistries
プレビュー
このセクションでは、ユーザー クラスタのノードレベルの非公開レジストリ構成を指定します。ノードレベルの非公開レジストリは、ワークロードを使用してイメージの 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
...
管理クラスタの場合、ノードレベルの非公開レジストリは、管理クラスタ構成ファイルの認証情報セクション で指定されます。
非公開レジストリへのノードアクセスの構成の詳細については、非公開レジストリに対して認証を行うノードを構成する をご覧ください。
ノードレベルの非公開レジストリの構成は、バージョン 1.29 クラスタのプレビュー でのみ利用できます。
クラスタ リソース
任意
変更可
nodeConfig.privateRegistries.caCertSecretRef
プレビュー
必要に応じて、このセクションを使用して、非公開レジストリの CA 証明書(サーバールート CA)を保存するために作成された Secret の名前と名前空間を指定します。ローカル レジストリでプライベート TLS 証明書が不要な場合、このブロックは省略できます。
ノードレベルの非公開レジストリの構成は、バージョン 1.29 クラスタのプレビュー でのみ利用できます。
クラスタ リソース
任意
変更可
nodeConfig.privateRegistries.caCertSecretRef.name
プレビュー
省略可。文字列。非公開レジストリの CA 証明書を保存するために作成された Secret の名前。
非公開レジストリへのノードアクセスの構成の詳細については、非公開レジストリに対して認証を行うノードを構成する をご覧ください。
ノードレベルの非公開レジストリの構成は、バージョン 1.29 クラスタのプレビュー でのみ利用できます。
クラスタ リソース
任意
変更可
nodeConfig.privateRegistries.caCertSecretRef.namespace
プレビュー
省略可。文字列。非公開レジストリの CA 証明書を保存するために作成された Secret の名前空間。
非公開レジストリへのノードアクセスの構成の詳細については、非公開レジストリに対して認証を行うノードを構成する をご覧ください。
ノードレベルの非公開レジストリの構成は、バージョン 1.29 クラスタのプレビュー でのみ利用できます。
クラスタ リソース
任意
変更可
nodeConfig.privateRegistries.host
プレビュー
文字列。このフィールドは、単一の非公開レジストリのホストとポートを指定します。ホストは、ドメイン名または IP アドレスで指定できます。http
または https
接頭辞は含めないでください。
ユーザー クラスタに非公開レジストリを指定する場合、host
フィールドは必須です。
ノードレベルの非公開レジストリの構成は、バージョン 1.29 クラスタのプレビュー でのみ利用できます。
クラスタ リソース
任意
変更可
nodeConfig.privateRegistries.pullCredentialSecretRef
プレビュー
必要に応じて、このセクションを使用して、非公開レジストリの認証情報を保存するために作成された Secret の名前と名前空間を指定します。
認証が必要な非公開レジストリへのアクセスをノードに許可するようにユーザー クラスタを構成するときに、pullCredentialSecretRef
ブロックを使用します。
ノードレベルの非公開レジストリの構成は、バージョン 1.29 クラスタのプレビュー でのみ利用できます。
クラスタ リソース
任意
変更可
nodeConfig.privateRegistries.pullCredentialSecretRef.name
プレビュー
省略可。文字列。非公開レジストリの認証情報を保存するために作成された Secret の名前。
非公開レジストリへのノードアクセスの構成の詳細については、非公開レジストリに対して認証を行うノードを構成する をご覧ください。
ノードレベルの非公開レジストリの構成は、バージョン 1.29 クラスタのプレビュー でのみ利用できます。
クラスタ リソース
任意
変更可
nodeConfig.privateRegistries.pullCredentialSecretRef.namespace
プレビュー
省略可。文字列。非公開レジストリの認証情報を保存するために作成された Secret の名前空間。
非公開レジストリへのノードアクセスの構成の詳細については、非公開レジストリに対して認証を行うノードを構成する をご覧ください。
ノードレベルの非公開レジストリの構成は、バージョン 1.29 クラスタのプレビュー でのみ利用できます。
クラスタ リソース
任意
変更可
nodePoolUpgradeStrategy
省略可。このセクションでは、クラスタ内のワーカー ノードプールのアップグレード方法を構成するための設定について説明します。詳細については、並列アップグレード をご覧ください。
クラスタ リソース
任意
変更可
nodePoolUpgradeStrategy.concurrentNodePools
省略できます。ブール値(0
または 1
)。デフォルト: 1
。このフィールドは、1 つのクラスタのすべてのワーカー ノードプールを同時にアップグレードするかどうかを指定します。デフォルトで(1
)は、順次アップグレードします。concurrentNodePools
を 0
に設定すると、クラスタ内のすべてのワーカー ノードプールが並行してアップグレードされます。
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
spec:
...
nodePoolUpgradeStrategy:
concurrentNodePools: 0
...
詳細については、ノードプールのアップグレード戦略 をご覧ください。
各ワーカー ノードプール内のノードは、対応する NodePool 仕様のアップグレード戦略 に従ってアップグレードされます。
クラスタ リソース
任意
変更可
nodePoolUpgradeStrategy.pause
省略可。ブール値(true
または false
)。デフォルト:
false
。このフィールドは、アクティブなクラスタ アップグレードを一時停止または再開するかどうかを指定します。
Google Distributed Cloud 1.29
アップグレードの一時停止と再開の機能は、すべてのコントロール プレーン ノードがマイナー バージョン 1.29 以降であるクラスタで一般提供されています。バージョン 1.29 のクラスタの場合、この機能はデフォルトで有効になっています。
Google Distributed Cloud 1.28
アップグレードの一時停止と再開機能は、すべてのコントロール プレーン ノードがマイナー バージョン 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
...
詳しくは、アップグレードの一時停止と再開 をご覧ください。
クラスタ リソース
任意
変更可
periodicHealthCheck
このセクションでは、定期的なヘルスチェックの構成情報について説明します。クラスタ リソースで定期的なヘルスチェックに使用できる設定は enable
フィールドのみです。詳細については、定期的なヘルスチェック をご覧ください。
クラスタ リソース
任意
変更可
periodicHealthCheck.enable
省略可。ブール値(true
|false
)。クラスタの定期的なヘルスチェックを有効または無効にします。定期的なヘルスチェックは、すべてのクラスタでデフォルトで有効になっています。クラスタの定期的なヘルスチェックを無効にするには、periodicHealthCheck.enable
フィールドを false
に設定します。詳細については、定期的なヘルスチェックを無効にする をご覧ください。
クラスタ リソース
任意
変更可
profile
省略可。文字列。スタンドアロン クラスタの profile
が edge
に設定されている場合、クラスタのリソース消費は最小限に抑えられます。Edge プロファイルはスタンドアロン クラスタでのみ使用できます。Edge プロファイルはシステム リソースの要件が軽減されているため、リソースの制約が厳しい Edge デバイスにおすすめします。Edge プロファイルに関連するハードウェア要件については、Edge プロファイルを使用するスタンドアロン クラスタのリソース要件 をご覧ください。
クラスタ リソース
任意
不変
proxy
ネットワークがプロキシ サーバーの背後にある場合は、このセクションに入力します。
それ以外の場合は、このセクションを削除します。
クラスタ リソース
任意
変更可
proxy.noProxy
文字列。プロキシ サーバーを経由しない IP アドレス、IP アドレス範囲、ホスト名、ドメイン名のカンマ区切りのリスト。Google Distributed Cloud がこれらのアドレス、ホスト、ドメインのいずれかにリクエストを送信する場合、そのリクエストは直接送信されます。
クラスタ リソース
任意
不変
proxy.url
文字列。プロキシ サーバーの HTTP アドレス。スキームのデフォルト ポートと同じ場合でも、ポート番号を含めます。
次のような例になります。
proxy:
url: "http://my-proxy.example.local:80"
noProxy: "10.151.222.0/24, my-host.example.local,10.151.2.1"
クラスタ リソース
任意
変更可
clusterSecurity
このセクションでは、クラスタのセキュリティ関連の設定を指定します。
クラスタ リソース
任意
変更可
clusterSecurity.enableSeccomp
(プレビュー )
プレビュー
このプロダクトまたは機能には、サービス固有の利用規約 の「一般的なサービス規約」の「pre-GA サービス規約」が適用されます。
一般提供前のプロダクトと機能は「現状のまま」ご利用いただけますが、サポートが制限される場合があります。
詳しくは、リリース ステージの説明 をご覧ください。
省略可。ブール値(true
|false
)。クラスタ全体の seccomp
を有効または無効にします。このフィールドを無効にすると、クラスタ構成ファイルに seccomp
プロファイルのないコンテナが未制限で実行されます。このフィールドを有効にすると、同じコンテナがコンテナ ランタイムのデフォルトの seccomp
プロファイルを使用して保護されます。この機能はデフォルトで有効になっています。
クラスタ作成後、このフィールドはアップグレード中にのみ切り替えることができます。
詳細については、seccomp
を使用してコンテナを制限する をご覧ください。
クラスタ リソース
省略可
変更可(アップグレードのみ)
clusterSecurity.enableRootlessContainers
省略可。ブール値(true
|false
)。ルートレス ベアメタル システム コンテナを有効または無効にします。このフィールドが有効になっている場合、ベアメタル システム コンテナは、2000~5000 の範囲のユーザー ID を持つ root 以外のユーザーとして実行されます。無効にすると、root ユーザーとしてベアメタル システム コンテナが実行されます。この機能はデフォルトで有効になっています。root ユーザーとしてコンテナを実行すると、セキュリティ リスクが生じるため、この機能をオフにしないことを強くおすすめします。クラスタ作成後、このフィールドはアップグレード中にのみ切り替えることができます。詳細については、コンテナを root ユーザーとして実行しない をご覧ください。
クラスタ リソース
省略可
変更可(アップグレードのみ)
clusterSecurity.authorization
省略可。認可により、クラスタへのユーザー アクセスが構成されます。
クラスタ リソース
任意
変更可
clusterSecurity.authorization.clusterAdmin
省略できます。このクラスタのクラスタ管理者を指定します。
クラスタ リソース
任意
変更可
clusterSecurity.authorization.clusterAdmin.gcpAccounts
省略可。gcpAccounts
フィールドは、Kubernetes ロールベース アクセス制御(RBAC)のロール clusterrole/cluster-admin
が付与されたアカウントのリストを指定します。このロールがあるアカウントには、すべての名前空間内のクラスタ内のすべてのリソースに対する完全アクセス権があります。このフィールドでは、指定したアカウントで 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
を指定することはできません。
クラスタ リソース
任意
変更可
clusterSecurity.startUIDRangeRootlessContainers
省略可。データ型は int です。デフォルト値: 2000
。Google Distributed Cloud のシステム コンテナは、クラスタのインストールと管理に役立ちます。これらのコンテナで使用されるユーザー ID(UID)とグループ ID(GID)は、クラスタ仕様の startUIDRangeRootlessContainers
フィールドで制御できます。システム コンテナは、startUIDRangeRootlessContainers
~startUIDRangeRootlessContainers
+ 2999 の範囲(デフォルトでは 2000
~4999
の範囲)の UID と GID を使用します。これは、を指定します。startUIDRangeRootlessContainers
を更新するときは、システム コンテナで使用される UID と GID のスペースが、ユーザー ワークロードに割り当てられた UID と GID のスペースと重複しないように値を選択します。startUIDRangeRootlessContainers
値はアップグレード時にのみ変更できます。
使用できる値: 1000
~57000
次に例を示します。
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: name-of-cluster
spec:
clusterSecurity:
startUIDRangeRootlessContainers: 5000
...
詳細については、コンテナを root ユーザーとして実行しない をご覧ください。
クラスタ リソース
省略可
変更可(アップグレードのみ)
storage.lvpNodeMounts.path
必須。文字列。path
フィールドは、マウントされたディスクを検出できるホストマシンのパスを指定するために使用します。それぞれのマウントに対してローカル PersistentVolume(PV)が作成されます。デフォルトのパスは /mnt/localpv-share
です。ノードマウントを構成する手順については、LVP ノードマウントの構成 をご覧ください。
クラスタ リソース
必須
変更不可
storage
このセクションには、クラスタ ストレージの設定が含まれます。
クラスタ リソース
必須
不変
storage.lvpNodeMounts
このセクションでは、マウントされたディスクで使用するローカル永続ボリュームの構成(パス)を指定します。これらのディスクは、自身でフォーマットしてマウントする必要があります。このタスクは、クラスタの作成前でも作成後でも行えます。詳細については、LVP ノードのマウント をご覧ください。
クラスタ リソース
必須
不変
storage.lvpShare
このセクションでは、共有ファイル システムのサブディレクトリで使用するローカル永続ボリュームの構成を指定します。これらのサブディレクトリは、クラスタの作成時に自動的に作成されます。
詳細については、LVP 共有 をご覧ください。
クラスタ リソース
必須
不変
storage.lvpShare.path
必須。文字列。path
フィールドは、サブディレクトリを作成できるホストマシンのパスを指定するために使用します。サブディレクトリごとにローカル PersistentVolume(PV)が作成されます。LVP 共有を構成する手順については、LVP 共有の構成 をご覧ください。
クラスタ リソース
必須
不変
storage.lvpShare.numPVUnderSharedPath
必須。文字列。lvpShare.path
内に作成するサブディレクトリの数を指定します。デフォルト値は 5
です。LVP 共有を構成する手順については、LVP 共有の構成 をご覧ください。
クラスタ リソース
必須
不変
storage.lvpShare.storageClassName
必須。文字列。永続ボリュームの作成に使用する StorageClass を指定します。StorageClass はクラスタの作成時に作成されます。デフォルト値は local-shared
です。LVP 共有を構成する手順については、LVP 共有の構成 をご覧ください。
クラスタ リソース
任意
不変
type
必須。文字列。クラスタのタイプを指定します。標準デプロイモデルは、単一の管理クラスタと、管理クラスタが管理する 1 つ以上のユーザー クラスタで構成されます。Google Distributed Cloud は次のタイプのクラスタをサポートしています。
管理 - ユーザー クラスタの管理に使用されるクラスタ
ユーザー - ワークロードの実行に使用されるクラスタ。
ハイブリッド - 管理とワークロード両方のための単一クラスタで、ユーザー クラスタを管理することも可能
スタンドアロン - 自身を管理でき、ワークロードを実行できるが、他のユーザー クラスタの作成または管理はできない単一クラスタ。
クラスタタイプはクラスタの作成時に指定され、更新やアップグレードのために変更できません。クラスタの作成方法については、クラスタの作成: 概要 をご覧ください。
使用できる値: admin
| user
| hybrid
| standalone
既存のクラスタでは、この値は変更できません。
クラスタ リソース
必須
不変
name
必須。文字列。通常、名前空間名は cluster-CLUSTER_NAME
のパターンを使用しますが、Google Distributed Cloud リリース 1.7.2 以降では、cluster-
接頭辞は厳密に必須ではありません。
既存のクラスタでは、この値は変更できません。
名前空間リソース
必須
不変
clusterName
文字列。必須。ノードプールを追加するクラスタの名前。関連付けられたクラスタと同じ名前空間にノードプール リソースを作成し、このフィールドでクラスタ名を参照します。詳細については、クラスタ内のノードプールの追加と削除 をご覧ください。
次のような例になります。
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 リソース
必須
不変
nodes
省略可。IP(IPv4)アドレスの配列。これにより、ワーカーノードのノードプールが定義されます。
NodePool リソース
任意
変更可
nodes.address
省略可。文字列(IPv4 アドレス)。ワーカーノードのプールを構成するノードの 1 つ以上の IP アドレス。
NodePool リソース
任意
変更可
kubeletConfig
省略可。このセクションでは、コントロール プレーン ノードプール内のすべてのノードで 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 リソース
任意
変更可
kubeletConfig.registryBurst
省略できます。整数(負ではない)。リクエストの急増に対応するために、処理キューに追加できるイメージの pull リクエストの最大数を指定します。pull が開始すると、新しいリクエストをキューに追加できます。デフォルト値は 10 です。このフィールドは、registryBurst
kubelet 構成(v1beta1)オプションに対応します。
registryPullQPS
の値は、この設定よりも優先されます。たとえば、デフォルトの設定では、最大 10 件の同時クエリのバーストが許可されていますが、デフォルトのレート(秒間クエリ数 5 件)で処理する必要があります。このバースト動作は、registryPullQPS
が 0
より大きい場合にのみ使用されます。
このフィールドは、クラスタを作成、更新、アップグレードするたびに設定でき、設定はクラスタのアップグレード後も保持されます。詳細については、kubelet イメージの pull 設定を構成する をご覧ください。
NodePool リソース
任意
変更可
kubeletConfig.registryPullQPS
省略できます。整数(負ではない)。Container Registry イメージの pull に対するクエリの処理速度を秒間クエリ数(QPS)で指定します。
registryPullQPS
が 0 より大きい値に設定されている場合、クエリレートは秒間クエリ数の数値に制限されます。registryPullQPS
が 0
に設定されている場合、クエリレートに制限はありません。デフォルト値は 5
です。
このフィールドは、registryPullQPS
kubelet 構成(v1beta1)オプションに対応します。
このフィールドは、クラスタを作成、更新、アップグレードするたびに設定でき、設定はクラスタのアップグレード後も保持されます。詳細については、kubelet イメージの pull 設定を構成する をご覧ください。
NodePool リソース
任意
変更可
kubeletConfig.serializeImagePulls
省略できます。ブール値(true
|false
)。このフィールドは、Container Registry の pull が並列処理されるか、一度に 1 つずつ処理されるかを指定します。デフォルトは true
で、pull を 1 つずつ処理するように指定します。false
に設定すると、kubelet はイメージを並列で pull します。このフィールドは、serializeImagePulls
kubelet 構成(v1beta1)オプションに対応します。
このフィールドは、クラスタを作成、更新、アップグレードするたびに設定でき、設定はクラスタのアップグレード後も保持されます。詳細については、kubelet イメージの pull 設定を構成する をご覧ください。
NodePool リソース
任意
変更可
taints
省略可。オブジェクト。ノード taint を使用してノードをマークすると、スケジューラは特定の Pod でのそのノードの使用を回避または禁止します。taint は、Key-Value ペアと関連付けられた効果で構成されます。key
と value
の値は taint を識別するために使用する文字列であり、effect
の値はノードに対する Pod の処理方法を指定します。taints
オブジェクトには複数の taint を含めることができます。
effect
ラベルには、次のいずれかの値が設定されます。
NoSchedule
- 一致する容認機能を持たない 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 リソース
任意
変更可
labels
省略可。マッピング(Key-Value ペア)。baremetal.cluster.gke.io/label-taint-no-sync
アノテーションがクラスタに適用されていない限り、ラベルはノードプールのノードに対して整合されます。ラベルの詳細については、ラベルとセレクタ をご覧ください。
NodePool リソース
任意
変更可
upgradeStrategy
省略できます。このセクションでは、ワーカー ノードプール内のノードのアップグレード戦略を構成するための設定について説明します。詳細については、並列アップグレード をご覧ください。注: コントロール プレーンまたはロードバランサのノードプールには、このセクションを追加しないでください。
NodePool リソース
任意
変更可
upgradeStrategy.parallelUpgrade
省略できます。このセクションでは、ワーカーノードプールの並列ノード アップグレードを構成するための設定について説明します。一般的なデフォルトのクラスタ アップグレードでは、各クラスタノードが順次アップグレードされます。ワーカー ノードプールは、クラスタをアップグレードするときに複数のノードが同時にアップグレードするように構成できます。ノードを並行してアップグレードすると、特に数百のノードを持つクラスタの場合に、クラスタのアップグレードがかなり速くなります。
ワーカー ノードプールでは、同時にアップグレードするノードの数を指定し、アップグレード プロセス全体でワークロードを実行可能なノードの数の最小しきい値を設定できます。
詳細については、ノードのアップグレード戦略 をご覧ください。
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 リソース
任意
変更可
upgradeStrategy.parallelUpgrade.concurrentNodes
省略できます。整数(正)。デフォルト: 1
最大: 15
デフォルト(1
)では、ノードが順次アップグレードされます。concurrentNodes
を 1 より大きい値に設定すると、このフィールドは並列でアップグレードするノードの数を指定します。concurrentNodes
の次の制約に注意してください。
この値は、ノードプール内のノード数の 50% または固定数 15
よりも小さくする必要があります。たとえば、ノードプールに 40 個のノードがある場合、10
より大きい値を指定することはできません。ノードプールに 100 個のノードがある場合、15
が指定できる最大値です。
このフィールドを minimumAvailableNodes
フィールドとともに使用する場合、合計値は、ノードプール内のノードの総数を超えることはできません。たとえば、ノードプールに 20 個のノードがあり、minimumAvailableNodes
が 18
に設定されている場合、concurrentNodes
は 2
以下にする必要があります。
並列アップグレードは、Pod Disruption Budget(PDB) を考慮しません。ワークロードが中断の影響を受けやすい場合は、minimumAvailableNodes
を指定して、アップグレード プロセス全体を通して一定数のノードがワークロードを実行し続けるようにすることをおすすめします。詳細については、並列アップグレード をご覧ください。
NodePool リソース
任意
変更可
upgradeStrategy.parallelUpgrade.minimumAvailableNodes
省略できます。整数(負ではない)。デフォルト: concurrentNodes
によって異なります。minimumAvailableNodes
のデフォルト値の詳細については、並列アップグレードのデフォルト をご覧ください。minimumAvailableNodes
を使用すると、アップグレード プロセス全体を通じて維持する必要があるノードプール内のノード数を指定できます。ノードは、アクティブにアップグレードされている場合、使用不可と見なされます。次の条件のいずれかに該当する場合、ノードは使用不可とみなされます。
1 個のノードがメンテナンス モードである
1 個のノードが調整中である
アップグレード中にノードが停止している
このフィールドを concurrentNodes
フィールドとともに使用する場合、合計値は、ノードプール内のノードの総数を超えることはできません。たとえば、ノードプールに 20 個のノードがあり、concurrentNodes
が 10
に設定されている場合、minimumAvailableNodes
は 10
以下にする必要があります。
minimumAvailableNodes
の値を大きくすると、Pod のスケジューリング時の容量の問題が最小限に抑えられるため、クラスタのアップグレード中にワークロードを保護できます。ただし、minimumAvailableNodes
の値が大きいと、ノードが利用可能になるまでアップグレードが待機するリスクが高くなります。詳細については、並列アップグレード をご覧ください。
NodePool リソース
任意
変更可
privateRegistries
プレビュー
省略可。このセクションを使用して、ワークロード イメージに使用する非公開レジストリを指定します。クラスタ構成ファイルの認証情報セクションで非公開レジストリを構成するこの方法は、ワーカー ノードプールのみがあるハイブリッド クラスタまたはスタンドアロン クラスタを対象としています。
非公開レジストリへのノードアクセスの構成の詳細については、非公開レジストリに対して認証を行うノードを構成する をご覧ください。
便宜上、bmctl
は、クラスタ仕様外の privateRegistries
フィールド(認証情報 Key-Value ペアなど)を受け入れます。例については、プライベート レジストリの設定手順 をご覧ください。
次のような例になります。
---
gcrKeyPath: baremetal/gcr.json
sshPrivateKeyPath: .ssh/id_rsa
...
privateRegistries:
- host: 10.200.0.2:5007
caCertPath: /root/cert.pem
pullCredentialConfigPath: /root/dockerconfig.json
...
認証情報
任意
変更可
privateRegistries.host
プレビュー
文字列。このフィールドは、単一の非公開レジストリのホストとポートを指定します。ホストは、ドメイン名または IP アドレスで指定できます。http
または https
接頭辞は含めないでください。
ハイブリッド クラスタまたはスタンドアロン クラスタの非公開レジストリを指定する場合、host
フィールドは必須です。
次のような例になります。
- host: 10.200.0.2:5007
認証情報
任意
変更可
privateRegistries.caCertPath
プレビュー
省略可。文字列。CA 証明書ファイル(サーバールート CA)のパス(レジストリ サーバーがプライベート TLS 証明書を使用している場合)。ローカル レジストリでプライベート TLS 証明書が不要な場合、このフィールドは省略できます。
認証情報
任意
変更可
privateRegistries.pullCredentialConfigPath
プレビュー
省略可。文字列。Docker CLI 構成ファイル (config.json
)のパス。Docker では、認証設定が構成ファイルに保存されます。このフィールドは、ノードレベルの非公開レジストリの使用にのみ適用されます。
ハイブリッド クラスタまたはスタンドアロン クラスタを構成して、認証が必要な非公開レジストリにノードがアクセスできるようにする場合は、pullCredentialConfigPath
フィールドを使用します。
認証情報
任意
変更可
registryMirrors
省略可。このセクションを使用して、Container Registry(gcr.io
)の代わりにクラスタのインストールに使用するレジストリ ミラーを指定します。レジストリ ミラーの使用の詳細については、レジストリ ミラーを使用した Google Distributed Cloud のインストール をご覧ください。
便宜上、bmctl
は、クラスタ仕様外の registryMirrors
フィールド(認証情報 Key-Value ペアなど)を受け入れます。例については、レジストリ ミラーの設定手順 をご覧ください。
次のような例になります。
registryMirrors:
- endpoint: https://172.18.0.20:5000
caCertPath: /root/ca.crt
pullCredentialConfigPath: /root/.docker/config.json
hosts:
- somehost.io
- otherhost.io
レジストリ ミラー
省略可
変更可
registryMirrors.endpoint
文字列。ミラーのエンドポイント。レジストリ サーバーの IP アドレスとポート番号で構成されます。必要に応じて、レジストリ サーバーで、ルート名前空間ではなく独自の名前空間を使用できます。名前空間を使用しない場合、エンドポイントの形式は REGISTRY_IP :PORT
です。名前空間を使用する場合、エンドポイントの形式は REGISTRY_IP :PORT /v2/NAMESPACE
です。名前空間を指定するときは、/v2
が必要です。
レジストリ ミラーを指定する場合、endpoint
フィールドは必須です。複数のミラー / エンドポイントを指定できます。
次のような例になります。
- endpoint: https://172.18.0.20:5000/v2/test-namespace
レジストリ ミラー
省略可
変更可
registryMirrors.caCertPath
省略可。文字列。CA 証明書ファイル(サーバールート CA)のパス(レジストリ サーバーがプライベート TLS 証明書を使用している場合)。ローカル レジストリでプライベート TLS 証明書が不要な場合、このフィールドは省略できます。
レジストリ ミラー
省略可
変更可
registryMirrors.pullCredentialConfigPath
省略可。文字列。Docker CLI 構成ファイル (config.json
)のパス。Docker では、認証設定が構成ファイルに保存されます。このフィールドはレジストリ ミラーの使用にのみ適用されます。レジストリ サーバーで認証に Docker 構成ファイルが必要ない場合は、このフィールドを省略できます。
次のような例になります。
registryMirrors:
- endpoint: https://172.18.0.20:5000
caCertPath: /root/ca.crt
pullCredentialConfigPath: /root/.docker/config.json
レジストリ ミラー
省略可
変更可
registryMirrors.hosts
省略できます。特定のレジストリ ミラー(endpoint
)用にローカルにミラーリングされたホストのドメイン名の配列。コンテナ ランタイムは、指定されたホストからのイメージの pull リクエストを検出すると、まずローカル レジストリ ミラーを確認します。詳細については、レジストリ ミラーからクラスタを作成する をご覧ください。
次のような例になります。
registryMirrors:
- endpoint: https://172.18.0.20:5000
caCertPath: /root/ca.crt
pullCredentialConfigPath: /root/.docker/config.json
hosts:
- somehost.io
- otherhost.io
レジストリ ミラー
省略可
変更可
認証情報
Google Distributed Cloud の bmctl
によって生成されるクラスタ構成ファイルには、ローカル ファイル システム内の認証情報と鍵ファイルへのパスを指定するためのフィールドが含まれています。クラスタを相互に、および Google Cloud プロジェクトに接続するために必要な認証情報と鍵。
これらの Key-Value ペア フィールドは、Kubernetes クラスタのカスタム リソースの有効な要素ではありません。この形式は bmctl
でのみ認識され、標準の Kubernetes ツールでは認識されません。kubectl
を使用してクラスタに変更を適用する場合は、認証情報と鍵フィールドを削除します。
次のような例になります。
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
認証情報
任意
変更可
gcrKeyPath
文字列。Container Registry サービス アカウント キーへのパス。Container Registry サービス アカウント は、Google Cloud サービスを操作するときに Container Registry の代理として動作するサービス エージェントです。
認証情報
任意
変更可
sshPrivateKeyPath
文字列。SSH 秘密鍵へのパス。Node へのアクセスには SSH が必要です。
認証情報
任意
変更可
gkeConnectAgentServiceAccountKeyPath
文字列。エージェントのサービス アカウント キーへのパス。
Google Distributed Cloud は、このサービス アカウントを使用して Google Distributed Cloud と Google Cloud の間の接続を維持します。
このサービス アカウントを構成する手順については、Connect で使用するサービス アカウントの構成 をご覧ください。
認証情報
任意
変更可
gkeConnectRegisterServiceAccountKeyPath
文字列。登録サービス アカウント キーのパス。
Google Distributed Cloud は、このサービス アカウントを使用してユーザー クラスタを Google Cloud に登録します。
このサービス アカウントを構成する手順については、Connect で使用するサービス アカウントの構成 をご覧ください。
認証情報
任意
変更可
cloudOperationsServiceAccountKeyPath
文字列。オペレーション サービス アカウント キーへのパス。
Google Distributed Cloud は、オペレーション サービス アカウントを使用して、Google Cloud オブザーバビリティで認証し、Logging API と Monitoring API にアクセスします。
このサービス アカウントを構成する手順については、Logging と Monitoring で使用するサービス アカウントの構成 をご覧ください。
認証情報
任意
変更可
ipv4
IPv4 CIDR 範囲の構成を定義します。ClusterCidrConfig
リソースには、ipv4
フィールドまたは ipv6
フィールドのうち少なくとも 1 つを指定する必要があります。
ClusterCIDRConfig リソース
省略可
不変
ipv4.cidr
文字列。IPv4 ノードの CIDR ブロックを設定します。ノードに設定できるのは、各ファミリーの 1 つの範囲のみです。この CIDR ブロックは、Cluster
リソースに記載されている Pod CIDR と一致する必要があります。
次のような例になります。
ipv4:
cidr: "10.1.0.0/16"
ClusterCIDRConfig リソース
必須
変更不可
ipv4.perNodeMaskSize
データ型は int です。ノードの IPv4 CIDR ブロックのマスクサイズを定義します。たとえば、値 24
はネットマスク /24
に変換されます。ノードの CIDR ブロック ネットマスクが、kubelet がスケジュール設定できる Pod の最大量より多いことを確認します。これは、kubelet の --max-pods
フラグで定義されています。
ClusterCIDRConfig リソース
必須
変更不可
ipv6
IPv6 CIDR 範囲の構成を定義します。ClusterCidrConfig
リソースには、ipv4
フィールドまたは ipv6
フィールドのうち少なくとも 1 つを指定する必要があります。
ClusterCIDRConfig リソース
省略可
不変
ipv6.cidr
文字列。IPv6 ノードの CIDR ブロックを設定します。ノードに設定できるのは、各ファミリーの 1 つの範囲のみです。
次のような例になります。
ipv6:
cidr: "2620:0:1000:2631:3:10:3:0/112"
ClusterCIDRConfig リソース
必須
変更不可
ipv6.perNodeMaskSize
データ型は int です。ノードの IPv6 CIDR ブロックのマスクサイズを定義します。たとえば、値 120
はネットマスク /120
に変換されます。ノードの CIDR ブロック ネットマスクが、kubelet がスケジュール設定できる Pod の最大量より多いことを確認します。これは、kubelet の --max-pods
フラグで定義されています。
ClusterCIDRConfig リソース
必須
変更不可
nodeSelector.matchLabels
CIDR 構成を適用するノードを定義します。空のノードセレクタは、すべてのノードに適用されるデフォルトとして機能します。
次のような例になります。
nodeSelector:
matchLabels:
baremetal.cluster.gke.io/node-pool: "workers"
ClusterCIDRConfig リソース
省略可
変更可