リファレンス

Edit This Page

フィーチャーゲート

このページでは管理者がそれぞれのKubernetesコンポーネントで指定できるさまざまなフィーチャーゲートの概要について説明しています。

概要

フィーチャーゲートはアルファ機能または実験的機能を記述するkey=valueのペアのセットです。

管理者は各コンポーネントで--feature-gatesコマンドラインフラグを使用することで機能をオンまたはオフにできます。各コンポーネントはそれぞれのコンポーネント固有のフィーチャーゲートの設定をサポートします。 すべてのコンポーネントのフィーチャーゲートの全リストを表示するには-hフラグを使用します。 kubeletなどのコンポーネントにフィーチャーゲートを設定するには以下のようにリストの機能ペアを--feature-gatesフラグを使用して割り当てます。

--feature-gates="...,DynamicKubeletConfig=true"

次の表は各Kubernetesコンポーネントに設定できるフィーチャーゲートの概要です。

  • 「導入開始バージョン」列は機能が導入されたとき、またはリリース段階が変更されたときのKubernetesリリースバージョンとなります。
  • 「最終利用可能バージョン」列は空ではない場合はフィーチャーゲートを使用できる最後のKubernetesリリースバージョンとなります。
機能名デフォルト値ステージ導入開始バージョン最終利用可能バージョン
AcceleratorsfalseAlpha1.61.10
AdvancedAuditingfalseAlpha1.71.7
AdvancedAuditingtrueBeta1.81.11
AdvancedAuditingtrueGA1.12-
AffinityInAnnotationsfalseAlpha1.61.7
AllowExtTrafficLocalEndpointsfalseBeta1.41.6
AllowExtTrafficLocalEndpointstrueGA1.7-
APIListChunkingfalseAlpha1.81.8
APIListChunkingtrueBeta1.9
APIResponseCompressionfalseAlpha1.7
AppArmortrueBeta1.4
AttachVolumeLimittrueAlpha1.111.11
AttachVolumeLimittrueBeta1.12
BlockVolumefalseAlpha1.9
BlockVolumetrueBeta1.13-
BoundServiceAccountTokenVolumefalseAlpha1.13
CPUManagerfalseAlpha1.81.9
CPUManagertrueBeta1.10
CRIContainerLogRotationfalseAlpha1.101.10
CRIContainerLogRotationtrueBeta1.11
CSIBlockVolumefalseAlpha1.111.13
CSIBlockVolumetrueBeta1.14
CSIDriverRegistryfalseAlpha1.121.13
CSIDriverRegistrytrueBeta1.14
CSIInlineVolumefalseAlpha1.15-
CSIMigrationfalseAlpha1.14
CSIMigrationAWSfalseAlpha1.14
CSIMigrationAzureDiskfalseAlpha1.15
CSIMigrationAzureFilefalseAlpha1.15
CSIMigrationGCEfalseAlpha1.14
CSIMigrationOpenStackfalseAlpha1.14
CSINodeInfofalseAlpha1.121.13
CSINodeInfotrueBeta1.14
CSIPersistentVolumefalseAlpha1.91.9
CSIPersistentVolumetrueBeta1.101.12
CSIPersistentVolumetrueGA1.13-
CustomCPUCFSQuotaPeriodfalseAlpha1.12
CustomPodDNSfalseAlpha1.91.9
CustomPodDNStrueBeta1.101.13
CustomPodDNStrueGA1.14-
CustomResourcePublishOpenAPIfalseAlpha1.141.14
CustomResourcePublishOpenAPItrueBeta1.15
CustomResourceSubresourcesfalseAlpha1.101.11
CustomResourceSubresourcestrueBeta1.11-
CustomResourceValidationfalseAlpha1.81.8
CustomResourceValidationtrueBeta1.9
CustomResourceWebhookConversionfalseAlpha1.131.14
CustomResourceWebhookConversiontrueBeta1.15
DebugContainersfalseAlpha1.10
DevicePluginsfalseAlpha1.81.9
DevicePluginstrueBeta1.10
DryRuntrueBeta1.13
DynamicAuditingfalseAlpha1.13
DynamicKubeletConfigfalseAlpha1.41.10
DynamicKubeletConfigtrueBeta1.11
DynamicProvisioningSchedulingfalseAlpha1.111.11
DynamicVolumeProvisioningtrueAlpha1.31.7
DynamicVolumeProvisioningtrueGA1.8
EnableEquivalenceClassCachefalseAlpha1.8
ExpandCSIVolumesfalseAlpha1.14
ExpandInUsePersistentVolumesfalseAlpha1.111.14
ExpandInUsePersistentVolumestrueBeta1.15
ExpandPersistentVolumesfalseAlpha1.81.10
ExpandPersistentVolumestrueBeta1.11
ExperimentalCriticalPodAnnotationfalseAlpha1.5
ExperimentalHostUserNamespaceDefaultingfalseBeta1.5
GCERegionalPersistentDisktrueBeta1.101.12
GCERegionalPersistentDisktrueGA1.13-
HugePagesfalseAlpha1.81.9
HugePagestrueBeta1.101.13
HugePagestrueGA1.14
HyperVContainerfalseAlpha1.10
InitializersfalseAlpha1.71.13
Initializers-Deprecated1.14
KubeletConfigFilefalseAlpha1.81.9
KubeletPluginsWatcherfalseAlpha1.111.11
KubeletPluginsWatchertrueBeta1.121.12
KubeletPluginsWatchertrueGA1.13-
KubeletPodResourcesfalseAlpha1.131.14
KubeletPodResourcestrueBeta1.15
LocalStorageCapacityIsolationfalseAlpha1.71.9
LocalStorageCapacityIsolationtrueBeta1.10
LocalStorageCapacityIsolationFSQuotaMonitoringfalseAlpha1.15
MountContainersfalseAlpha1.9
MountPropagationfalseAlpha1.81.9
MountPropagationtrueBeta1.101.11
MountPropagationtrueGA1.12
NodeLeasefalseAlpha1.121.13
NodeLeasetrueBeta1.14
NonPreemptingPriorityfalseAlpha1.15
PersistentLocalVolumesfalseAlpha1.71.9
PersistentLocalVolumestrueBeta1.101.13
PersistentLocalVolumestrueGA1.14
PodPriorityfalseAlpha1.81.10
PodPrioritytrueBeta1.111.13
PodPrioritytrueGA1.14
PodReadinessGatesfalseAlpha1.111.11
PodReadinessGatestrueBeta1.121.13
PodReadinessGatestrueGA1.14-
PodShareProcessNamespacefalseAlpha1.10
PodShareProcessNamespacetrueBeta1.12
ProcMountTypefalseAlpha1.12
PVCProtectionfalseAlpha1.91.9
RemainingItemCountfalseAlpha1.15
ResourceLimitsPriorityFunctionfalseAlpha1.9
RequestManagementfalseAlpha1.15
ResourceQuotaScopeSelectorsfalseAlpha1.111.11
ResourceQuotaScopeSelectorstrueBeta1.12
RotateKubeletClientCertificatetrueBeta1.8
RotateKubeletServerCertificatefalseAlpha1.71.11
RotateKubeletServerCertificatetrueBeta1.12
RunAsGrouptrueBeta1.14
RuntimeClasstrueBeta1.14
SCTPSupportfalseAlpha1.12
ServerSideApplyfalseAlpha1.14
ServiceLoadBalancerFinalizerfalseAlpha1.15
ServiceNodeExclusionfalseAlpha1.8
StorageObjectInUseProtectiontrueBeta1.101.10
StorageObjectInUseProtectiontrueGA1.11
StorageVersionHashfalseAlpha1.141.14
StorageVersionHashtrueBeta1.15
StreamingProxyRedirectstrueBeta1.5
SupportIPVSProxyModefalseAlpha1.81.8
SupportIPVSProxyModefalseBeta1.91.9
SupportIPVSProxyModetrueBeta1.101.10
SupportIPVSProxyModetrueGA1.11
SupportNodePidsLimitfalseAlpha1.141.14
SupportNodePidsLimittrueBeta1.15
SupportPodPidsLimitfalseAlpha1.101.13
SupportPodPidsLimittrueBeta1.14
SysctlstrueBeta1.11
TaintBasedEvictionsfalseAlpha1.61.12
TaintBasedEvictionstrueBeta1.13
TaintNodesByConditionfalseAlpha1.81.11
TaintNodesByConditiontrueBeta1.12
TokenRequestfalseAlpha1.101.11
TokenRequesttrueBeta1.12
TokenRequestProjectionfalseAlpha1.111.11
TokenRequestProjectiontrueBeta1.12
TTLAfterFinishedfalseAlpha1.12
VolumePVCDataSourcefalseAlpha1.15
VolumeSchedulingfalseAlpha1.91.9
VolumeSchedulingtrueBeta1.101.12
VolumeSchedulingtrueGA1.13
VolumeSubpathEnvExpansionfalseAlpha1.141.14
VolumeSubpathEnvExpansiontrueBeta1.15
VolumeSnapshotDataSourcefalseAlpha1.12-
ScheduleDaemonSetPodsfalseAlpha1.111.11
ScheduleDaemonSetPodstrueBeta1.12
WatchBookmarkfalseAlpha1.15
WindowsGMSAfalseAlpha1.14

