Skip to content

Commit a9b21d2

Browse files
authored
Merge pull request #24593 from danwinship/sctp-ga
SCTP is GA in 1.20
2 parents 7cfdee6 + be23194 commit a9b21d2

File tree

3 files changed

+35
-56
lines changed

3 files changed

+35
-56
lines changed

content/en/docs/concepts/services-networking/network-policies.md

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -208,17 +208,6 @@ You can create a "default" policy for a namespace which prevents all ingress AND
208208

209209
This ensures that even pods that aren't selected by any other NetworkPolicy will not be allowed ingress or egress traffic.
210210

211-
## SCTP support
212-
213-
{{< feature-state for_k8s_version="v1.19" state="beta" >}}
214-
215-
As a beta feature, this is enabled by default. To disable SCTP at a cluster level, you (or your cluster administrator) will need to disable the `SCTPSupport` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/) for the API server with `--feature-gates=SCTPSupport=false,…`.
216-
When the feature gate is enabled, you can set the `protocol` field of a NetworkPolicy to `SCTP`.
217-
218-
{{< note >}}
219-
You must be using a {{< glossary_tooltip text="CNI" term_id="cni" >}} plugin that supports SCTP protocol NetworkPolicies.
220-
{{< /note >}}
221-
222211
# What you CAN'T do with network policies (at least, not yet)
223212

224213
As of Kubernetes 1.20, the following functionality does not exist in the NetworkPolicy API, but you might be able to implement workarounds using Operating System components (such as SELinux, OpenVSwitch, IPTables, and so on) or Layer 7 technologies (Ingress controllers, Service Mesh implementations) or admission controllers. In case you are new to network security in Kubernetes, its worth noting that the following User Stories cannot (yet) be implemented using the NetworkPolicy API. Some (but not all) of these user stories are actively being discussed for future releases of the NetworkPolicy API.

content/en/docs/concepts/services-networking/service.md

Lines changed: 32 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -579,20 +579,15 @@ status:
579579
Traffic from the external load balancer is directed at the backend Pods. The cloud provider decides how it is load balanced.
580580

581581
For LoadBalancer type of Services, when there is more than one port defined, all
582-
ports must have the same protocol and the protocol must be one of `TCP`, `UDP`,
583-
and `SCTP`.
582+
ports must have the same protocol, and the protocol must be one which is supported
583+
by the cloud provider.
584584

585585
Some cloud providers allow you to specify the `loadBalancerIP`. In those cases, the load-balancer is created
586586
with the user-specified `loadBalancerIP`. If the `loadBalancerIP` field is not specified,
587587
the loadBalancer is set up with an ephemeral IP address. If you specify a `loadBalancerIP`
588588
but your cloud provider does not support the feature, the `loadbalancerIP` field that you
589589
set is ignored.
590590

591-
{{< note >}}
592-
If you're using SCTP, see the [caveat](#caveat-sctp-loadbalancer-service-type) below about the
593-
`LoadBalancer` Service type.
594-
{{< /note >}}
595-
596591
{{< note >}}
597592

598593
On **Azure**, if you want to use a user-specified public type `loadBalancerIP`, you first need
@@ -1184,6 +1179,36 @@ You can use TCP for any kind of Service, and it's the default network protocol.
11841179
You can use UDP for most Services. For type=LoadBalancer Services, UDP support
11851180
depends on the cloud provider offering this facility.
11861181

1182+
### SCTP
1183+
1184+
{{< feature-state for_k8s_version="v1.20" state="stable" >}}
1185+
1186+
When using a network plugin that supports SCTP traffic, you can use SCTP for
1187+
most Services. For type=LoadBalancer Services, SCTP support depends on the cloud
1188+
provider offering this facility. (Most do not).
1189+
1190+
#### Warnings {#caveat-sctp-overview}
1191+
1192+
##### Support for multihomed SCTP associations {#caveat-sctp-multihomed}
1193+
1194+
{{< warning >}}
1195+
The support of multihomed SCTP associations requires that the CNI plugin can support the assignment of multiple interfaces and IP addresses to a Pod.
1196+
1197+
NAT for multihomed SCTP associations requires special logic in the corresponding kernel modules.
1198+
{{< /warning >}}
1199+
1200+
##### Windows {#caveat-sctp-windows-os}
1201+
1202+
{{< note >}}
1203+
SCTP is not supported on Windows based nodes.
1204+
{{< /note >}}
1205+
1206+
##### Userspace kube-proxy {#caveat-sctp-kube-proxy-userspace}
1207+
1208+
{{< warning >}}
1209+
The kube-proxy does not support the management of SCTP associations when it is in userspace mode.
1210+
{{< /warning >}}
1211+
11871212
### HTTP
11881213

