From b74f399e5e31692d68cac1a731d290ea7f1279a4 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Wed, 15 Jul 2020 10:42:44 -0700 Subject: [PATCH] Promote PodTopologySpread to stable in 1.19 --- .../pods/pod-topology-spread-constraints.md | 22 ++++++------------- .../feature-gates.md | 5 +++-- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/content/en/docs/concepts/workloads/pods/pod-topology-spread-constraints.md b/content/en/docs/concepts/workloads/pods/pod-topology-spread-constraints.md index d538775c53..a0d6623000 100644 --- a/content/en/docs/concepts/workloads/pods/pod-topology-spread-constraints.md +++ b/content/en/docs/concepts/workloads/pods/pod-topology-spread-constraints.md @@ -6,8 +6,6 @@ weight: 50 -{{< feature-state for_k8s_version="v1.18" state="beta" >}} - You can use _topology spread constraints_ to control how {{< glossary_tooltip text="Pods" term_id="Pod" >}} are spread across your cluster among failure-domains such as regions, zones, nodes, and other user-defined topology domains. This can help to achieve high availability as well as efficient resource utilization. @@ -16,13 +14,6 @@ You can use _topology spread constraints_ to control how {{< glossary_tooltip te ## Prerequisites -### Enable Feature Gate - -The `EvenPodsSpread` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/) -must be enabled for the -{{< glossary_tooltip text="API Server" term_id="kube-apiserver" >}} **and** -{{< glossary_tooltip text="scheduler" term_id="kube-scheduler" >}}. - ### Node Labels Topology spread constraints rely on node labels to identify the topology domain(s) that each Node is in. For example, a Node might have labels: `node=node1,zone=us-east-1a,region=us-east-1` @@ -53,7 +44,7 @@ Instead of manually applying labels, you can also reuse the [well-known labels]( ### API -The field `pod.spec.topologySpreadConstraints` is introduced in 1.16 as below: +The API field `pod.spec.topologySpreadConstraints` is defined as below: ``` apiVersion: v1 @@ -265,13 +256,14 @@ scheduled - more packed or more scattered. - For `PodAntiAffinity`, only one Pod can be scheduled into a single topology domain. -The "EvenPodsSpread" feature provides flexible options to distribute Pods evenly across different -topology domains - to achieve high availability or cost-saving. This can also help on rolling update -workloads and scaling out replicas smoothly. See [Motivation](https://github.com/kubernetes/enhancements/tree/master/keps/sig-scheduling/895-pod-topology-spread#motivation) for more details. +For finer control, you can specify topology spread constraints to distribute +Pods across different topology domains - to achieve either high availability or +cost-saving. This can also help on rolling update workloads and scaling out +replicas smoothly. See +[Motivation](https://github.com/kubernetes/enhancements/tree/master/keps/sig-scheduling/895-pod-topology-spread#motivation) +for more details. ## Known Limitations - Scaling down a Deployment may result in imbalanced Pods distribution. - Pods matched on tainted nodes are respected. See [Issue 80921](https://github.com/kubernetes/kubernetes/issues/80921) - - diff --git a/content/en/docs/reference/command-line-tools-reference/feature-gates.md b/content/en/docs/reference/command-line-tools-reference/feature-gates.md index e2b0017b78..4131604bff 100644 --- a/content/en/docs/reference/command-line-tools-reference/feature-gates.md +++ b/content/en/docs/reference/command-line-tools-reference/feature-gates.md @@ -101,8 +101,6 @@ different Kubernetes components. | `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 | | | `GenericEphemeralVolume` | `false` | Alpha | 1.19 | | | `HPAScaleToZero` | `false` | Alpha | 1.16 | | | `HugePageStorageMediumSize` | `false` | Alpha | 1.18 | 1.18 | @@ -225,6 +223,9 @@ different Kubernetes components. | `EnableEquivalenceClassCache` | - | Deprecated | 1.15 | - | | `ExperimentalCriticalPodAnnotation` | `false` | Alpha | 1.5 | 1.12 | | `ExperimentalCriticalPodAnnotation` | `false` | Deprecated | 1.13 | - | +| `EvenPodsSpread` | `false` | Alpha | 1.16 | 1.17 | +| `EvenPodsSpread` | `true` | Beta | 1.18 | 1.18 | +| `EvenPodsSpread` | `true` | GA | 1.19 | - | | `GCERegionalPersistentDisk` | `true` | Beta | 1.10 | 1.12 | | `GCERegionalPersistentDisk` | `true` | GA | 1.13 | - | | `HugePages` | `false` | Alpha | 1.8 | 1.9 |