機能を使用する

機能ステージ

機能には AlphaBetaGA の段階があります。 Alpha 機能とは:

  • デフォルトでは無効になっています。
  • バグがあるかもしれません。機能を有効にするとバグが発生する可能性があります。
  • 機能のサポートは予告無しにいつでも削除される場合があります。
  • APIは今後のソフトウェアリリースで予告なく互換性の無い変更が行われる場合があります。
  • バグが発生するリスクが高く長期的なサポートはないため、短期間のテストクラスターでのみ使用することをお勧めします。

Beta 機能とは:

  • デフォルトで有効になっています。
  • この機能は十分にテストされていて、有効にすることは安全と考えられます。
  • 詳細は変更される可能性がありますが、機能全体のサポートは削除されません。
  • オブジェクトのスキーマやセマンティックは、その後のベータ版または安定版リリースで互換性の無い変更が行われる場合があります。互換性の無い変更が行われた場合には次のバージョンへの移行手順を提供します。これにはAPIオブジェクトの削除、編集、および再作成が必要になる場合があります。バージョンアップにはいくつかの対応が必要な場合があります。これには機能に依存するアプリケーションのダウンタイムが発生する場合があります。
  • 今後のリリースで互換性の無い変更が行われる可能性があるため、ビジネスクリティカルでない使用のみが推奨されます。個別にアップグレードできる複数のクラスターがある場合はこの制限を緩和できる場合があります。
