Merge pull request #26826 from bridgetkromhout/1.21-563
Promote IPv4/IPv6 dual-stack support to Beta
This commit is contained in:
commit
31c5e7bce2
|
@ -16,11 +16,11 @@ weight: 70
|
||||||
|
|
||||||
<!-- overview -->
|
<!-- overview -->
|
||||||
|
|
||||||
{{< feature-state for_k8s_version="v1.16" state="alpha" >}}
|
{{< feature-state for_k8s_version="v1.21" state="beta" >}}
|
||||||
|
|
||||||
IPv4/IPv6 dual-stack enables the allocation of both IPv4 and IPv6 addresses to {{< glossary_tooltip text="Pods" term_id="pod" >}} and {{< glossary_tooltip text="Services" term_id="service" >}}.
|
IPv4/IPv6 dual-stack networking enables the allocation of both IPv4 and IPv6 addresses to {{< glossary_tooltip text="Pods" term_id="pod" >}} and {{< glossary_tooltip text="Services" term_id="service" >}}.
|
||||||
|
|
||||||
If you enable IPv4/IPv6 dual-stack networking for your Kubernetes cluster, the cluster will support the simultaneous assignment of both IPv4 and IPv6 addresses.
|
IPv4/IPv6 dual-stack networking is enabled by default for your Kubernetes cluster starting in 1.21, allowing the simultaneous assignment of both IPv4 and IPv6 addresses.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ If you enable IPv4/IPv6 dual-stack networking for your Kubernetes cluster, the c
|
||||||
|
|
||||||
## Supported Features
|
## Supported Features
|
||||||
|
|
||||||
Enabling IPv4/IPv6 dual-stack on your Kubernetes cluster provides the following features:
|
IPv4/IPv6 dual-stack on your Kubernetes cluster provides the following features:
|
||||||
|
|
||||||
* Dual-stack Pod networking (a single IPv4 and IPv6 address assignment per Pod)
|
* Dual-stack Pod networking (a single IPv4 and IPv6 address assignment per Pod)
|
||||||
* IPv4 and IPv6 enabled Services
|
* IPv4 and IPv6 enabled Services
|
||||||
|
@ -45,34 +45,34 @@ The following prerequisites are needed in order to utilize IPv4/IPv6 dual-stack
|
||||||
* Provider support for dual-stack networking (Cloud provider or otherwise must be able to provide Kubernetes nodes with routable IPv4/IPv6 network interfaces)
|
* Provider support for dual-stack networking (Cloud provider or otherwise must be able to provide Kubernetes nodes with routable IPv4/IPv6 network interfaces)
|
||||||
* A network plugin that supports dual-stack (such as Kubenet or Calico)
|
* A network plugin that supports dual-stack (such as Kubenet or Calico)
|
||||||
|
|
||||||
## Enable IPv4/IPv6 dual-stack
|
## Configure IPv4/IPv6 dual-stack
|
||||||
|
|
||||||
To enable IPv4/IPv6 dual-stack, enable the `IPv6DualStack` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/) for the relevant components of your cluster, and set dual-stack cluster network assignments:
|
To use IPv4/IPv6 dual-stack, ensure the `IPv6DualStack` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/) is enabled for the relevant components of your cluster. (Starting in 1.21, IPv4/IPv6 dual-stack defaults to enabled.)
|
||||||
|
|
||||||
|
To configure IPv4/IPv6 dual-stack, set dual-stack cluster network assignments:
|
||||||
|
|
||||||
* kube-apiserver:
|
* kube-apiserver:
|
||||||
* `--feature-gates="IPv6DualStack=true"`
|
|
||||||
* `--service-cluster-ip-range=<IPv4 CIDR>,<IPv6 CIDR>`
|
* `--service-cluster-ip-range=<IPv4 CIDR>,<IPv6 CIDR>`
|
||||||
* kube-controller-manager:
|
* kube-controller-manager:
|
||||||
* `--feature-gates="IPv6DualStack=true"`
|
|
||||||
* `--cluster-cidr=<IPv4 CIDR>,<IPv6 CIDR>`
|
* `--cluster-cidr=<IPv4 CIDR>,<IPv6 CIDR>`
|
||||||
* `--service-cluster-ip-range=<IPv4 CIDR>,<IPv6 CIDR>`
|
* `--service-cluster-ip-range=<IPv4 CIDR>,<IPv6 CIDR>`
|
||||||
* `--node-cidr-mask-size-ipv4|--node-cidr-mask-size-ipv6` defaults to /24 for IPv4 and /64 for IPv6
|
* `--node-cidr-mask-size-ipv4|--node-cidr-mask-size-ipv6` defaults to /24 for IPv4 and /64 for IPv6
|
||||||
* kubelet:
|
|
||||||
* `--feature-gates="IPv6DualStack=true"`
|
|
||||||
* kube-proxy:
|
* kube-proxy:
|
||||||
* `--cluster-cidr=<IPv4 CIDR>,<IPv6 CIDR>`
|
* `--cluster-cidr=<IPv4 CIDR>,<IPv6 CIDR>`
|
||||||
* `--feature-gates="IPv6DualStack=true"`
|
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
An example of an IPv4 CIDR: `10.244.0.0/16` (though you would supply your own address range)
|
An example of an IPv4 CIDR: `10.244.0.0/16` (though you would supply your own address range)
|
||||||
|
|
||||||
An example of an IPv6 CIDR: `fdXY:IJKL:MNOP:15::/64` (this shows the format but is not a valid address - see [RFC 4193](https://tools.ietf.org/html/rfc4193))
|
An example of an IPv6 CIDR: `fdXY:IJKL:MNOP:15::/64` (this shows the format but is not a valid address - see [RFC 4193](https://tools.ietf.org/html/rfc4193))
|
||||||
|
|
||||||
|
Starting in 1.21, IPv4/IPv6 dual-stack defaults to enabled.
|
||||||
|
You can disable it when necessary by specifying `--feature-gates="IPv6DualStack=false"`
|
||||||
|
on the kube-apiserver, kube-controller-manager, kubelet, and kube-proxy command line.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
## Services
|
## Services
|
||||||
|
|
||||||
If your cluster has dual-stack enabled, you can create {{< glossary_tooltip text="Services" term_id="service" >}} which can use IPv4, IPv6, or both.
|
You can create {{< glossary_tooltip text="Services" term_id="service" >}} which can use IPv4, IPv6, or both.
|
||||||
|
|
||||||
The address family of a Service defaults to the address family of the first service cluster IP range (configured via the `--service-cluster-ip-range` flag to the kube-apiserver).
|
The address family of a Service defaults to the address family of the first service cluster IP range (configured via the `--service-cluster-ip-range` flag to the kube-apiserver).
|
||||||
|
|
||||||
|
@ -81,11 +81,9 @@ set the `.spec.ipFamilyPolicy` field to one of the following values:
|
||||||
|
|
||||||
* `SingleStack`: Single-stack service. The control plane allocates a cluster IP for the Service, using the first configured service cluster IP range.
|
* `SingleStack`: Single-stack service. The control plane allocates a cluster IP for the Service, using the first configured service cluster IP range.
|
||||||
* `PreferDualStack`:
|
* `PreferDualStack`:
|
||||||
* Only used if the cluster has dual-stack enabled. Allocates IPv4 and IPv6 cluster IPs for the Service
|
* Allocates IPv4 and IPv6 cluster IPs for the Service. (If the cluster has `--feature-gates="IPv6DualStack=false"`, this setting follows the same behavior as `SingleStack`.)
|
||||||
* If the cluster does not have dual-stack enabled, this setting follows the same behavior as `SingleStack`.
|
|
||||||
* `RequireDualStack`: Allocates Service `.spec.ClusterIPs` from both IPv4 and IPv6 address ranges.
|
* `RequireDualStack`: Allocates Service `.spec.ClusterIPs` from both IPv4 and IPv6 address ranges.
|
||||||
* Selects the `.spec.ClusterIP` from the list of `.spec.ClusterIPs` based on the address family of the first element in the `.spec.ipFamilies` array.
|
* Selects the `.spec.ClusterIP` from the list of `.spec.ClusterIPs` based on the address family of the first element in the `.spec.ipFamilies` array.
|
||||||
* The cluster must have dual-stack networking configured.
|
|
||||||
|
|
||||||
If you would like to define which IP family to use for single stack or define the order of IP families for dual-stack, you can choose the address families by setting an optional field, `.spec.ipFamilies`, on the Service.
|
If you would like to define which IP family to use for single stack or define the order of IP families for dual-stack, you can choose the address families by setting an optional field, `.spec.ipFamilies`, on the Service.
|
||||||
|
|
||||||
|
@ -126,7 +124,7 @@ These examples demonstrate the behavior of various dual-stack Service configurat
|
||||||
|
|
||||||
#### Dual-stack defaults on existing Services
|
#### Dual-stack defaults on existing Services
|
||||||
|
|
||||||
These examples demonstrate the default behavior when dual-stack is newly enabled on a cluster where Services already exist.
|
These examples demonstrate the default behavior when dual-stack is newly enabled on a cluster where Services already exist. (Upgrading an existing cluster to 1.21 will enable dual-stack unless `--feature-gates="IPv6DualStack=false"` is set.)
|
||||||
|
|
||||||
1. When dual-stack is enabled on a cluster, existing Services (whether `IPv4` or `IPv6`) are configured by the control plane to set `.spec.ipFamilyPolicy` to `SingleStack` and set `.spec.ipFamilies` to the address family of the existing Service. The existing Service cluster IP will be stored in `.spec.ClusterIPs`.
|
1. When dual-stack is enabled on a cluster, existing Services (whether `IPv4` or `IPv6`) are configured by the control plane to set `.spec.ipFamilyPolicy` to `SingleStack` and set `.spec.ipFamilies` to the address family of the existing Service. The existing Service cluster IP will be stored in `.spec.ClusterIPs`.
|
||||||
|
|
||||||
|
|
|
@ -123,7 +123,8 @@ different Kubernetes components.
|
||||||
| `HPAScaleToZero` | `false` | Alpha | 1.16 | |
|
| `HPAScaleToZero` | `false` | Alpha | 1.16 | |
|
||||||
| `HugePageStorageMediumSize` | `false` | Alpha | 1.18 | 1.18 |
|
| `HugePageStorageMediumSize` | `false` | Alpha | 1.18 | 1.18 |
|
||||||
| `HugePageStorageMediumSize` | `true` | Beta | 1.19 | |
|
| `HugePageStorageMediumSize` | `true` | Beta | 1.19 | |
|
||||||
| `IPv6DualStack` | `false` | Alpha | 1.15 | |
|
| `IPv6DualStack` | `false` | Alpha | 1.15 | 1.20 |
|
||||||
|
| `IPv6DualStack` | `true` | Beta | 1.21 | |
|
||||||
| `KubeletCredentialProviders` | `false` | Alpha | 1.20 | |
|
| `KubeletCredentialProviders` | `false` | Alpha | 1.20 | |
|
||||||
| `KubeletPodResources` | `true` | Alpha | 1.13 | 1.14 |
|
| `KubeletPodResources` | `true` | Alpha | 1.13 | 1.14 |
|
||||||
| `KubeletPodResources` | `true` | Beta | 1.15 | |
|
| `KubeletPodResources` | `true` | Beta | 1.15 | |
|
||||||
|
|
Loading…
Reference in New Issue