跳到主要内容

在 TKE 上使用 IPv6

为 Pod 分配 IPv6 地址​

下面介绍在 TKE 中如何为 Pod 分配 IPv6 地址。

前提条件​

  1. 集群所在 VPC 启用 IPv6,并且使用的子网需获取 IPv6 CIDR。
  2. 如果 Pod 需调度到普通节点或原生节点,在创建集群时,集群 IP 类型选 IPv4/IPv6双栈。

VPC 和子网启用 IPv6 的方法​

在私有网络页面,选中集群所使用的 VPC,点击更多-编辑IPv6 CIDR:

然后点获取:

然后在子网页面,选中 VPC,然后对需要使用 IPv6 的子网点击更多-获取 IPv6 CIDR:

超级节点使用 IPv6​

如果你能让需要 IPv6 的 Pod 调度到超级节点上,那么对集群网络就没有要求,只需在创建超级节点时选分配了 IPv6 网段的子网,然后在工作负载里为 Pod 指定下注解就能让 Pod 支持 IPv6:

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}' # 如需带宽包,参考这个配置
labels:
app: nginx
spec:
nodeSelector:
node.kubernetes.io/instance-type: eklet # 强制调度到超级节点
containers:
- image: nginx:latest
name: nginx

普通节点或原生节点使用 IPv6​

如果你的 Pod 调度到普通节点或原生节点,需要在创建 标准集群 的时候选支持 IPv4/IPv6双栈 的操作系统,且集群 IP 类型选择IPv4/IPv6双栈:

后续在集群中创建的任何 Pod 就都会带有 IPv6 了。

使用 IPv6 CLB 暴露服务​

前提条件​

要想将你的服务通过 IPv6 对外暴露,可使用 IPv6 CLB,而 IPv6 类型的 CLB 绑定的后端地址需是 IPv6,所以也需要 Pod 分配了 IPv6 地址,方法参考前面的为 Pod 分配 IPv6 地址。

通过 LoadBalancer 类型 Service 暴露​

通过注解指定使用 IPv6 的 CLB:

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

通过 CLB 类型 Ingress 暴露​

通过注解指定使用 IPv6 的 CLB:

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