備考: ベータ版 の機能を試してフィードバックをお寄せください! GAになってからさらなる変更を加えることは現実的ではない場合があります。

GA 機能とは(GA 機能は 安定版 機能とも呼ばれます):

  • フィーチャーゲートの設定は不要になります。
  • 機能の安定版は後続バージョンでリリースされたソフトウェアで使用されます。

フィーチャーゲート

各フィーチャーゲートは特定の機能を有効/無効にするように設計されています。

  • Accelerators: DockerでのNvidia GPUのサポートを有効にします。
  • AdvancedAuditing: 高度な監査機能を有効にします。
  • AffinityInAnnotations(非推奨): Podのアフィニティまたはアンチアフィニティを有効にします。
  • AllowExtTrafficLocalEndpoints: サービスが外部へのリクエストをノードのローカルエンドポイントにルーティングできるようにします。
  • APIListChunking: APIクライアントがAPIサーバーからチャンク単位で(LISTGETの)リソースを取得できるようにします。
  • APIResponseCompression:LISTGETリクエストのAPIレスポンスを圧縮します。
  • AppArmor: Dockerを使用する場合にLinuxノードでAppArmorによる強制アクセスコントロールを有効にします。詳細はAppArmorチュートリアルで確認できます。
  • AttachVolumeLimit: ボリュームプラグインを有効にすることでノードにアタッチできるボリューム数の制限を設定できます。
  • BlockVolume: PodでRawブロックデバイスの定義と使用を有効にします。詳細はRawブロックボリュームのサポートで確認できます。
  • BoundServiceAccountTokenVolume: ServiceAccountTokenVolumeProjectionによって構成される計画ボリュームを使用するにはServiceAccountボリュームを移行します。詳細はService Account Token Volumesで確認できます。
  • CPUManager: コンテナレベルのCPUアフィニティサポートを有効します。CPUマネジメントポリシーを見てください。
  • CRIContainerLogRotation: criコンテナランタイムのコンテナログローテーションを有効にします。
  • CSIBlockVolume: 外部CSIボリュームドライバーを有効にしてブロックストレージをサポートします。詳細はcsiRawブロックボリュームのサポートで確認できます。
  • CSIDriverRegistry: csi.storage.k8s.ioのCSIDriver APIオブジェクトに関連するすべてのロジックを有効にします。
  • CSIInlineVolume: PodのCSIインラインボリュームサポートを有効にします。
  • CSIMigration: シムと変換ロジックを有効にしてボリューム操作をKubernetesリポジトリー内のプラグインから対応した事前インストール済みのCSIプラグインにルーティングします。
  • CSIMigrationAWS: シムと変換ロジックを有効にしてボリューム操作をKubernetesリポジトリー内のAWS-EBSプラグインからEBS CSIプラグインにルーティングします。
  • CSIMigrationAzureDisk: シムと変換ロジックを有効にしてボリューム操作をKubernetesリポジトリー内のAzure-DiskプラグインからAzure Disk CSIプラグインにルーティングします。
  • CSIMigrationAzureFile: シムと変換ロジックを有効にしてボリューム操作をKubernetesリポジトリー内のAzure-FileプラグインからAzure File CSIプラグインにルーティングします。
  • CSIMigrationGCE: シムと変換ロジックを有効にしてボリューム操作をKubernetesリポジトリー内のGCE-PDプラグインからPD CSIプラグインにルーティングします。
  • CSIMigrationOpenStack: シムと変換ロジックを有効にしてボリューム操作をKubernetesリポジトリー内のCinderプラグインからCinder CSIプラグインにルーティングします。
  • CSINodeInfo: csi.storage.k8s.ioのCSINodeInfo APIオブジェクトに関連するすべてのロジックを有効にします。
  • CSIPersistentVolume: CSI(Container Storage Interface)互換のボリュームプラグインを通してプロビジョニングされたボリュームの検出とマウントを有効にします。 詳細についてはcsiボリュームタイプドキュメントを確認してください。
  • CustomCPUCFSQuotaPeriod: ノードがCPUCFSQuotaPeriodを変更できるようにします。
  • CustomPodDNS: dnsConfigプロパティを使用したPodのDNS設定のカスタマイズを有効にします。詳細はPodのDNS構成で確認できます。
  • CustomResourcePublishOpenAPI: CRDのOpenAPI仕様での公開を有効にします。
  • CustomResourceSubresources: CustomResourceDefinitionから作成されたリソースの/statusおよび/scaleサブリソースを有効にします。
  • CustomResourceValidation: CustomResourceDefinitionから作成されたリソースのスキーマによる検証を有効にする。
  • CustomResourceWebhookConversion: CustomResourceDefinitionから作成されたリソースのWebhookベースの変換を有効にします。
  • DebugContainers: Podのネームスペースで「デバッグ」コンテナを実行できるようにして実行中のPodのトラブルシューティングを行います。
  • DevicePlugins: device-pluginsによるノードでのリソースプロビジョニングを有効にします。
  • DryRun: サーバーサイドでのdry runリクエストを有効にします。
  • DynamicAuditing: 動的監査を有効にします。
  • DynamicKubeletConfig: kubeletの動的構成を有効にします。kubeletの再設定を参照してください。
  • DynamicProvisioningScheduling: デフォルトのスケジューラーを拡張してボリュームトポロジーを認識しPVプロビジョニングを処理します。この機能は、v1.12のVolumeScheduling機能に完全に置き換えられました。
  • DynamicVolumeProvisioning(非推奨): Podへの永続ボリュームの動的プロビジョニングを有効にします。
  • EnableEquivalenceClassCache: Podをスケジュールするときにスケジューラーがノードの同等をキャッシュできるようにします。
  • ExpandInUsePersistentVolumes: 使用中のPVCのボリューム拡張を有効にします。使用中のPersistentVolumeClaimのサイズ変更を参照してください。
  • ExpandPersistentVolumes: 永続ボリュームの拡張を有効にします。永続ボリューム要求の拡張を参照してください。
  • ExperimentalCriticalPodAnnotation: スケジューリングが保証されるように特定のpodへの クリティカル の注釈を加える設定を有効にします。
  • ExperimentalHostUserNamespaceDefaultingGate: ホストするデフォルトのユーザー名前空間を有効にします。これは他のホストの名前空間やホストのマウントを使用しているコンテナ、特権を持つコンテナ、または名前空間のない特定の機能(たとえばMKNODESYS_MODULEなど)を使用しているコンテナ用です。これはDockerデーモンでユーザー名前空間の再マッピングが有効になっている場合にのみ有効にすべきです。
  • GCERegionalPersistentDisk: GCEでリージョナルPD機能を有効にします。
  • HugePages: 事前に割り当てられたhuge pagesの割り当てと消費を有効にします。
  • HyperVContainer: WindowsコンテナのHyper-Vによる分離を有効にします。
  • KubeletConfigFile: 設定ファイルを使用して指定されたファイルからのkubelet設定の読み込みを有効にします。詳細は設定ファイルによるkubeletパラメーターの設定で確認できます。
  • KubeletPluginsWatcher: 調査ベースのプラグイン監視ユーティリティを有効にしてkubeletがCSIボリュームドライバーなどのプラグインを検出できるようにします。
  • KubeletPodResources: kubeletのpodのリソースgrpcエンドポイントを有効にします。詳細はデバイスモニタリングのサポートで確認できます。
  • LocalStorageCapacityIsolation: ローカルの一時ストレージの消費を有効にして、emptyDirボリュームsizeLimitプロパティも有効にします。
  • LocalStorageCapacityIsolationFSQuotaMonitoring: LocalStorageCapacityIsolationローカルの一時ストレージで有効になっていて、emptyDirボリュームのbacking filesystemがプロジェクトクォータをサポートし有効になっている場合、プロジェクトクォータを使用して、パフォーマンスと精度を向上させるために、ファイルシステムへのアクセスではなくemptyDirボリュームストレージ消費を監視します。
  • MountContainers: ホスト上のユーティリティコンテナをボリュームマウンターとして使用できるようにします。
  • MountPropagation: あるコンテナによってマウントされたボリュームを他のコンテナまたはpodに共有できるようにします。詳細はマウントの伝播で確認できます。
  • NodeLease: 新しいLease APIを有効にしてノードヘルスシグナルとして使用できるノードのハートビートをレポートします。
  • NonPreemptingPriority: PriorityClassとPodのNonPreemptingオプションを有効にします。
  • PersistentLocalVolumes: Podでlocalボリュームタイプの使用を有効にします。localボリュームを要求する場合、podアフィニティを指定する必要があります。
  • PodPriority: 優先度に基づいてPodの再スケジューリングとプリエンプションを有効にします。
  • PodReadinessGates: Podのreadinessの評価を拡張するためにPodReadinessGateフィールドの設定を有効にします。詳細はPod readiness gateで確認できます。
  • ProcMountType: コンテナのProcMountTypeの制御を有効にします。
  • PVCProtection: 永続ボリューム要求(PVC)がPodでまだ使用されているときに削除されないようにします。詳細はここで確認できます。
  • ResourceLimitsPriorityFunction: 入力したPodのCPU制限とメモリ制限の少なくとも1つを満たすノードに対して最低スコアを1に割り当てるスケジューラー優先機能を有効にします。その目的は同じスコアを持つノード間の関係を断つことです。
  • RequestManagement: 各サーバーで優先順位付けと公平性を備えたリクエストの並行性の管理機能を有効にしました。
  • ResourceQuotaScopeSelectors: リソース割当のスコープセレクターを有効にします。
  • RotateKubeletClientCertificate: kubeletでクライアントTLS証明書のローテーションを有効にします。詳細はkubeletの設定で確認できます。
  • RotateKubeletServerCertificate: kubeletでサーバーTLS証明書のローテーションを有効にします。詳細はkubeletの設定で確認できます。
  • RunAsGroup: コンテナの初期化プロセスで設定されたプライマリグループIDの制御を有効にします。
  • RuntimeClass: コンテナのランタイム構成を選択するにはRuntimeClass機能を有効にします。
  • ScheduleDaemonSetPods: DaemonSetのPodをDaemonSetコントローラーではなく、デフォルトのスケジューラーによってスケジュールされるようにします。
  • SCTPSupport: ServiceEndpointNetworkPolicyPodの定義でprotocolの値としてSCTPを使用できるようにします
  • ServerSideApply: APIサーバーでサーバーサイドApply(SSA)のパスを有効にします。
  • ServiceLoadBalancerFinalizer: サービスロードバランサーのファイナライザー保護を有効にします。
  • ServiceNodeExclusion: クラウドプロバイダーによって作成されたロードバランサーからのノードの除外を有効にします。”alpha.service-controller.kubernetes.io/exclude-balancer“キーでラベル付けされている場合ノードは除外の対象となります。
  • StorageObjectInUseProtection: PersistentVolumeまたはPersistentVolumeClaimオブジェクトがまだ使用されている場合、それらの削除を延期します。
  • StorageVersionHash: apiserversがディスカバリーでストレージのバージョンハッシュを公開できるようにします。
  • StreamingProxyRedirects: ストリーミングリクエストのバックエンド(kubelet)からのリダイレクトをインターセプト(およびフォロー)するようAPIサーバーに指示します。ストリーミングリクエストの例にはexecattachport-forwardリクエストが含まれます。
  • SupportIPVSProxyMode: IPVSを使用したクラスター内サービスの負荷分散の提供を有効にします。詳細はサービスプロキシで確認できます。
  • SupportPodPidsLimit: PodのPID制限のサポートを有効にします。
  • Sysctls: 各podに設定できる名前空間付きのカーネルパラメーター(sysctl)のサポートを有効にします。詳細はsysctlsで確認できます。
  • TaintBasedEvictions: ノードの汚染とpodの許容に基づいてノードからpodを排除できるようにします。。詳細は汚染と許容で確認できます。
  • TaintNodesByCondition: ノードの条件に基づいてノードの自動汚染を有効にします。
  • TokenRequest: サービスアカウントリソースでTokenRequestエンドポイントを有効にします。
  • TokenRequestProjection: 投影ボリュームを使用したpodへのサービスアカウントのトークンの注入を有効にします。
  • TTLAfterFinished: TTLコントローラーが実行終了後にリソースをクリーンアップできるようにします。
  • VolumePVCDataSource: 既存のPVCをデータソースとして指定するサポートを有効にします。
  • VolumeScheduling: ボリュームトポロジー対応のスケジューリングを有効にし、PersistentVolumeClaim(PVC)バインディングにスケジューリングの決定を認識させます。またPersistentLocalVolumesフィーチャーゲートと一緒に使用するとlocalボリュームタイプの使用が可能になります。
  • VolumeSnapshotDataSource: ボリュームスナップショットのデータソースサポートを有効にします。
  • VolumeSubpathEnvExpansion: 環境変数をsubPathに展開するためのsubPathExprフィールドを有効にします。
  • WatchBookmark: ブックマークイベントの監視サポートを有効にします。
  • WindowsGMSA: GMSA資格仕様をpodからコンテナランタイムに渡せるようにします。

フィードバック