Using IPv6 on TKE
Assigning IPv6 Addresses to Pods
Below introduces how to assign IPv6 addresses to Pods in TKE.
Prerequisites
- VPC where cluster resides must have IPv6 enabled, and used subnet must obtain IPv6 CIDR.
- If Pods need scheduling to regular nodes or native nodes, select
IPv4/IPv6 Dual Stackfor cluster IP type during cluster creation.
Enabling IPv6 for VPC and Subnet
In VPC page, select cluster's VPC, click More-Edit IPv6 CIDR:

Then click Get:

Then in Subnet page, select VPC, then click More-Get IPv6 CIDR for subnets needing IPv6:

Using IPv6 with Super Nodes
If IPv6-needed Pods can be scheduled to super nodes, no cluster network requirements - just select subnet with IPv6 CIDR allocated during super node creation, then specify annotation in workload for Pod IPv6 support:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
annotations:
tke.cloud.tencent.com/ipv6-attributes: '{"InternetMaxBandwidthOut": 100}'
tke.cloud.tencent.com/need-ipv6-addr: "true"
# tke.cloud.tencent.com/ipv6-attributes: '{"BandwidthPackageId":"bwp-xxx","InternetChargeType":"BANDWIDTH_PACKAGE","InternetMaxBandwidthOut":1}' # For bandwidth package, reference this configuration
labels:
app: nginx
spec:
nodeSelector:
node.kubernetes.io/instance-type: eklet # Force scheduling to super nodes
containers:
- image: nginx:latest
name: nginx
Using IPv6 with Regular or Native Nodes
If Pods schedule to regular or native nodes, need to select operating system supporting IPv4/IPv6 Dual Stack when creating Standard Cluster, and select IPv4/IPv6 Dual Stack for cluster IP type:

Subsequently, any Pods created in cluster will have IPv6.
Using IPv6 CLB to Expose Services
Prerequisites
To expose services via IPv6 externally, use IPv6 CLB. IPv6-type CLB's backend addresses must be IPv6, so Pods need IPv6 addresses assigned - method refer to previous Assigning IPv6 Addresses to Pods.
Exposing via LoadBalancer-type Service
Specify using IPv6 CLB via annotations:
apiVersion: v1
kind: Service
metadata:
name: ipv6-svc
labels:
app: foo
annotations:
service.cloud.tencent.com/direct-access: "true"
service.kubernetes.io/service.extensiveParameters: '{"AddressIPVersion":"IPv6FullChain"}'
spec:
type: LoadBalancer
ports:
- port: 8000
protocol: TCP
targetPort: 8000
selector:
app: foo
Exposing via CLB-type Ingress
Specify using IPv6 CLB via annotations:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
ingress.cloud.tencent.com/direct-access: "true"
kubernetes.io/ingress.extensiveParameters: '{"AddressIPVersion":"IPv6FullChain"}'
name: ipv6-ingress
spec:
rules:
- host: example.com
http:
paths:
- backend:
service:
name: foo
port:
number: 80
path: /
pathType: ImplementationSpecific