1 - フィーチャーゲート
このページでは管理者がそれぞれのKubernetesコンポーネントで指定できるさまざまなフィーチャーゲートの概要について説明しています。
各機能におけるステージの説明については、機能のステージを参照してください。
概要
フィーチャーゲートはアルファ機能または実験的機能を記述するkey=valueのペアのセットです。管理者は各コンポーネントで--feature-gates
コマンドラインフラグを使用することで機能をオンまたはオフにできます。
各コンポーネントはそれぞれのコンポーネント固有のフィーチャーゲートの設定をサポートします。すべてのコンポーネントのフィーチャーゲートの全リストを表示するには-h
フラグを使用します。kubeletなどのコンポーネントにフィーチャーゲートを設定するには以下のようにリストの機能ペアを--feature-gates
フラグを使用して割り当てます。
--feature-gates="...,DynamicKubeletConfig=true"
次の表は各Kubernetesコンポーネントに設定できるフィーチャーゲートの概要です。
- 「導入開始バージョン」列は機能が導入されたとき、またはリリース段階が変更されたときのKubernetesリリースバージョンとなります。
- 「最終利用可能バージョン」列は空ではない場合はフィーチャーゲートを使用できる最後のKubernetesリリースバージョンとなります。
- アルファまたはベータ状態の機能はAlphaまたはBetaのフィーチャーゲートに載っています。
- 安定している機能は、graduatedまたはdeprecatedのフィーチャーゲートに載っています。
- graduatedまたはdeprecatedのフィーチャーゲートには、非推奨および廃止された機能もリストされています。
AlphaまたはBetaのフィーチャーゲート
機能名 | デフォルト値 | ステージ | 導入開始バージョン | 最終利用可能バージョン |
---|---|---|---|---|
AnyVolumeDataSource |
false |
Alpha | 1.18 | |
APIListChunking |
false |
Alpha | 1.8 | 1.8 |
APIListChunking |
true |
Beta | 1.9 | |
APIPriorityAndFairness |
false |
Alpha | 1.17 | |
APIResponseCompression |
false |
Alpha | 1.7 | |
AppArmor |
true |
Beta | 1.4 | |
BalanceAttachedNodeVolumes |
false |
Alpha | 1.11 | |
BoundServiceAccountTokenVolume |
false |
Alpha | 1.13 | |
CPUManager |
false |
Alpha | 1.8 | 1.9 |
CPUManager |
true |
Beta | 1.10 | |
CRIContainerLogRotation |
false |
Alpha | 1.10 | 1.10 |
CRIContainerLogRotation |
true |
Beta | 1.11 | |
CSIInlineVolume |
false |
Alpha | 1.15 | 1.15 |
CSIInlineVolume |
true |
Beta | 1.16 | - |
CSIMigration |
false |
Alpha | 1.14 | 1.16 |
CSIMigration |
true |
Beta | 1.17 | |
CSIMigrationAWS |
false |
Alpha | 1.14 | |
CSIMigrationAWS |
false |
Beta | 1.17 | |
CSIMigrationAWSComplete |
false |
Alpha | 1.17 | |
CSIMigrationAzureDisk |
false |
Alpha | 1.15 | |
CSIMigrationAzureDiskComplete |
false |
Alpha | 1.17 | |
CSIMigrationAzureFile |
false |
Alpha | 1.15 | |
CSIMigrationAzureFileComplete |
false |
Alpha | 1.17 | |
CSIMigrationGCE |
false |
Alpha | 1.14 | 1.16 |
CSIMigrationGCE |
false |
Beta | 1.17 | |
CSIMigrationGCEComplete |
false |
Alpha | 1.17 | |
CSIMigrationOpenStack |
false |
Alpha | 1.14 | |
CSIMigrationOpenStackComplete |
false |
Alpha | 1.17 | |
ConfigurableFSGroupPolicy |
false |
Alpha | 1.18 | |
CustomCPUCFSQuotaPeriod |
false |
Alpha | 1.12 | |
CustomResourceDefaulting |
false |
Alpha | 1.15 | 1.15 |
CustomResourceDefaulting |
true |
Beta | 1.16 | |
DevicePlugins |
false |
Alpha | 1.8 | 1.9 |
DevicePlugins |
true |
Beta | 1.10 | |
DryRun |
false |
Alpha | 1.12 | 1.12 |
DryRun |
true |
Beta | 1.13 | |
DynamicAuditing |
false |
Alpha | 1.13 | |
DynamicKubeletConfig |
false |
Alpha | 1.4 | 1.10 |
DynamicKubeletConfig |
true |
Beta | 1.11 | |
EndpointSlice |
false |
Alpha | 1.16 | 1.16 |
EndpointSlice |
false |
Beta | 1.17 | |
EndpointSlice |
true |
Beta | 1.18 | |
EndpointSliceProxying |
false |
Alpha | 1.18 | |
EphemeralContainers |
false |
Alpha | 1.16 | |
ExpandCSIVolumes |
false |
Alpha | 1.14 | 1.15 |
ExpandCSIVolumes |
true |
Beta | 1.16 | |
ExpandInUsePersistentVolumes |
false |
Alpha | 1.11 | 1.14 |
ExpandInUsePersistentVolumes |
true |
Beta | 1.15 | |
ExpandPersistentVolumes |
false |
Alpha | 1.8 | 1.10 |
ExpandPersistentVolumes |
true |
Beta | 1.11 | |
ExperimentalHostUserNamespaceDefaulting |
false |
Beta | 1.5 | |
EvenPodsSpread |
false |
Alpha | 1.16 | 1.17 |
EvenPodsSpread |
true |
Beta | 1.18 | |
HPAScaleToZero |
false |
Alpha | 1.16 | |
HugePageStorageMediumSize |
false |
Alpha | 1.18 | |
HyperVContainer |
false |
Alpha | 1.10 | |
ImmutableEphemeralVolumes |
false |
Alpha | 1.18 | |
KubeletPodResources |
false |
Alpha | 1.13 | 1.14 |
KubeletPodResources |
true |
Beta | 1.15 | |
LegacyNodeRoleBehavior |
true |
Alpha | 1.16 | |
LocalStorageCapacityIsolation |
false |
Alpha | 1.7 | 1.9 |
LocalStorageCapacityIsolation |
true |
Beta | 1.10 | |
LocalStorageCapacityIsolationFSQuotaMonitoring |
false |
Alpha | 1.15 | |
MountContainers |
false |
Alpha | 1.9 | |
NodeDisruptionExclusion |
false |
Alpha | 1.16 | |
NonPreemptingPriority |
false |
Alpha | 1.15 | |
PodDisruptionBudget |
false |
Alpha | 1.3 | 1.4 |
PodDisruptionBudget |
true |
Beta | 1.5 | |
PodOverhead |
false |
Alpha | 1.16 | - |
ProcMountType |
false |
Alpha | 1.12 | |
QOSReserved |
false |
Alpha | 1.11 | |
RemainingItemCount |
false |
Alpha | 1.15 | |
ResourceLimitsPriorityFunction |
false |
Alpha | 1.9 | |
RotateKubeletClientCertificate |
true |
Beta | 1.8 | |
RotateKubeletServerCertificate |
false |
Alpha | 1.7 | 1.11 |
RotateKubeletServerCertificate |
true |
Beta | 1.12 | |
RunAsGroup |
true |
Beta | 1.14 | |
RuntimeClass |
false |
Alpha | 1.12 | 1.13 |
RuntimeClass |
true |
Beta | 1.14 | |
SCTPSupport |
false |
Alpha | 1.12 | |
ServerSideApply |
false |
Alpha | 1.14 | 1.15 |
ServerSideApply |
true |
Beta | 1.16 | |
ServiceAccountIssuerDiscovery |
false |
Alpha | 1.18 | |
ServiceAppProtocol |
false |
Alpha | 1.18 | |
ServiceNodeExclusion |
false |
Alpha | 1.8 | |
ServiceTopology |
false |
Alpha | 1.17 | |
StartupProbe |
false |
Alpha | 1.16 | 1.17 |
StartupProbe |
true |
Beta | 1.18 | |
StorageVersionHash |
false |
Alpha | 1.14 | 1.14 |
StorageVersionHash |
true |
Beta | 1.15 | |
StreamingProxyRedirects |
false |
Beta | 1.5 | 1.5 |
StreamingProxyRedirects |
true |
Beta | 1.6 | |
SupportNodePidsLimit |
false |
Alpha | 1.14 | 1.14 |
SupportNodePidsLimit |
true |
Beta | 1.15 | |
SupportPodPidsLimit |
false |
Alpha | 1.10 | 1.13 |
SupportPodPidsLimit |
true |
Beta | 1.14 | |
Sysctls |
true |
Beta | 1.11 | |
TokenRequest |
false |
Alpha | 1.10 | 1.11 |
TokenRequest |
true |
Beta | 1.12 | |
TokenRequestProjection |
false |
Alpha | 1.11 | 1.11 |
TokenRequestProjection |
true |
Beta | 1.12 | |
TTLAfterFinished |
false |
Alpha | 1.12 | 1.20 |
TTLAfterFinished |
true |
Beta | 1.21 | |
TopologyManager |
false |
Alpha | 1.16 | 1.17 |
TopologyManager |
true |
Beta | 1.18 | |
ValidateProxyRedirects |
false |
Alpha | 1.12 | 1.13 |
ValidateProxyRedirects |
true |
Beta | 1.14 | |
VolumePVCDataSource |
false |
Alpha | 1.15 | 1.15 |
VolumePVCDataSource |
true |
Beta | 1.16 | |
VolumeSnapshotDataSource |
false |
Alpha | 1.12 | 1.16 |
VolumeSnapshotDataSource |
true |
Beta | 1.17 | - |
WindowsGMSA |
false |
Alpha | 1.14 | |
WindowsGMSA |
true |
Beta | 1.16 | |
WinDSR |
false |
Alpha | 1.14 | |
WinOverlay |
false |
Alpha | 1.14 |
GraduatedまたはDeprecatedのフィーチャーゲート
機能名 | デフォルト値 | ステージ | 導入開始バージョン | 最終利用可能バージョン |
---|---|---|---|---|
Accelerators |
false |
Alpha | 1.6 | 1.10 |
Accelerators |
- | Deprecated | 1.11 | - |
AdvancedAuditing |
false |
Alpha | 1.7 | 1.7 |
AdvancedAuditing |
true |
Beta | 1.8 | 1.11 |
AdvancedAuditing |
true |
GA | 1.12 | - |
AffinityInAnnotations |
false |
Alpha | 1.6 | 1.7 |
AffinityInAnnotations |
- | Deprecated | 1.8 | - |
AllowExtTrafficLocalEndpoints |
false |
Beta | 1.4 | 1.6 |
AllowExtTrafficLocalEndpoints |
true |
GA | 1.7 | - |
BlockVolume |
false |
Alpha | 1.9 | 1.12 |
BlockVolume |
true |
Beta | 1.13 | 1.17 |
BlockVolume |
true |
GA | 1.18 | - |
CSIBlockVolume |
false |
Alpha | 1.11 | 1.13 |
CSIBlockVolume |
true |
Beta | 1.14 | 1.17 |
CSIBlockVolume |
true |
GA | 1.18 | - |
CSIDriverRegistry |
false |
Alpha | 1.12 | 1.13 |
CSIDriverRegistry |
true |
Beta | 1.14 | 1.17 |
CSIDriverRegistry |
true |
GA | 1.18 | |
CSINodeInfo |
false |
Alpha | 1.12 | 1.13 |
CSINodeInfo |
true |
Beta | 1.14 | 1.16 |
CSINodeInfo |
true |
GA | 1.17 | |
AttachVolumeLimit |
false |
Alpha | 1.11 | 1.11 |
AttachVolumeLimit |
true |
Beta | 1.12 | 1.16 |
AttachVolumeLimit |
true |
GA | 1.17 | - |
CSIPersistentVolume |
false |
Alpha | 1.9 | 1.9 |
CSIPersistentVolume |
true |
Beta | 1.10 | 1.12 |
CSIPersistentVolume |
true |
GA | 1.13 | - |
CustomPodDNS |
false |
Alpha | 1.9 | 1.9 |
CustomPodDNS |
true |
Beta | 1.10 | 1.13 |
CustomPodDNS |
true |
GA | 1.14 | - |
CustomResourcePublishOpenAPI |
false |
Alpha | 1.14 | 1.14 |
CustomResourcePublishOpenAPI |
true |
Beta | 1.15 | 1.15 |
CustomResourcePublishOpenAPI |
true |
GA | 1.16 | - |
CustomResourceSubresources |
false |
Alpha | 1.10 | 1.10 |
CustomResourceSubresources |
true |
Beta | 1.11 | 1.15 |
CustomResourceSubresources |
true |
GA | 1.16 | - |
CustomResourceValidation |
false |
Alpha | 1.8 | 1.8 |
CustomResourceValidation |
true |
Beta | 1.9 | 1.15 |
CustomResourceValidation |
true |
GA | 1.16 | - |
CustomResourceWebhookConversion |
false |
Alpha | 1.13 | 1.14 |
CustomResourceWebhookConversion |
true |
Beta | 1.15 | 1.15 |
CustomResourceWebhookConversion |
true |
GA | 1.16 | - |
DynamicProvisioningScheduling |
false |
Alpha | 1.11 | 1.11 |
DynamicProvisioningScheduling |
- | Deprecated | 1.12 | - |
DynamicVolumeProvisioning |
true |
Alpha | 1.3 | 1.7 |
DynamicVolumeProvisioning |
true |
GA | 1.8 | - |
EnableAggregatedDiscoveryTimeout |
true |
Deprecated | 1.16 | - |
EnableEquivalenceClassCache |
false |
Alpha | 1.8 | 1.14 |
EnableEquivalenceClassCache |
- | Deprecated | 1.15 | - |
ExperimentalCriticalPodAnnotation |
false |
Alpha | 1.5 | 1.12 |
ExperimentalCriticalPodAnnotation |
false |
Deprecated | 1.13 | - |
GCERegionalPersistentDisk |
true |
Beta | 1.10 | 1.12 |
GCERegionalPersistentDisk |
true |
GA | 1.13 | - |
HugePages |
false |
Alpha | 1.8 | 1.9 |
HugePages |
true |
Beta | 1.10 | 1.13 |
HugePages |
true |
GA | 1.14 | - |
Initializers |
false |
Alpha | 1.7 | 1.13 |
Initializers |
- | Deprecated | 1.14 | - |
KubeletConfigFile |
false |
Alpha | 1.8 | 1.9 |
KubeletConfigFile |
- | Deprecated | 1.10 | - |
KubeletPluginsWatcher |
false |
Alpha | 1.11 | 1.11 |
KubeletPluginsWatcher |
true |
Beta | 1.12 | 1.12 |
KubeletPluginsWatcher |
true |
GA | 1.13 | - |
MountPropagation |
false |
Alpha | 1.8 | 1.9 |
MountPropagation |
true |
Beta | 1.10 | 1.11 |
MountPropagation |
true |
GA | 1.12 | - |
NodeLease |
false |
Alpha | 1.12 | 1.13 |
NodeLease |
true |
Beta | 1.14 | 1.16 |
NodeLease |
true |
GA | 1.17 | - |
PersistentLocalVolumes |
false |
Alpha | 1.7 | 1.9 |
PersistentLocalVolumes |
true |
Beta | 1.10 | 1.13 |
PersistentLocalVolumes |
true |
GA | 1.14 | - |
PodPriority |
false |
Alpha | 1.8 | 1.10 |
PodPriority |
true |
Beta | 1.11 | 1.13 |
PodPriority |
true |
GA | 1.14 | - |
PodReadinessGates |
false |
Alpha | 1.11 | 1.11 |
PodReadinessGates |
true |
Beta | 1.12 | 1.13 |
PodReadinessGates |
true |
GA | 1.14 | - |
PodShareProcessNamespace |
false |
Alpha | 1.10 | 1.11 |
PodShareProcessNamespace |
true |
Beta | 1.12 | 1.16 |
PodShareProcessNamespace |
true |
GA | 1.17 | - |
PVCProtection |
false |
Alpha | 1.9 | 1.9 |
PVCProtection |
- | Deprecated | 1.10 | - |
RequestManagement |
false |
Alpha | 1.15 | 1.16 |
ResourceQuotaScopeSelectors |
false |
Alpha | 1.11 | 1.11 |
ResourceQuotaScopeSelectors |
true |
Beta | 1.12 | 1.16 |
ResourceQuotaScopeSelectors |
true |
GA | 1.17 | - |
ScheduleDaemonSetPods |
false |
Alpha | 1.11 | 1.11 |
ScheduleDaemonSetPods |
true |
Beta | 1.12 | 1.16 |
ScheduleDaemonSetPods |
true |
GA | 1.17 | - |
ServiceLoadBalancerFinalizer |
false |
Alpha | 1.15 | 1.15 |
ServiceLoadBalancerFinalizer |
true |
Beta | 1.16 | 1.16 |
ServiceLoadBalancerFinalizer |
true |
GA | 1.17 | - |
StorageObjectInUseProtection |
true |
Beta | 1.10 | 1.10 |
StorageObjectInUseProtection |
true |
GA | 1.11 | - |
SupportIPVSProxyMode |
false |
Alpha | 1.8 | 1.8 |
SupportIPVSProxyMode |
false |
Beta | 1.9 | 1.9 |
SupportIPVSProxyMode |
true |
Beta | 1.10 | 1.10 |
SupportIPVSProxyMode |
true |
GA | 1.11 | - |
TaintBasedEvictions |
false |
Alpha | 1.6 | 1.12 |
TaintBasedEvictions |
true |
Beta | 1.13 | 1.17 |
TaintBasedEvictions |
true |
GA | 1.18 | - |
TaintNodesByCondition |
false |
Alpha | 1.8 | 1.11 |
TaintNodesByCondition |
true |
Beta | 1.12 | 1.16 |
TaintNodesByCondition |
true |
GA | 1.17 | - |
VolumePVCDataSource |
false |
Alpha | 1.15 | 1.15 |
VolumePVCDataSource |
true |
Beta | 1.16 | 1.17 |
VolumePVCDataSource |
true |
GA | 1.18 | - |
VolumeScheduling |
false |
Alpha | 1.9 | 1.9 |
VolumeScheduling |
true |
Beta | 1.10 | 1.12 |
VolumeScheduling |
true |
GA | 1.13 | - |
VolumeScheduling |
false |
Alpha | 1.9 | 1.9 |
VolumeScheduling |
true |
Beta | 1.10 | 1.12 |
VolumeScheduling |
true |
GA | 1.13 | - |
VolumeSubpath |
true |
GA | 1.13 | - |
VolumeSubpathEnvExpansion |
false |
Alpha | 1.14 | 1.14 |
VolumeSubpathEnvExpansion |
true |
Beta | 1.15 | 1.16 |
VolumeSubpathEnvExpansion |
true |
GA | 1.17 | - |
WatchBookmark |
false |
Alpha | 1.15 | 1.15 |
WatchBookmark |
true |
Beta | 1.16 | 1.16 |
WatchBookmark |
true |
GA | 1.17 | - |
WindowsGMSA |
false |
Alpha | 1.14 | 1.15 |
WindowsGMSA |
true |
Beta | 1.16 | 1.17 |
WindowsGMSA |
true |
GA | 1.18 | - |
WindowsRunAsUserName |
false |
Alpha | 1.16 | 1.16 |
WindowsRunAsUserName |
true |
Beta | 1.17 | 1.17 |
WindowsRunAsUserName |
true |
GA | 1.18 | - |
機能を使用する
機能のステージ
機能にはAlpha 、Beta 、GA の段階があります。Alpha 機能とは:
- デフォルトでは無効になっています。
- バグがあるかもしれません。機能を有効にするとバグが発生する可能性があります。
- 機能のサポートは予告無しにいつでも削除される場合があります。
- APIは今後のソフトウェアリリースで予告なく互換性の無い変更が行われる場合があります。
- バグが発生するリスクが高く長期的なサポートはないため、短期間のテストクラスターでのみ使用することをお勧めします。
Beta 機能とは:
- デフォルトで有効になっています。
- この機能は十分にテストされていて、有効にすることは安全と考えられます。
- 詳細は変更される可能性がありますが、機能全体のサポートは削除されません。
- オブジェクトのスキーマやセマンティックは、その後のベータ版または安定版リリースで互換性の無い変更が行われる場合があります。互換性の無い変更が行われた場合には次のバージョンへの移行手順を提供します。これにはAPIオブジェクトの削除、編集、および再作成が必要になる場合があります。バージョンアップにはいくつかの対応が必要な場合があります。これには機能に依存するアプリケーションのダウンタイムが発生する場合があります。
- 今後のリリースで互換性の無い変更が行われる可能性があるため、ビジネスクリティカルでない使用のみが推奨されます。個別にアップグレードできる複数のクラスターがある場合はこの制限を緩和できる場合があります。
GA 機能とは(GA 機能は安定版 機能とも呼ばれます):
- 機能は常に有効となり、無効にすることはできません。
- フィーチャーゲートの設定は不要になります。
- 機能の安定版は後続バージョンでリリースされたソフトウェアで使用されます。
フィーチャーゲート
各フィーチャーゲートは特定の機能を有効/無効にするように設計されています。
Accelerators
: DockerでのNvidia GPUのサポートを有効にします。AdvancedAuditing
: 高度な監査機能を有効にします。AffinityInAnnotations
(非推奨): Podのアフィニティまたはアンチアフィニティを有効にします。AnyVolumeDataSource
: PVCのDataSource
としてカスタムリソースの使用を有効にします。AllowExtTrafficLocalEndpoints
: サービスが外部へのリクエストをノードのローカルエンドポイントにルーティングできるようにします。APIListChunking
: APIクライアントがAPIサーバーからチャンク単位で(LIST
やGET
の)リソースを取得できるようにします。APIPriorityAndFairness
: 各サーバーで優先順位付けと公平性を備えた要求の並行性を管理できるようにします(RequestManagement
から名前が変更されました)。APIResponseCompression
:LIST
やGET
リクエストのAPIレスポンスを圧縮します。AppArmor
: Dockerを使用する場合にLinuxノードでAppArmorによる強制アクセスコントロールを有効にします。詳細はAppArmorチュートリアルで確認できます。AttachVolumeLimit
: ボリュームプラグインを有効にすることでノードにアタッチできるボリューム数の制限を設定できます。BalanceAttachedNodeVolumes
: スケジューリング中にバランスのとれたリソース割り当てを考慮するノードのボリュームカウントを含めます。判断を行う際に、CPU、メモリー使用率、およびボリュームカウントが近いノードがスケジューラーによって優先されます。BlockVolume
: PodでRawブロックデバイスの定義と使用を有効にします。詳細はRawブロックボリュームのサポートで確認できます。BoundServiceAccountTokenVolume
: ServiceAccountTokenVolumeProjectionによって構成される計画ボリュームを使用するにはServiceAccountボリュームを移行します。詳細はService Account Token Volumesで確認できます。ConfigurableFSGroupPolicy
: Podにボリュームをマウントするときに、ユーザーがfsGroupsのボリューム権限変更ポリシーを設定できるようにします。詳細については、Podのボリューム権限と所有権変更ポリシーの設定をご覧ください。CPUManager
: コンテナレベルのCPUアフィニティサポートを有効します。CPUマネジメントポリシーを見てください。CRIContainerLogRotation
: criコンテナランタイムのコンテナログローテーションを有効にします。CSIBlockVolume
: 外部CSIボリュームドライバーを有効にしてブロックストレージをサポートします。詳細はcsi
Rawブロックボリュームのサポートで確認できます。CSIDriverRegistry
: csi.storage.k8s.ioのCSIDriver APIオブジェクトに関連するすべてのロジックを有効にします。CSIInlineVolume
: PodのCSIインラインボリュームサポートを有効にします。CSIMigration
: シムと変換ロジックを有効にしてボリューム操作をKubernetesリポジトリー内のプラグインから対応した事前インストール済みのCSIプラグインにルーティングします。CSIMigrationAWS
: シムと変換ロジックを有効にしてボリューム操作をKubernetesリポジトリー内のAWS-EBSプラグインからEBS CSIプラグインにルーティングします。ノードにEBS CSIプラグインがインストールおよび設定されていない場合、ツリー内のEBSプラグインへのフォールバックをサポートします。CSIMigration機能フラグを有効にする必要があります。CSIMigrationAWSComplete
: EBSツリー内プラグインのkubeletおよびボリュームコントローラーへの登録を停止し、シムと変換ロジックを有効にして、AWS-EBSツリー内プラグインからEBS CSIプラグインにボリューム操作をルーティングします。CSIMigrationおよびCSIMigrationAWS機能フラグを有効にし、クラスター内のすべてのノードにEBS CSIプラグインをインストールおよび設定する必要があります。CSIMigrationAzureDisk
: シムと変換ロジックを有効にしてボリューム操作をKubernetesリポジトリー内のAzure-DiskプラグインからAzure Disk CSIプラグインにルーティングします。ノードにAzureDisk CSIプラグインがインストールおよび設定されていない場合、ツリー内のAzureDiskプラグインへのフォールバックをサポートします。CSIMigration機能フラグを有効にする必要があります。CSIMigrationAzureDiskComplete
: Azure-Diskツリー内プラグインのkubeletおよびボリュームコントローラーへの登録を停止し、シムと変換ロジックを有効にして、Azure-Diskツリー内プラグインからAzureDisk CSIプラグインにボリューム操作をルーティングします。CSIMigrationおよびCSIMigrationAzureDisk機能フラグを有効にし、クラスター内のすべてのノードにAzureDisk CSIプラグインをインストールおよび設定する必要があります。CSIMigrationAzureFile
: シムと変換ロジックを有効にしてボリューム操作をKubernetesリポジトリー内のAzure-FileプラグインからAzure File CSIプラグインにルーティングします。ノードにAzureFile CSIプラグインがインストールおよび設定されていない場合、ツリー内のAzureFileプラグインへのフォールバックをサポートします。CSIMigration機能フラグを有効にする必要があります。CSIMigrationAzureFileComplete
: Azure-Fileツリー内プラグインのkubeletおよびボリュームコントローラーへの登録を停止し、シムと変換ロジックを有効にして、Azure-Fileツリー内プラグインからAzureFile CSIプラグインにボリューム操作をルーティングします。CSIMigrationおよびCSIMigrationAzureFile機能フラグを有効にし、クラスター内のすべてのノードにAzureFile CSIプラグインをインストールおよび設定する必要があります。CSIMigrationGCE
: シムと変換ロジックを有効にしてボリューム操作をKubernetesリポジトリー内のGCE-PDプラグインからPD CSIプラグインにルーティングします。ノードにPD CSIプラグインがインストールおよび設定されていない場合、ツリー内のGCEプラグインへのフォールバックをサポートします。CSIMigration機能フラグを有効にする必要があります。CSIMigrationGCEComplete
: GCE-PDのツリー内プラグインのkubeletおよびボリュームコントローラーへの登録を停止し、シムと変換ロジックがGCE-PDのツリー内プラグインからPD CSIプラグインにボリューム操作をルーティングできるようにします。CSIMigrationおよびCSIMigrationGCE機能フラグを有効にし、クラスター内のすべてのノードにPD CSIプラグインをインストールおよび設定する必要があります。CSIMigrationOpenStack
: シムと変換ロジックを有効にしてボリューム操作をKubernetesリポジトリー内のCinderプラグインからCinder CSIプラグインにルーティングします。ノードにCinder CSIプラグインがインストールおよび設定されていない場合、ツリー内のCinderプラグインへのフォールバックをサポートします。CSIMigration機能フラグを有効にする必要があります。CSIMigrationOpenStackComplete
: Cinderのツリー内プラグインのkubeletおよびボリュームコントローラーへの登録を停止し、シムと変換ロジックがCinderのツリー内プラグインからCinder CSIプラグインにボリューム操作をルーティングできるようにします。CSIMigrationおよびCSIMigrationOpenStack機能フラグを有効にし、クラスター内のすべてのノードにCinder CSIプラグインをインストールおよび設定する必要があります。CSINodeInfo
: csi.storage.k8s.ioのCSINodeInfo APIオブジェクトに関連するすべてのロジックを有効にします。CSIPersistentVolume
: CSI(Container Storage Interface)互換のボリュームプラグインを通してプロビジョニングされたボリュームの検出とマウントを有効にします。 詳細についてはcsi
ボリュームタイプドキュメントを確認してください。CustomCPUCFSQuotaPeriod
: ノードがCPUCFSQuotaPeriodを変更できるようにします。CustomPodDNS
:dnsConfig
プロパティを使用したPodのDNS設定のカスタマイズを有効にします。詳細はPodのDNS構成で確認できます。CustomResourceDefaulting
: OpenAPI v3バリデーションスキーマにおいて、デフォルト値のCRDサポートを有効にします。CustomResourcePublishOpenAPI
: CRDのOpenAPI仕様での公開を有効にします。CustomResourceSubresources
: CustomResourceDefinitionから作成されたリソースの/status
および/scale
サブリソースを有効にします。CustomResourceValidation
: CustomResourceDefinitionから作成されたリソースのスキーマによる検証を有効にします。CustomResourceWebhookConversion
: CustomResourceDefinitionから作成されたリソースのWebhookベースの変換を有効にします。DevicePlugins
: device-pluginsによるノードでのリソースプロビジョニングを有効にします。DryRun
: サーバーサイドでのdry runリクエストを有効にします。DynamicAuditing
: 動的監査を有効にします。DynamicKubeletConfig
: kubeletの動的構成を有効にします。kubeletの再設定を参照してください。DynamicProvisioningScheduling
: デフォルトのスケジューラーを拡張してボリュームトポロジーを認識しPVプロビジョニングを処理します。この機能は、v1.12のVolumeScheduling
機能に完全に置き換えられました。DynamicVolumeProvisioning
(非推奨): Podへの永続ボリュームの動的プロビジョニングを有効にします。EnableAggregatedDiscoveryTimeout
(非推奨): 集約されたディスカバリーコールで5秒のタイムアウトを有効にします。EnableEquivalenceClassCache
: Podをスケジュールするときにスケジューラーがノードの同等をキャッシュできるようにします。EphemeralContainers
: 稼働するPodにephemeral containersを追加する機能を有効にします。EvenPodsSpread
: Podをトポロジードメイン全体で均等にスケジュールできるようにします。Even Pods Spreadをご覧ください。ExpandInUsePersistentVolumes
: 使用中のPVCのボリューム拡張を有効にします。使用中のPersistentVolumeClaimのサイズ変更を参照してください。ExpandPersistentVolumes
: 永続ボリュームの拡張を有効にします。永続ボリューム要求の拡張を参照してください。ExperimentalCriticalPodAnnotation
: スケジューリングが保証されるように特定のPodへの クリティカル の注釈を加える設定を有効にします。ExperimentalHostUserNamespaceDefaultingGate
: ホストするデフォルトのユーザー名前空間を有効にします。これは他のホストの名前空間やホストのマウントを使用しているコンテナ、特権を持つコンテナ、または名前空間のない特定の機能(たとえばMKNODE
、SYS_MODULE
など)を使用しているコンテナ用です。これはDockerデーモンでユーザー名前空間の再マッピングが有効になっている場合にのみ有効にすべきです。EndpointSlice
: よりスケーラブルで拡張可能なネットワークエンドポイントのエンドポイントスライスを有効にします。Enabling Endpoint Slicesをご覧ください。EndpointSliceProxying
: このフィーチャーゲートを有効にすると、kube-proxyはエンドポイントの代わりにエンドポイントスライスをプライマリデータソースとして使用し、スケーラビリティとパフォーマンスの向上を実現します。Enabling Endpoint Slices.をご覧ください。GCERegionalPersistentDisk
: GCEでリージョナルPD機能を有効にします。HugePages
: 事前に割り当てられたhuge pagesの割り当てと消費を有効にします。HugePageStorageMediumSize
: 事前に割り当てられた複数のサイズのhuge pagesのサポートを有効にします。HyperVContainer
: WindowsコンテナのHyper-Vによる分離を有効にします。HPAScaleToZero
: カスタムメトリクスまたは外部メトリクスを使用するときに、HorizontalPodAutoscaler
リソースのminReplicas
を0に設定できるようにします。ImmutableEphemeralVolumes
: 安全性とパフォーマンスを向上させるために、個々のSecretとConfigMapが不変となるように指定できるようにします。KubeletConfigFile
: 設定ファイルを使用して指定されたファイルからのkubelet設定の読み込みを有効にします。詳細は設定ファイルによるkubeletパラメーターの設定で確認できます。KubeletPluginsWatcher
: 調査ベースのプラグイン監視ユーティリティを有効にしてkubeletがCSIボリュームドライバーなどのプラグインを検出できるようにします。KubeletPodResources
: kubeletのPodのリソースgrpcエンドポイントを有効にします。詳細はデバイスモニタリングのサポートで確認できます。LegacyNodeRoleBehavior
: 無効にすると、サービスロードバランサーの従来の動作とノードの中断により機能固有のラベルが優先され、node-role.kubernetes.io/master
ラベルが無視されます。LocalStorageCapacityIsolation
: ローカルの一時ストレージの消費を有効にして、emptyDirボリュームのsizeLimit
プロパティも有効にします。LocalStorageCapacityIsolationFSQuotaMonitoring
:LocalStorageCapacityIsolation
がローカルの一時ストレージで有効になっていて、emptyDirボリュームのbacking filesystemがプロジェクトクォータをサポートし有効になっている場合、プロジェクトクォータを使用して、パフォーマンスと精度を向上させるために、ファイルシステムへのアクセスではなくemptyDirボリュームストレージ消費を監視します。MountContainers
: ホスト上のユーティリティコンテナをボリュームマウンターとして使用できるようにします。MountPropagation
: あるコンテナによってマウントされたボリュームを他のコンテナまたはPodに共有できるようにします。詳細はマウントの伝播で確認できます。NodeDisruptionExclusion
: ノードラベルnode.kubernetes.io/exclude-disruption
の使用を有効にします。これにより、ゾーン障害時にノードが退避するのを防ぎます。NodeLease
: 新しいLease APIを有効にしてノードヘルスシグナルとして使用できるノードのハートビートをレポートします。NonPreemptingPriority
: PriorityClassとPodのNonPreemptingオプションを有効にします。PersistentLocalVolumes
: Podでlocal
ボリュームタイプの使用を有効にします。local
ボリュームを要求する場合、Podアフィニティを指定する必要があります。PodOverhead
: PodOverhead機能を有効にして、Podのオーバーヘッドを考慮するようにします。PodDisruptionBudget
: PodDisruptionBudget機能を有効にします。PodPriority
: 優先度に基づいてPodの再スケジューリングとプリエンプションを有効にします。PodReadinessGates
: Podのreadinessの評価を拡張するためにPodReadinessGate
フィールドの設定を有効にします。詳細はPod readiness gateで確認できます。PodShareProcessNamespace
: Podで実行されているコンテナ間で単一のプロセス名前空間を共有するには、PodでshareProcessNamespace
の設定を有効にします。詳細については、Pod内のコンテナ間でプロセス名前空間を共有するをご覧ください。ProcMountType
: コンテナのProcMountTypeの制御を有効にします。PVCProtection
: 永続ボリューム要求(PVC)がPodでまだ使用されているときに削除されないようにします。詳細はここで確認できます。QOSReserved
: QoSレベルでのリソース予約を許可して、低いQoSレベルのポッドが高いQoSレベルで要求されたリソースにバーストするのを防ぎます(現時点ではメモリのみ)。ResourceLimitsPriorityFunction
: 入力したPodのCPU制限とメモリ制限の少なくとも1つを満たすノードに対して最低スコアを1に割り当てるスケジューラー優先機能を有効にします。その目的は同じスコアを持つノード間の関係を断つことです。ResourceQuotaScopeSelectors
: リソース割当のスコープセレクターを有効にします。RotateKubeletClientCertificate
: kubeletでクライアントTLS証明書のローテーションを有効にします。詳細はkubeletの設定で確認できます。RotateKubeletServerCertificate
: kubeletでサーバーTLS証明書のローテーションを有効にします。詳細はkubeletの設定で確認できます。RunAsGroup
: コンテナの初期化プロセスで設定されたプライマリグループIDの制御を有効にします。RuntimeClass
: コンテナのランタイム構成を選択するにはRuntimeClass機能を有効にします。ScheduleDaemonSetPods
: DaemonSetのPodをDaemonSetコントローラーではなく、デフォルトのスケジューラーによってスケジュールされるようにします。SCTPSupport
:Service
、Endpoints
、NetworkPolicy
、Pod
の定義でprotocol
の値としてSCTPを使用できるようにしますServerSideApply
: APIサーバーでサーバーサイドApply(SSA)のパスを有効にします。ServiceAccountIssuerDiscovery
: APIサーバーにてサービスアカウント発行者のOIDC検出エンドポイント(発行者とJWKS URL)を有効にします。詳細については、Podのサービスアカウント設定をご覧ください。ServiceAppProtocol
: サービスとエンドポイントでAppProtocol
フィールドを有効にします。ServiceLoadBalancerFinalizer
: サービスロードバランサーのファイナライザー保護を有効にします。ServiceNodeExclusion
: クラウドプロバイダーによって作成されたロードバランサーからのノードの除外を有効にします。"alpha.service-controller.kubernetes.io/exclude-balancer
"キーまたはnode.kubernetes.io/exclude-from-external-load-balancers
でラベル付けされている場合ノードは除外の対象となります。ServiceTopology
: クラスタのノードトポロジーに基づいてトラフィックをルーティングするサービスを有効にします。詳細については、Serviceトポロジーを参照してください。StartupProbe
: kubeletでstartupプローブを有効にします。StorageObjectInUseProtection
: PersistentVolumeまたはPersistentVolumeClaimオブジェクトがまだ使用されている場合、それらの削除を延期します。StorageVersionHash
: apiserversがディスカバリーでストレージのバージョンハッシュを公開できるようにします。StreamingProxyRedirects
: ストリーミングリクエストのバックエンド(kubelet)からのリダイレクトをインターセプト(およびフォロー)するようAPIサーバーに指示します。ストリーミングリクエストの例にはexec
、attach
、port-forward
リクエストが含まれます。SupportIPVSProxyMode
: IPVSを使用したクラスター内サービスの負荷分散の提供を有効にします。詳細はサービスプロキシーで確認できます。SupportPodPidsLimit
: PodのPID制限のサポートを有効にします。Sysctls
: 各Podに設定できる名前空間付きのカーネルパラメーター(sysctl)のサポートを有効にします。詳細はsysctlsで確認できます。TaintBasedEvictions
: ノードのTaintとPodのTolerationに基づいてノードからPodを排除できるようにします。。詳細はTaintとTolerationで確認できます。TaintNodesByCondition
: ノードの条件に基づいてノードの自動Taintを有効にします。TokenRequest
: サービスアカウントリソースでTokenRequest
エンドポイントを有効にします。TokenRequestProjection
: Projectedボリュームを使用したPodへのサービスアカウントのトークンの注入を有効にします。TTLAfterFinished
: TTLコントローラーが実行終了後にリソースをクリーンアップできるようにします。VolumePVCDataSource
: 既存のPVCをデータソースとして指定するサポートを有効にします。VolumeScheduling
: ボリュームトポロジー対応のスケジューリングを有効にし、PersistentVolumeClaim(PVC)バインディングにスケジューリングの決定を認識させます。またPersistentLocalVolumes
フィーチャーゲートと一緒に使用するとlocal
ボリュームタイプの使用が可能になります。VolumeSnapshotDataSource
: ボリュームスナップショットのデータソースサポートを有効にします。VolumeSubpathEnvExpansion
: 環境変数をsubPath
に展開するためのsubPathExpr
フィールドを有効にします。WatchBookmark
: ブックマークイベントの監視サポートを有効にします。WindowsGMSA
: GMSA資格仕様をPodからコンテナランタイムに渡せるようにします。WindowsRunAsUserName
: デフォルト以外のユーザーでWindowsコンテナアプリケーションを実行するためのサポートを有効にします。詳細については、RunAsUserNameの設定を参照してください。WinDSR
: kube-proxyがWindows用のDSRロードバランサーを作成できるようにします。WinOverlay
: kube-proxyをWindowsのオーバーレイモードで実行できるようにします。
次の項目
- Kubernetesの非推奨ポリシーでは、機能とコンポーネントを削除するためのプロジェクトのアプローチを説明しています。
2 - Kubelet 認証/認可
概要
kubeletのHTTPSエンドポイントは、さまざまな感度のデータへのアクセスを提供するAPIを公開し、 ノードとコンテナ内のさまざまなレベルの権限でタスクを実行できるようにします。
このドキュメントでは、kubeletのHTTPSエンドポイントへのアクセスを認証および承認する方法について説明します。
Kubelet 認証
デフォルトでは、他の構成済み認証方法によって拒否されないkubeletのHTTPSエンドポイントへのリクエストは
匿名リクエストとして扱われ、ユーザー名はsystem:anonymous
、
グループはsystem:unauthenticated
になります。
匿名アクセスを無効にし、認証されていないリクエストに対して401 Unauthorized
応答を送信するには:
--anonymous-auth=false
フラグでkubeletを開始します。
kubeletのHTTPSエンドポイントに対するX509クライアント証明書認証を有効にするには:
--client-ca-file
フラグでkubeletを起動し、クライアント証明書を確認するためのCAバンドルを提供します。--kubelet-client-certificate
および--kubelet-client-key
フラグを使用してapiserverを起動します。- 詳細については、apiserver認証ドキュメントを参照してください。
APIベアラートークン(サービスアカウントトークンを含む)を使用して、kubeletのHTTPSエンドポイントへの認証を行うには:
- APIサーバーで
authentication.k8s.io/v1beta1
グループが有効になっていることを確認します。 --authentication-token-webhook
および--kubeconfig
フラグを使用してkubeletを開始します。- kubeletは、構成済みのAPIサーバーで
TokenReview
APIを呼び出して、ベアラートークンからユーザー情報を判別します。
Kubelet 承認
認証に成功した要求(匿名要求を含む)はすべて許可されます。デフォルトの認可モードは、すべての要求を許可するAlwaysAllow
です。
kubelet APIへのアクセスを細分化するのは、次のような多くの理由が考えられます:
- 匿名認証は有効になっていますが、匿名ユーザーがkubeletのAPIを呼び出す機能は制限する必要があります。
- ベアラートークン認証は有効になっていますが、kubeletのAPIを呼び出す任意のAPIユーザー(サービスアカウントなど)の機能を制限する必要があります。
- クライアント証明書の認証は有効になっていますが、構成されたCAによって署名されたクライアント証明書の一部のみがkubeletのAPIの使用を許可されている必要があります。
kubeletのAPIへのアクセスを細分化するには、APIサーバーに承認を委任します:
- APIサーバーで
authorization.k8s.io/v1beta1
APIグループが有効になっていることを確認します。 --authorization-mode=Webhook
と--kubeconfig
フラグでkubeletを開始します。- kubeletは、構成されたAPIサーバーで
SubjectAccessReview
APIを呼び出して、各リクエストが承認されているかどうかを判断します。
kubeletは、apiserverと同じリクエスト属性アプローチを使用してAPIリクエストを承認します。
動詞は、受けとったリクエストのHTTP動詞から決定されます:
HTTP動詞 | 要求 動詞 |
---|---|
POST | create |
GET, HEAD | get |
PUT | update |
PATCH | patch |
DELETE | delete |
リソースとサブリソースは、受けとったリクエストのパスから決定されます:
Kubelet API | リソース | サブリソース |
---|---|---|
/stats/* | nodes | stats |
/metrics/* | nodes | metrics |
/logs/* | nodes | log |
/spec/* | nodes | spec |
all others | nodes | proxy |
名前空間とAPIグループの属性は常に空の文字列であり、
リソース名は常にkubeletのNode
APIオブジェクトの名前です。
このモードで実行する場合は、apiserverに渡される--kubelet-client-certificate
フラグと--kubelet-client-key
フラグで識別されるユーザーが次の属性に対して許可されていることを確認します:
- verb=*, resource=nodes, subresource=proxy
- verb=*, resource=nodes, subresource=stats
- verb=*, resource=nodes, subresource=log
- verb=*, resource=nodes, subresource=spec
- verb=*, resource=nodes, subresource=metrics