弹性容器实例同时支持 IPv4 和 IPv6 双栈网络能力,相比 IPv4,IPv6 大大扩展了地址的可用空间。本文主要介绍如何为 VCI 实例配置 IPv4/IPv6 双栈网络。
VCI Pod 主网卡和辅助网卡均支持 IPv4 和 IPv6 双栈网络。补齐 IPv6 支持的能力,满足 Pod 在双栈模式下运行的需求。
说明
【邀测·申请试用】:双栈网络功能目前处于邀测阶段,如需使用,请提交申请。
IPv6 目前在其他火山引擎产品侧(包括 VPC、VKE、CLB、ALB 等) 均处于邀测阶段,如需使用,请在 各产品侧 一并提交邀测申请。本文示例用到的其他产品如下,请提前在相关产品侧提交 IPv6 邀测申请:
说明
若使用 CR 产品中上传的镜像,请确保镜像仓库实例已添加双栈集群使用的 VPC 的访问权限。详细操作,请参见 连通本账号 VPC。
通过添加 Pod Annotation 方式,为弹性容器实例配置 IPv4/IPv6 双栈网络。
Annotation 说明,如下所示。
Annotation Key | Annotation Value 示例值 | 说明 | 是否必填 |
---|---|---|---|
vci.vke.volcengine.com/pod-ip-family | ipv4 | VCI Pod 主网卡使用的协议栈。取值如下:
| 本场景必填 |
vke.volcengine.com/preferred-network-interface | 对象类型 | VCI Pod 辅助网卡配置。数组类型,数组中每个对象均代表一张辅助网卡的配置信息。详情如本文下方 辅助网卡配置信息表 所示。 | 非必填 |
Key | 示例值 | 说明 | 是否必填 |
---|---|---|---|
Type | "Secondary" | 弹性网卡类型,配置辅助网卡时,此处必须为"Secondary" 。 | 必填 |
SubnetIds | ["subnet-os74b******"] | 子网 ID。
| 必填 |
SecurityGroupIds | ["sg-123edf******"] | 弹性网卡加入的安全组列表。
| 必填 |
SecondaryPrivateIpAddressCount | 1 | 辅助网卡的辅助私网 IP 数量,取值范围:1~2。 注意
| 非必填 |
Ipv6AddressCount | 1 | VCI Pod 辅助网卡的 IPv6 地址数量,取值范围:1~2。 | 非必填 |
本文以指定子网创建 VCI 实例时,同时配置 IPv4/IPv6 双栈网络为例。创建 VCI 实例的详细操作,请参见 指定容器 vCPU 和内存创建实例、指定 VCI 规格创建实例、指定子网创建实例。
下文以在 IPv4/IPv6 双栈集群中创建无状态负载(Deployment)为例。
nginx-deployment.yaml
代码如下:说明
下方为示例代码,实际使用中,请自行更新参数取值并删除 辅助网卡配置信息 部分的注释信息。
apiVersion: apps/v1 kind: Deployment metadata: name: # Deployment名称。 spec: replicas: 2 # Deployment 副本数量。 selector: matchLabels: app: nginx template: metadata: annotations: vke.volcengine.com/burst-to-vci: enforce # 强制使用 VCI。 vke.volcengine.com/preferred-subnet-ids: subnet-3tispp1nai**** # 指定子网 ID。 vci.vke.volcengine.com/pod-ip-family: dualstack # 主网卡使用的协议栈。 vke.volcengine.com/preferred-network-interface: # 辅助网卡配置信息。 '[{ "Type":"Secondary", # 网卡类型,必须填写 "Secondary",代表辅助网卡。 "SubnetIds":["subnet-os74b94e***"], # 辅助网卡的子网 ID。 "SecurityGroupIds":["sg-123edfgt8***"], # 辅助网卡所在的安全组 ID。 "SecondaryPrivateIpAddressCount": 1, # 辅助网卡的辅助私网 IP 数量。 "Ipv6AddressCount": 1 # 辅助网卡的 IPv6 地址数量。 }]' labels: app: nginx spec: containers: - name: nginx image: cr-cn-beijing.volces.com/tw/nginx:1.0 # 容器镜像的地址和版本,请配置为您自己的镜像地址。 ports: - containerPort: 80
kubectl create -f nginx-deployment.yaml
预期输出结果如下:kubectl get pods -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-deployment-6b9cd76fb8-ht2z2 1/1 Running 0 24m 192.168.0.2 vci-node1-cn-shanghai-a <none> <none> nginx-deployment-6b9cd76fb8-m7krc 1/1 Running 0 24m 192.168.0.3 vci-node1-cn-shanghai-a <none> <none>
预期输出结果如下,在kubectl describe pod <your_pod_name>
IPs
参数下,获取当前 Pod 的 IPv4 和 IPv6 地址:下文以创建无状态负载(Deployment)为例,其他工作负载的创建方法与之相似。详细的操作步骤和参数说明,请参见 创建无状态负载。
说明
弹性容器实例不支持守护进程(Daemonset)。更多信息,请参见 使用限制。
为 VCI Pod 配置 IPv4/IPv6 双栈网络后,VCI 实例将会获得由系统自动分配的 IPv6 地址,该地址可以直接用于私有网络(VPC)内的网络通信。如果希望通过该 IPv6 地址进行公网通信,则需要使用火山引擎的 IPv6 网关功能。
注意
请确保 IPv6 网关所在的私有网络,与 VKE 集群(双栈集群)私有网络相同。