kube_features.go 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635
  1. /*
  2. Copyright 2017 The Kubernetes Authors.
  3. Licensed under the Apache License, Version 2.0 (the "License");
  4. you may not use this file except in compliance with the License.
  5. You may obtain a copy of the License at
  6. http://www.apache.org/licenses/LICENSE-2.0
  7. Unless required by applicable law or agreed to in writing, software
  8. distributed under the License is distributed on an "AS IS" BASIS,
  9. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  10. See the License for the specific language governing permissions and
  11. limitations under the License.
  12. */
  13. package features
  14. import (
  15. "k8s.io/apimachinery/pkg/util/runtime"
  16. genericfeatures "k8s.io/apiserver/pkg/features"
  17. utilfeature "k8s.io/apiserver/pkg/util/feature"
  18. "k8s.io/component-base/featuregate"
  19. )
  20. const (
  21. // Every feature gate should add method here following this template:
  22. //
  23. // // owner: @username
  24. // // alpha: v1.X
  25. // MyFeature featuregate.Feature = "MyFeature"
  26. // owner: @tallclair
  27. // beta: v1.4
  28. AppArmor featuregate.Feature = "AppArmor"
  29. // owner: @mtaufen
  30. // alpha: v1.4
  31. // beta: v1.11
  32. DynamicKubeletConfig featuregate.Feature = "DynamicKubeletConfig"
  33. // owner: @pweil-
  34. // alpha: v1.5
  35. //
  36. // Default userns=host for containers that are using other host namespaces, host mounts, the pod
  37. // contains a privileged container, or specific non-namespaced capabilities (MKNOD, SYS_MODULE,
  38. // SYS_TIME). This should only be enabled if user namespace remapping is enabled in the docker daemon.
  39. ExperimentalHostUserNamespaceDefaultingGate featuregate.Feature = "ExperimentalHostUserNamespaceDefaulting"
  40. // owner: @jiayingz
  41. // beta: v1.10
  42. //
  43. // Enables support for Device Plugins
  44. DevicePlugins featuregate.Feature = "DevicePlugins"
  45. // owner: @dxist
  46. // alpha: v1.16
  47. //
  48. // Enables support of HPA scaling to zero pods when an object or custom metric is configured.
  49. HPAScaleToZero featuregate.Feature = "HPAScaleToZero"
  50. // owner: @Huang-Wei
  51. // beta: v1.13
  52. //
  53. // Changes the logic behind evicting Pods from not ready Nodes
  54. // to take advantage of NoExecute Taints and Tolerations.
  55. TaintBasedEvictions featuregate.Feature = "TaintBasedEvictions"
  56. // owner: @mikedanese
  57. // alpha: v1.7
  58. // beta: v1.12
  59. //
  60. // Gets a server certificate for the kubelet from the Certificate Signing
  61. // Request API instead of generating one self signed and auto rotates the
  62. // certificate as expiration approaches.
  63. RotateKubeletServerCertificate featuregate.Feature = "RotateKubeletServerCertificate"
  64. // owner: @mikedanese
  65. // beta: v1.8
  66. //
  67. // Automatically renews the client certificate used for communicating with
  68. // the API server as the certificate approaches expiration.
  69. RotateKubeletClientCertificate featuregate.Feature = "RotateKubeletClientCertificate"
  70. // owner: @jinxu
  71. // beta: v1.10
  72. //
  73. // New local storage types to support local storage capacity isolation
  74. LocalStorageCapacityIsolation featuregate.Feature = "LocalStorageCapacityIsolation"
  75. // owner: @gnufied
  76. // beta: v1.11
  77. // Ability to Expand persistent volumes
  78. ExpandPersistentVolumes featuregate.Feature = "ExpandPersistentVolumes"
  79. // owner: @mlmhl
  80. // beta: v1.15
  81. // Ability to expand persistent volumes' file system without unmounting volumes.
  82. ExpandInUsePersistentVolumes featuregate.Feature = "ExpandInUsePersistentVolumes"
  83. // owner: @gnufied
  84. // alpha: v1.14
  85. // beta: v1.16
  86. // Ability to expand CSI volumes
  87. ExpandCSIVolumes featuregate.Feature = "ExpandCSIVolumes"
  88. // owner: @verb
  89. // alpha: v1.16
  90. //
  91. // Allows running an ephemeral container in pod namespaces to troubleshoot a running pod.
  92. EphemeralContainers featuregate.Feature = "EphemeralContainers"
  93. // owner: @verb
  94. // alpha: v1.10
  95. // beta: v1.12
  96. // GA: v1.17
  97. //
  98. // Allows all containers in a pod to share a process namespace.
  99. PodShareProcessNamespace featuregate.Feature = "PodShareProcessNamespace"
  100. // owner: @sjenning
  101. // alpha: v1.11
  102. //
  103. // Allows resource reservations at the QoS level preventing pods at lower QoS levels from
  104. // bursting into resources requested at higher QoS levels (memory only for now)
  105. QOSReserved featuregate.Feature = "QOSReserved"
  106. // owner: @ConnorDoyle
  107. // alpha: v1.8
  108. // beta: v1.10
  109. //
  110. // Alternative container-level CPU affinity policies.
  111. CPUManager featuregate.Feature = "CPUManager"
  112. // owner: @szuecs
  113. // alpha: v1.12
  114. //
  115. // Enable nodes to change CPUCFSQuotaPeriod
  116. CPUCFSQuotaPeriod featuregate.Feature = "CustomCPUCFSQuotaPeriod"
  117. // owner: @lmdaly
  118. // alpha: v1.16
  119. //
  120. // Enable resource managers to make NUMA aligned decisions
  121. TopologyManager featuregate.Feature = "TopologyManager"
  122. // owner: @sjenning
  123. // beta: v1.11
  124. //
  125. // Enable pods to set sysctls on a pod
  126. Sysctls featuregate.Feature = "Sysctls"
  127. // owner @smarterclayton
  128. // alpha: v1.16
  129. //
  130. // Enable legacy behavior to vary cluster functionality on the node-role.kubernetes.io labels. On by default (legacy), will be turned off in 1.18.
  131. LegacyNodeRoleBehavior featuregate.Feature = "LegacyNodeRoleBehavior"
  132. // owner @brendandburns
  133. // alpha: v1.9
  134. //
  135. // Enable nodes to exclude themselves from service load balancers
  136. ServiceNodeExclusion featuregate.Feature = "ServiceNodeExclusion"
  137. // owner @smarterclayton
  138. // alpha: v1.16
  139. //
  140. // Enable nodes to exclude themselves from network disruption checks
  141. NodeDisruptionExclusion featuregate.Feature = "NodeDisruptionExclusion"
  142. // owner: @saad-ali
  143. // alpha: v1.12
  144. // beta: v1.14
  145. // Enable all logic related to the CSIDriver API object in storage.k8s.io
  146. CSIDriverRegistry featuregate.Feature = "CSIDriverRegistry"
  147. // owner: @verult
  148. // alpha: v1.12
  149. // beta: v1.14
  150. // ga: v1.17
  151. // Enable all logic related to the CSINode API object in storage.k8s.io
  152. CSINodeInfo featuregate.Feature = "CSINodeInfo"
  153. // owner: @screeley44
  154. // alpha: v1.9
  155. // beta: v1.13
  156. //
  157. // Enable Block volume support in containers.
  158. BlockVolume featuregate.Feature = "BlockVolume"
  159. // owner: @pospispa
  160. // GA: v1.11
  161. //
  162. // Postpone deletion of a PV or a PVC when they are being used
  163. StorageObjectInUseProtection featuregate.Feature = "StorageObjectInUseProtection"
  164. // owner: @aveshagarwal
  165. // alpha: v1.9
  166. //
  167. // Enable resource limits priority function
  168. ResourceLimitsPriorityFunction featuregate.Feature = "ResourceLimitsPriorityFunction"
  169. // owner: @m1093782566
  170. // GA: v1.11
  171. //
  172. // Implement IPVS-based in-cluster service load balancing
  173. SupportIPVSProxyMode featuregate.Feature = "SupportIPVSProxyMode"
  174. // owner: @dims, @derekwaynecarr
  175. // alpha: v1.10
  176. // beta: v1.14
  177. //
  178. // Implement support for limiting pids in pods
  179. SupportPodPidsLimit featuregate.Feature = "SupportPodPidsLimit"
  180. // owner: @feiskyer
  181. // alpha: v1.10
  182. //
  183. // Enable Hyper-V containers on Windows
  184. HyperVContainer featuregate.Feature = "HyperVContainer"
  185. // owner: @mikedanese
  186. // beta: v1.12
  187. //
  188. // Implement TokenRequest endpoint on service account resources.
  189. TokenRequest featuregate.Feature = "TokenRequest"
  190. // owner: @mikedanese
  191. // beta: v1.12
  192. //
  193. // Enable ServiceAccountTokenVolumeProjection support in ProjectedVolumes.
  194. TokenRequestProjection featuregate.Feature = "TokenRequestProjection"
  195. // owner: @mikedanese
  196. // alpha: v1.13
  197. //
  198. // Migrate ServiceAccount volumes to use a projected volume consisting of a
  199. // ServiceAccountTokenVolumeProjection. This feature adds new required flags
  200. // to the API server.
  201. BoundServiceAccountTokenVolume featuregate.Feature = "BoundServiceAccountTokenVolume"
  202. // owner: @Random-Liu
  203. // beta: v1.11
  204. //
  205. // Enable container log rotation for cri container runtime
  206. CRIContainerLogRotation featuregate.Feature = "CRIContainerLogRotation"
  207. // owner: @krmayankk
  208. // beta: v1.14
  209. //
  210. // Enables control over the primary group ID of containers' init processes.
  211. RunAsGroup featuregate.Feature = "RunAsGroup"
  212. // owner: @saad-ali
  213. // ga
  214. //
  215. // Allow mounting a subpath of a volume in a container
  216. // Do not remove this feature gate even though it's GA
  217. VolumeSubpath featuregate.Feature = "VolumeSubpath"
  218. // owner: @gnufied
  219. // beta : v1.12
  220. // GA : v1.17
  221. //
  222. // Add support for volume plugins to report node specific
  223. // volume limits
  224. AttachVolumeLimit featuregate.Feature = "AttachVolumeLimit"
  225. // owner: @ravig
  226. // alpha: v1.11
  227. //
  228. // Include volume count on node to be considered for balanced resource allocation while scheduling.
  229. // A node which has closer cpu,memory utilization and volume count is favoured by scheduler
  230. // while making decisions.
  231. BalanceAttachedNodeVolumes featuregate.Feature = "BalanceAttachedNodeVolumes"
  232. // owner: @kevtaylor
  233. // alpha: v1.14
  234. // beta: v1.15
  235. // ga: v1.17
  236. //
  237. // Allow subpath environment variable substitution
  238. // Only applicable if the VolumeSubpath feature is also enabled
  239. VolumeSubpathEnvExpansion featuregate.Feature = "VolumeSubpathEnvExpansion"
  240. // owner: @vladimirvivien
  241. // alpha: v1.11
  242. // beta: v1.14
  243. //
  244. // Enables CSI to use raw block storage volumes
  245. CSIBlockVolume featuregate.Feature = "CSIBlockVolume"
  246. // owner: @vladimirvivien
  247. // alpha: v1.14
  248. // beta: v1.16
  249. //
  250. // Enables CSI Inline volumes support for pods
  251. CSIInlineVolume featuregate.Feature = "CSIInlineVolume"
  252. // owner: @tallclair
  253. // alpha: v1.12
  254. // beta: v1.14
  255. //
  256. // Enables RuntimeClass, for selecting between multiple runtimes to run a pod.
  257. RuntimeClass featuregate.Feature = "RuntimeClass"
  258. // owner: @mtaufen
  259. // alpha: v1.12
  260. // beta: v1.14
  261. // GA: v1.17
  262. //
  263. // Kubelet uses the new Lease API to report node heartbeats,
  264. // (Kube) Node Lifecycle Controller uses these heartbeats as a node health signal.
  265. NodeLease featuregate.Feature = "NodeLease"
  266. // owner: @janosi
  267. // alpha: v1.12
  268. //
  269. // Enables SCTP as new protocol for Service ports, NetworkPolicy, and ContainerPort in Pod/Containers definition
  270. SCTPSupport featuregate.Feature = "SCTPSupport"
  271. // owner: @xing-yang
  272. // alpha: v1.12
  273. // beta: v1.17
  274. //
  275. // Enable volume snapshot data source support.
  276. VolumeSnapshotDataSource featuregate.Feature = "VolumeSnapshotDataSource"
  277. // owner: @jessfraz
  278. // alpha: v1.12
  279. //
  280. // Enables control over ProcMountType for containers.
  281. ProcMountType featuregate.Feature = "ProcMountType"
  282. // owner: @janetkuo
  283. // alpha: v1.12
  284. //
  285. // Allow TTL controller to clean up Pods and Jobs after they finish.
  286. TTLAfterFinished featuregate.Feature = "TTLAfterFinished"
  287. // owner: @dashpole
  288. // alpha: v1.13
  289. // beta: v1.15
  290. //
  291. // Enables the kubelet's pod resources grpc endpoint
  292. KubeletPodResources featuregate.Feature = "KubeletPodResources"
  293. // owner: @davidz627
  294. // alpha: v1.14
  295. // beta: v1.17
  296. //
  297. // Enables the in-tree storage to CSI Plugin migration feature.
  298. CSIMigration featuregate.Feature = "CSIMigration"
  299. // owner: @davidz627
  300. // alpha: v1.14
  301. // beta: v1.17
  302. //
  303. // Enables the GCE PD in-tree driver to GCE CSI Driver migration feature.
  304. CSIMigrationGCE featuregate.Feature = "CSIMigrationGCE"
  305. // owner: @davidz627
  306. // alpha: v1.17
  307. //
  308. // Disables the GCE PD in-tree driver.
  309. // Expects GCE PD CSI Driver to be installed and configured on all nodes.
  310. CSIMigrationGCEComplete featuregate.Feature = "CSIMigrationGCEComplete"
  311. // owner: @leakingtapan
  312. // alpha: v1.14
  313. // beta: v1.17
  314. //
  315. // Enables the AWS EBS in-tree driver to AWS EBS CSI Driver migration feature.
  316. CSIMigrationAWS featuregate.Feature = "CSIMigrationAWS"
  317. // owner: @leakingtapan
  318. // alpha: v1.17
  319. //
  320. // Disables the AWS EBS in-tree driver.
  321. // Expects AWS EBS CSI Driver to be installed and configured on all nodes.
  322. CSIMigrationAWSComplete featuregate.Feature = "CSIMigrationAWSComplete"
  323. // owner: @andyzhangx
  324. // alpha: v1.15
  325. //
  326. // Enables the Azure Disk in-tree driver to Azure Disk Driver migration feature.
  327. CSIMigrationAzureDisk featuregate.Feature = "CSIMigrationAzureDisk"
  328. // owner: @andyzhangx
  329. // alpha: v1.17
  330. //
  331. // Disables the Azure Disk in-tree driver.
  332. // Expects Azure Disk CSI Driver to be installed and configured on all nodes.
  333. CSIMigrationAzureDiskComplete featuregate.Feature = "CSIMigrationAzureDiskComplete"
  334. // owner: @andyzhangx
  335. // alpha: v1.15
  336. //
  337. // Enables the Azure File in-tree driver to Azure File Driver migration feature.
  338. CSIMigrationAzureFile featuregate.Feature = "CSIMigrationAzureFile"
  339. // owner: @andyzhangx
  340. // alpha: v1.17
  341. //
  342. // Disables the Azure File in-tree driver.
  343. // Expects Azure File CSI Driver to be installed and configured on all nodes.
  344. CSIMigrationAzureFileComplete featuregate.Feature = "CSIMigrationAzureFileComplete"
  345. // owner: @RobertKrawitz
  346. // beta: v1.15
  347. //
  348. // Implement support for limiting pids in nodes
  349. SupportNodePidsLimit featuregate.Feature = "SupportNodePidsLimit"
  350. // owner: @wk8
  351. // alpha: v1.14
  352. // beta: v1.16
  353. //
  354. // Enables GMSA support for Windows workloads.
  355. WindowsGMSA featuregate.Feature = "WindowsGMSA"
  356. // owner: @bclau
  357. // alpha: v1.16
  358. // beta: v1.17
  359. //
  360. // Enables support for running container entrypoints as different usernames than their default ones.
  361. WindowsRunAsUserName featuregate.Feature = "WindowsRunAsUserName"
  362. // owner: @adisky
  363. // alpha: v1.14
  364. // beta: v1.18
  365. //
  366. // Enables the OpenStack Cinder in-tree driver to OpenStack Cinder CSI Driver migration feature.
  367. CSIMigrationOpenStack featuregate.Feature = "CSIMigrationOpenStack"
  368. // owner: @adisky
  369. // alpha: v1.17
  370. //
  371. // Disables the OpenStack Cinder in-tree driver.
  372. // Expects the OpenStack Cinder CSI Driver to be installed and configured on all nodes.
  373. CSIMigrationOpenStackComplete featuregate.Feature = "CSIMigrationOpenStackComplete"
  374. // owner: @MrHohn
  375. // alpha: v1.15
  376. // beta: v1.16
  377. // GA: v1.17
  378. //
  379. // Enables Finalizer Protection for Service LoadBalancers.
  380. ServiceLoadBalancerFinalizer featuregate.Feature = "ServiceLoadBalancerFinalizer"
  381. // owner: @RobertKrawitz
  382. // alpha: v1.15
  383. //
  384. // Allow use of filesystems for ephemeral storage monitoring.
  385. // Only applies if LocalStorageCapacityIsolation is set.
  386. LocalStorageCapacityIsolationFSQuotaMonitoring featuregate.Feature = "LocalStorageCapacityIsolationFSQuotaMonitoring"
  387. // owner: @denkensk
  388. // alpha: v1.15
  389. //
  390. // Enables NonPreempting option for priorityClass and pod.
  391. NonPreemptingPriority featuregate.Feature = "NonPreemptingPriority"
  392. // owner: @j-griffith
  393. // alpha: v1.15
  394. // beta: v1.16
  395. //
  396. // Enable support for specifying an existing PVC as a DataSource
  397. VolumePVCDataSource featuregate.Feature = "VolumePVCDataSource"
  398. // owner: @egernst
  399. // alpha: v1.16
  400. //
  401. // Enables PodOverhead, for accounting pod overheads which are specific to a given RuntimeClass
  402. PodOverhead featuregate.Feature = "PodOverhead"
  403. // owner: @khenidak
  404. // alpha: v1.15
  405. //
  406. // Enables ipv6 dual stack
  407. IPv6DualStack featuregate.Feature = "IPv6DualStack"
  408. // owner: @robscott @freehan
  409. // alpha: v1.16
  410. //
  411. // Enable Endpoint Slices for more scalable Service endpoints.
  412. EndpointSlice featuregate.Feature = "EndpointSlice"
  413. // owner: @robscott @freehan
  414. // alpha: v1.18
  415. //
  416. // Enable Endpoint Slice consumption by kube-proxy for improved scalability.
  417. EndpointSliceProxying featuregate.Feature = "EndpointSliceProxying"
  418. // owner: @Huang-Wei
  419. // alpha: v1.16
  420. //
  421. // Schedule pods evenly across available topology domains.
  422. EvenPodsSpread featuregate.Feature = "EvenPodsSpread"
  423. // owner: @matthyx
  424. // alpha: v1.16
  425. // beta: v1.18
  426. //
  427. // Enables the startupProbe in kubelet worker.
  428. StartupProbe featuregate.Feature = "StartupProbe"
  429. // owner: @deads2k
  430. // beta: v1.17
  431. //
  432. // Enables the users to skip TLS verification of kubelets on pod logs requests
  433. AllowInsecureBackendProxy featuregate.Feature = "AllowInsecureBackendProxy"
  434. // owner: @mortent
  435. // alpha: v1.3
  436. // beta: v1.5
  437. //
  438. // Enable all logic related to the PodDisruptionBudget API object in policy
  439. PodDisruptionBudget featuregate.Feature = "PodDisruptionBudget"
  440. // owner: @m1093782566
  441. // alpha: v1.17
  442. //
  443. // Enables topology aware service routing
  444. ServiceTopology featuregate.Feature = "ServiceTopology"
  445. // owner: @wojtek-t
  446. // alpha: v1.18
  447. //
  448. // Enables a feature to make secrets and configmaps data immutable.
  449. ImmutableEphemeralVolumes featuregate.Feature = "ImmutableEphemeralVolumes"
  450. )
  451. func init() {
  452. runtime.Must(utilfeature.DefaultMutableFeatureGate.Add(defaultKubernetesFeatureGates))
  453. }
  454. // defaultKubernetesFeatureGates consists of all known Kubernetes-specific feature keys.
  455. // To add a new feature, define a key for it above and add it here. The features will be
  456. // available throughout Kubernetes binaries.
  457. var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureSpec{
  458. AppArmor: {Default: true, PreRelease: featuregate.Beta},
  459. DynamicKubeletConfig: {Default: true, PreRelease: featuregate.Beta},
  460. ExperimentalHostUserNamespaceDefaultingGate: {Default: false, PreRelease: featuregate.Beta},
  461. DevicePlugins: {Default: true, PreRelease: featuregate.Beta},
  462. TaintBasedEvictions: {Default: true, PreRelease: featuregate.Beta},
  463. RotateKubeletServerCertificate: {Default: true, PreRelease: featuregate.Beta},
  464. RotateKubeletClientCertificate: {Default: true, PreRelease: featuregate.Beta},
  465. LocalStorageCapacityIsolation: {Default: true, PreRelease: featuregate.Beta},
  466. Sysctls: {Default: true, PreRelease: featuregate.Beta},
  467. EphemeralContainers: {Default: false, PreRelease: featuregate.Alpha},
  468. PodShareProcessNamespace: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.19
  469. QOSReserved: {Default: false, PreRelease: featuregate.Alpha},
  470. ExpandPersistentVolumes: {Default: true, PreRelease: featuregate.Beta},
  471. ExpandInUsePersistentVolumes: {Default: true, PreRelease: featuregate.Beta},
  472. ExpandCSIVolumes: {Default: true, PreRelease: featuregate.Beta},
  473. AttachVolumeLimit: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.19
  474. CPUManager: {Default: true, PreRelease: featuregate.Beta},
  475. CPUCFSQuotaPeriod: {Default: false, PreRelease: featuregate.Alpha},
  476. TopologyManager: {Default: false, PreRelease: featuregate.Alpha},
  477. ServiceNodeExclusion: {Default: false, PreRelease: featuregate.Alpha},
  478. NodeDisruptionExclusion: {Default: false, PreRelease: featuregate.Alpha},
  479. CSIDriverRegistry: {Default: true, PreRelease: featuregate.Beta},
  480. CSINodeInfo: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.19
  481. BlockVolume: {Default: true, PreRelease: featuregate.Beta},
  482. StorageObjectInUseProtection: {Default: true, PreRelease: featuregate.GA},
  483. ResourceLimitsPriorityFunction: {Default: false, PreRelease: featuregate.Alpha},
  484. SupportIPVSProxyMode: {Default: true, PreRelease: featuregate.GA},
  485. SupportPodPidsLimit: {Default: true, PreRelease: featuregate.Beta},
  486. SupportNodePidsLimit: {Default: true, PreRelease: featuregate.Beta},
  487. HyperVContainer: {Default: false, PreRelease: featuregate.Alpha},
  488. TokenRequest: {Default: true, PreRelease: featuregate.Beta},
  489. TokenRequestProjection: {Default: true, PreRelease: featuregate.Beta},
  490. BoundServiceAccountTokenVolume: {Default: false, PreRelease: featuregate.Alpha},
  491. CRIContainerLogRotation: {Default: true, PreRelease: featuregate.Beta},
  492. CSIMigration: {Default: true, PreRelease: featuregate.Beta},
  493. CSIMigrationGCE: {Default: false, PreRelease: featuregate.Beta}, // Off by default (requires GCE PD CSI Driver)
  494. CSIMigrationGCEComplete: {Default: false, PreRelease: featuregate.Alpha},
  495. CSIMigrationAWS: {Default: false, PreRelease: featuregate.Beta}, // Off by default (requires AWS EBS CSI driver)
  496. CSIMigrationAWSComplete: {Default: false, PreRelease: featuregate.Alpha},
  497. CSIMigrationAzureDisk: {Default: false, PreRelease: featuregate.Alpha},
  498. CSIMigrationAzureDiskComplete: {Default: false, PreRelease: featuregate.Alpha},
  499. CSIMigrationAzureFile: {Default: false, PreRelease: featuregate.Alpha},
  500. CSIMigrationAzureFileComplete: {Default: false, PreRelease: featuregate.Alpha},
  501. RunAsGroup: {Default: true, PreRelease: featuregate.Beta},
  502. CSIMigrationOpenStack: {Default: false, PreRelease: featuregate.Beta}, // Off by default (requires OpenStack Cinder CSI driver)
  503. CSIMigrationOpenStackComplete: {Default: false, PreRelease: featuregate.Alpha},
  504. VolumeSubpath: {Default: true, PreRelease: featuregate.GA},
  505. BalanceAttachedNodeVolumes: {Default: false, PreRelease: featuregate.Alpha},
  506. VolumeSubpathEnvExpansion: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.19,
  507. CSIBlockVolume: {Default: true, PreRelease: featuregate.Beta},
  508. CSIInlineVolume: {Default: true, PreRelease: featuregate.Beta},
  509. RuntimeClass: {Default: true, PreRelease: featuregate.Beta},
  510. NodeLease: {Default: true, PreRelease: featuregate.GA, LockToDefault: true},
  511. SCTPSupport: {Default: false, PreRelease: featuregate.Alpha},
  512. VolumeSnapshotDataSource: {Default: true, PreRelease: featuregate.Beta},
  513. ProcMountType: {Default: false, PreRelease: featuregate.Alpha},
  514. TTLAfterFinished: {Default: false, PreRelease: featuregate.Alpha},
  515. KubeletPodResources: {Default: true, PreRelease: featuregate.Beta},
  516. WindowsGMSA: {Default: true, PreRelease: featuregate.Beta},
  517. WindowsRunAsUserName: {Default: true, PreRelease: featuregate.Beta},
  518. ServiceLoadBalancerFinalizer: {Default: true, PreRelease: featuregate.GA, LockToDefault: true},
  519. LocalStorageCapacityIsolationFSQuotaMonitoring: {Default: false, PreRelease: featuregate.Alpha},
  520. NonPreemptingPriority: {Default: false, PreRelease: featuregate.Alpha},
  521. VolumePVCDataSource: {Default: true, PreRelease: featuregate.Beta},
  522. PodOverhead: {Default: false, PreRelease: featuregate.Alpha},
  523. IPv6DualStack: {Default: false, PreRelease: featuregate.Alpha},
  524. EndpointSlice: {Default: true, PreRelease: featuregate.Beta},
  525. EndpointSliceProxying: {Default: false, PreRelease: featuregate.Alpha},
  526. EvenPodsSpread: {Default: false, PreRelease: featuregate.Alpha},
  527. StartupProbe: {Default: true, PreRelease: featuregate.Beta},
  528. AllowInsecureBackendProxy: {Default: true, PreRelease: featuregate.Beta},
  529. PodDisruptionBudget: {Default: true, PreRelease: featuregate.Beta},
  530. ServiceTopology: {Default: false, PreRelease: featuregate.Alpha},
  531. ImmutableEphemeralVolumes: {Default: false, PreRelease: featuregate.Alpha},
  532. // inherited features from generic apiserver, relisted here to get a conflict if it is changed
  533. // unintentionally on either side:
  534. genericfeatures.StreamingProxyRedirects: {Default: true, PreRelease: featuregate.Beta},
  535. genericfeatures.ValidateProxyRedirects: {Default: true, PreRelease: featuregate.Beta},
  536. genericfeatures.AdvancedAuditing: {Default: true, PreRelease: featuregate.GA},
  537. genericfeatures.DynamicAuditing: {Default: false, PreRelease: featuregate.Alpha},
  538. genericfeatures.APIResponseCompression: {Default: true, PreRelease: featuregate.Beta},
  539. genericfeatures.APIListChunking: {Default: true, PreRelease: featuregate.Beta},
  540. genericfeatures.DryRun: {Default: true, PreRelease: featuregate.Beta},
  541. genericfeatures.ServerSideApply: {Default: true, PreRelease: featuregate.Beta},
  542. genericfeatures.APIPriorityAndFairness: {Default: false, PreRelease: featuregate.Alpha},
  543. // features that enable backwards compatibility but are scheduled to be removed
  544. // ...
  545. HPAScaleToZero: {Default: false, PreRelease: featuregate.Alpha},
  546. LegacyNodeRoleBehavior: {Default: true, PreRelease: featuregate.Alpha},
  547. }