11891214
If your cloud provider supports it, you can use a Service in LoadBalancer mode
@@ -1211,42 +1236,6 @@ PROXY TCP4 192.0.2.202 10.0.42.7 12345 7\r\n
12111236
12121237
followed by the data from the client.
12131238
1214-
### SCTP
1215-
1216-
{{< feature-state for_k8s_version="v1.19" state="beta" >}}
1217-
1218-
Kubernetes supports SCTP as a `protocol` value in Service, Endpoints, EndpointSlice, NetworkPolicy and Pod definitions. As a beta feature, this is enabled by default. To disable SCTP at a cluster level, you (or your cluster administrator) will need to disable the `SCTPSupport` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/) for the API server with `--feature-gates=SCTPSupport=false,…`.
1219-
1220-
When the feature gate is enabled, you can set the `protocol` field of a Service, Endpoints, EndpointSlice, NetworkPolicy or Pod to `SCTP`. Kubernetes sets up the network accordingly for the SCTP associations, just like it does for TCP connections.
1221-
1222-
#### Warnings {#caveat-sctp-overview}
1223-
1224-
##### Support for multihomed SCTP associations {#caveat-sctp-multihomed}
1225-
1226-
{{< warning >}}
1227-
The support of multihomed SCTP associations requires that the CNI plugin can support the assignment of multiple interfaces and IP addresses to a Pod.
1228-
1229-
NAT for multihomed SCTP associations requires special logic in the corresponding kernel modules.
1230-
{{< /warning >}}
1231-
1232-
##### Service with type=LoadBalancer {#caveat-sctp-loadbalancer-service-type}
1233-
1234-
{{< warning >}}
1235-
You can only create a Service with `type` LoadBalancer plus `protocol` SCTP if the cloud provider's load balancer implementation supports SCTP as a protocol. Otherwise, the Service creation request is rejected. The current set of cloud load balancer providers (Azure, AWS, CloudStack, GCE, OpenStack) all lack support for SCTP.
1236-
{{< /warning >}}
1237-
1238-
##### Windows {#caveat-sctp-windows-os}
1239-
1240-
{{< warning >}}
1241-
SCTP is not supported on Windows based nodes.
1242-
{{< /warning >}}
1243-
1244-
##### Userspace kube-proxy {#caveat-sctp-kube-proxy-userspace}
1245-
1246-
{{< warning >}}
1247-
The kube-proxy does not support the management of SCTP associations when it is in userspace mode.
1248-
{{< /warning >}}
1249-
12501239
## {{% heading "whatsnext" %}}
12511240
12521241
* Read [Connecting Applications with Services](/docs/concepts/services-networking/connect-applications-service/)

content/en/docs/reference/command-line-tools-reference/feature-gates.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,6 @@ different Kubernetes components.
136136
| `RunAsGroup` | `true` | Beta | 1.14 | |
137137
| `RuntimeClass` | `false` | Alpha | 1.12 | 1.13 |
138138
| `RuntimeClass` | `true` | Beta | 1.14 | |
139-
| `SCTPSupport` | `false` | Alpha | 1.12 | 1.18 |
140-
| `SCTPSupport` | `true` | Beta | 1.19 | |
141139
| `ServiceAppProtocol` | `false` | Alpha | 1.18 | 1.18 |
142140
| `ServiceAppProtocol` | `true` | Beta | 1.19 | |
143141
| `ServerSideApply` | `false` | Alpha | 1.14 | 1.15 |
@@ -274,6 +272,9 @@ different Kubernetes components.
274272
| `ScheduleDaemonSetPods` | `false` | Alpha | 1.11 | 1.11 |
275273
| `ScheduleDaemonSetPods` | `true` | Beta | 1.12 | 1.16 |
276274
| `ScheduleDaemonSetPods` | `true` | GA | 1.17 | - |
275+
| `SCTPSupport` | `false` | Alpha | 1.12 | 1.18 |
276+
| `SCTPSupport` | `true` | Beta | 1.19 | 1.19 |
277+
| `SCTPSupport` | `true` | GA | 1.20 | - |
277278
| `ServiceLoadBalancerFinalizer` | `false` | Alpha | 1.15 | 1.15 |
278279
| `ServiceLoadBalancerFinalizer` | `true` | Beta | 1.16 | 1.16 |
279280
| `ServiceLoadBalancerFinalizer` | `true` | GA | 1.17 | - |

0 commit comments

Comments
 (0)