Skip to content
This repository has been archived by the owner on Oct 24, 2023. It is now read-only.

docs: add dual-stack iptables api model #4185

Merged
merged 1 commit into from
Jan 22, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
44 changes: 20 additions & 24 deletions examples/dualstack/README.md
Original file line number Diff line number Diff line change
@@ -1,31 +1,27 @@
# AKS Engine - Dual Stack clusters
# AKS Engine - Dual-stack clusters

## Overview

AKS Engine enables you to create dual stack (IPv4 *and* IPv6) Kubernetes clusters on Microsoft Azure.
AKS Engine enables you to create dual-stack (IPv4 *and* IPv6) Kubernetes clusters on Microsoft Azure.

- Dual stack support is available for Kubernetes version 1.16.0 and later
- Dual stack services support was added in 1.20.0 (recommended kubernetes version)
- Dual-stack support is available for Kubernetes version 1.16.0 and later
- Dual-stack services support was added in 1.20.0 (recommended kubernetes version)

> Official docs are available here - https://kubernetes.io/docs/concepts/services-networking/dual-stack/

In order to create IPv6 enabled Azure virtual networks and use standard loadbalancer with IPv6 you must first configure your subscription [as follows](https://docs.microsoft.com/en-us/azure/virtual-network/virtual-network-ipv4-ipv6-dual-stack-cli#prerequisites).

This example shows you how to configure a dual stack cluster:
This example shows you how to configure a dual-stack cluster:

1. **kubernetes.json** - deploying and using [Kubernetes](kubernetes.json).

**Note**

The default node CIDR mask size for IPv6 is /64 and the default clusters subnet is `fc00::/48`. In 1.17+ node CIDR mask size can be configured by
The default node CIDR mask size for IPv6 is /64 and the default clusters subnet is `fc00::/48`. In 1.17+ node CIDR mask size can be configured by:

```
```yaml
"controllerManagerConfig" : {
"--node-cidr-mask-size-ipv6": <value>
}
```

**The difference between node CIDR mask size and cluster subnet mask size can't be > 16**
> The difference between node CIDR mask size and cluster subnet mask size can't be > 16**

Things to try out after the cluster is deployed -

Expand Down Expand Up @@ -106,22 +102,22 @@ spec:
type: LoadBalancer
```

```
azureuser@k8s-master-13083844-0:~$ kubectl get svc
```bash
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 58m
nginx-ipv6 LoadBalancer fd00::6283 2603:1030:805:3::3 80:31140/TCP 32s
```

## Limitations

- Dual stack clusters are supported only with kubenet and azurecni.
- Dual stack cluster with azurecni are only supported with `bridge` network mode.
- Dual stack clusters are supported only with Linux.
- Dual stack clusters with Windows is not supported at this time because it requires
- Kubernetes version 1.19+ and
- [backport to 2004 to support dualstack containers](https://github.com/Azure/aks-engine/issues/3568).
- Dual stack clusters are supported with
- ipvs kube-proxy mode (Kubernetes version 1.16+)
- iptables kube-proxy mode (Kubernetes version 1.18+).
- API model enables Azure Standard LB for dual stack clusters. Azure Basic LBs have a limitation of only 1 IPv6 frontend configurations while Standard LB supports up to 600 IPv6 frontend configurations.
- Dual-stack clusters are supported only with kubenet and azurecni.
- Dual-stack cluster with azurecni are only supported with `bridge` network mode.
- Dual-stack clusters are supported only with Linux.
- Dual-stack clusters with Windows is not supported at this time because it requires
- Kubernetes version 1.19+ and
- [backport to 2004 to support dual-stack containers](https://github.com/Azure/aks-engine/issues/3568).
- Dual-stack clusters are supported with
- `ipvs` kube-proxy mode (Kubernetes version 1.16+)
- `iptables` kube-proxy mode (Kubernetes version 1.18+).
- API model enables Azure Standard LB for dual-stack clusters. Azure Basic LBs have a limitation of only 1 IPv6 frontend configurations while Standard LB supports up to 600 IPv6 frontend configurations.
58 changes: 58 additions & 0 deletions examples/dualstack/kubernetes-iptables.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
{
"apiVersion": "vlabs",
"properties": {
"featureFlags": {
"enableIPv6DualStack": true
},
"orchestratorProfile": {
"orchestratorType": "Kubernetes",
"orchestratorRelease": "1.20",
"kubernetesConfig": {
"clusterSubnet": "10.244.0.0/16,fc00::/48",
"serviceCidr": "10.0.0.0/16,fd00::/108",
"dnsServiceIP": "10.0.0.10",
"kubeProxyMode": "iptables",
"networkPlugin": "kubenet",
"apiServerConfig": {
"--feature-gates": "IPv6DualStack=true"
},
"kubeletConfig": {
"--feature-gates": "IPv6DualStack=true",
"--max-pods": "110"
},
"controllerManagerConfig": {
"--feature-gates": "IPv6DualStack=true"
}
}
},
"masterProfile": {
"count": 1,
"dnsPrefix": "",
"vmSize": "Standard_D2_v2",
"distro": "ubuntu"
},
"agentPoolProfiles": [
{
"name": "linuxpool1",
"count": 2,
"vmSize": "Standard_D2_v2",
"distro": "ubuntu"
}
],
"linuxProfile": {
"adminUsername": "azureuser",
"ssh": {
"publicKeys": [
{
"keyData": ""
}
]
}
},
"servicePrincipalProfile": {
"clientId": "",
"secret": ""
}
}
}

8 changes: 6 additions & 2 deletions examples/dualstack/kubernetes.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@
"--feature-gates": "IPv6DualStack=true"
},
"kubeletConfig": {
"--feature-gates": "IPv6DualStack=true"
"--feature-gates": "IPv6DualStack=true",
"--hairpin-mode": "hairpin-veth",
"--max-pods": "110"
},
"controllerManagerConfig": {
"--feature-gates": "IPv6DualStack=true"
Expand All @@ -26,13 +28,15 @@
"masterProfile": {
"count": 1,
"dnsPrefix": "",
"vmSize": "Standard_D2_v2"
"vmSize": "Standard_D2_v2",
"distro": "ubuntu"
},
"agentPoolProfiles": [
{
"name": "linuxpool1",
"count": 2,
"vmSize": "Standard_D2_v2",
"distro": "ubuntu",
"availabilityProfile": "AvailabilitySet"
}
],
Expand Down