From d91e7f094a967cd8eb623d9b1e6d0017633246c5 Mon Sep 17 00:00:00 2001 From: Laszlo Janosi Date: Tue, 3 Nov 2020 19:17:03 +0000 Subject: [PATCH 1/3] Document the use of mixed protocol values for LoadBalancer Type of Services --- .../concepts/services-networking/service.md | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/content/en/docs/concepts/services-networking/service.md b/content/en/docs/concepts/services-networking/service.md index 31dd0aca5ca07..f4f82e71b0df9 100644 --- a/content/en/docs/concepts/services-networking/service.md +++ b/content/en/docs/concepts/services-networking/service.md @@ -578,10 +578,6 @@ status: Traffic from the external load balancer is directed at the backend Pods. The cloud provider decides how it is load balanced. -For LoadBalancer type of Services, when there is more than one port defined, all -ports must have the same protocol, and the protocol must be one which is supported -by the cloud provider. - Some cloud providers allow you to specify the `loadBalancerIP`. In those cases, the load-balancer is created with the user-specified `loadBalancerIP`. If the `loadBalancerIP` field is not specified, the loadBalancer is set up with an ephemeral IP address. If you specify a `loadBalancerIP` @@ -599,6 +595,23 @@ Specify the assigned IP address as loadBalancerIP. Ensure that you have updated {{< /note >}} +#### Load balancers with mixed protocol types + +{{< feature-state for_k8s_version="v1.20" state="alpha" >}} + +By default, for LoadBalancer type of Services, when there is more than one port defined, all +ports must have the same protocol, and the protocol must be one which is supported +by the cloud provider. + +If the feature gate `MixedProtocolLBService` is enabled for the kube-apiserver it is allowed to use different protocols when there is more than one port defined. + +{{< note >}} + +The set of protocols that can be used for LoadBalancer type of Services is still defined by the cloud provider. + +{{< /note >}} + + #### Internal load balancer In a mixed environment it is sometimes necessary to route traffic from Services inside the same From ebf1a6148d0b40f5f5f83613b5c0e12e96615bd0 Mon Sep 17 00:00:00 2001 From: Laszlo Janosi Date: Sat, 14 Nov 2020 15:37:24 +0000 Subject: [PATCH 2/3] Add the MixedProtocolLBService to the feature gate list --- .../docs/reference/command-line-tools-reference/feature-gates.md | 1 + 1 file changed, 1 insertion(+) 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 dfc56430d2b4b..5bbc1015b814d 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 @@ -125,6 +125,7 @@ different Kubernetes components. | `LocalStorageCapacityIsolation` | `false` | Alpha | 1.7 | 1.9 | | `LocalStorageCapacityIsolation` | `true` | Beta | 1.10 | | | `LocalStorageCapacityIsolationFSQuotaMonitoring` | `false` | Alpha | 1.15 | | +| `MixedProtocolLBService` | `false` | Alpha | 1.20 | | | `MountContainers` | `false` | Alpha | 1.9 | | | `NodeDisruptionExclusion` | `false` | Alpha | 1.16 | 1.18 | | `NodeDisruptionExclusion` | `true` | Beta | 1.19 | | From c640aee6031bfaf1db660c063416a463419e6dd7 Mon Sep 17 00:00:00 2001 From: Laszlo Janosi Date: Tue, 17 Nov 2020 19:49:17 +0000 Subject: [PATCH 3/3] explain the new MixedProtocolLBService feature flag --- .../docs/reference/command-line-tools-reference/feature-gates.md | 1 + 1 file changed, 1 insertion(+) 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 5bbc1015b814d..664bf7356b41c 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 @@ -500,6 +500,7 @@ Each feature gate is designed for enabling/disabling a specific feature: - `LegacyNodeRoleBehavior`: When disabled, legacy behavior in service load balancers and node disruption will ignore the `node-role.kubernetes.io/master` label in favor of the feature-specific labels provided by `NodeDisruptionExclusion` and `ServiceNodeExclusion`. - `LocalStorageCapacityIsolation`: Enable the consumption of [local ephemeral storage](/docs/concepts/configuration/manage-resources-containers/) and also the `sizeLimit` property of an [emptyDir volume](/docs/concepts/storage/volumes/#emptydir). - `LocalStorageCapacityIsolationFSQuotaMonitoring`: When `LocalStorageCapacityIsolation` is enabled for [local ephemeral storage](/docs/concepts/configuration/manage-resources-containers/) and the backing filesystem for [emptyDir volumes](/docs/concepts/storage/volumes/#emptydir) supports project quotas and they are enabled, use project quotas to monitor [emptyDir volume](/docs/concepts/storage/volumes/#emptydir) storage consumption rather than filesystem walk for better performance and accuracy. +- `MixedProtocolLBService`: Enable using different protocols in the same LoadBalancer type Service instance. - `MountContainers`: Enable using utility containers on host as the volume mounter. - `MountPropagation`: Enable sharing volume mounted by one container to other containers or pods. For more details, please see [mount propagation](/docs/concepts/storage/volumes/#mount-propagation).