本页面介绍了 Google Distributed Cloud Connected 随附的专用网络功能 Kubernetes 运算符。此运算符实现了一组 CustomResourceDefinitions (CRD),可让 Distributed Cloud 连接的集群执行高性能工作负载。
分布式云连接服务器不支持网络功能运营商和 SR-IOV 功能。
借助网络功能运算符,您可以执行以下操作:
- 轮询节点上的现有网络设备。
- 查询节点上每个网络设备的 IP 地址和物理链路状态。
- 在节点上预配其他网络接口。
- 在节点的物理机上配置支持高性能工作负载所需的低级系统功能。
- 在 PCI Express 网络接口上使用单根输入/输出虚拟化 (SR-IOV),将其虚拟化为多个虚拟接口。然后,您可以配置 Distributed Cloud 连接的工作负载,以使用这些虚拟网络接口。
Distributed Cloud Connected 对 SR-IOV 的支持基于以下开源项目:
前提条件
网络功能运营商从 Distributed Cloud Edge Network API 获取网络配置。
如需允许此操作,您必须使用以下命令向网络功能运营商服务账号授予 Edge Network Viewer 角色 (roles/edgenetwork.viewer):
gcloud projects add-iam-policy-binding ZONE_PROJECT_ID \ --role roles/edgenetwork.viewer \ --member "serviceAccount:CLUSTER_PROJECT_ID.svc.id.goog[nf-operator/nf-angautomator-sa]"
替换以下内容:
- 将
ZONE_PROJECT_ID替换为包含 Distributed Cloud Edge Network API 资源的 Google Cloud 项目的 ID。 - 将
CLUSTER_PROJECT_ID替换为包含目标 Distributed Cloud Connected Cluster 的 Google Cloud 项目的 ID。
网络功能运营商资源
分布式云互联网络功能运算符实现了以下 Kubernetes CRD:
Network。定义 Pod 可用于与内部和外部资源通信的虚拟网络。您必须先使用 Distributed Cloud Edge Network API 创建相应的 VLAN,然后才能在此资源中指定该 VLAN。如需了解相关说明,请参阅创建网络。NetworkInterfaceState。支持发现网络接口状态,以及查询网络接口的链路状态和 IP 地址。NodeSystemConfigUpdate。可用于配置内核选项和Kubelet标志等低层级系统功能。SriovNetworkNodePolicy. 选择一组 SR-IOV 虚拟化网络接口,并将该组实例化为 Kubernetes 资源。您可以在NetworkAttachmentDefinition资源中使用此资源。SriovNetworkNodeState。用于查询 Distributed Cloud 节点上SriovNetworkNodePolicy资源的配置状态。NetworkAttachmentDefinition。可让您将 Distributed Cloud pod 连接到 Distributed Cloud connected 节点上的一个或多个逻辑或物理网络。您必须先使用 Distributed Cloud Edge Network API 创建相应的 VLAN,然后才能在此资源中指定该 VLAN。如需了解相关说明,请参阅创建网络。
网络功能运算符还允许您定义不使用 SR-IOV 虚拟功能的辅助网络接口。
Network 项资源
Network 资源定义了分布式云连接机架内的虚拟网络,分布式云连接集群中的 Pod 可以使用该虚拟网络与内部和外部资源进行通信。
Network 资源为作为可写字段公开的网络接口提供以下可配置的参数:
spec.type:指定相应网络的网络传输层。唯一的有效值为L2。您还必须指定nodeInterfaceMatcher.interfaceName值。spec.nodeInterfaceMatcher.interfaceName:目标 Distributed Cloud connected 节点上要与此网络配合使用的物理网络接口的名称。spec.gateway4:相应网络的网络网关的 IP 地址。spec.l2NetworkConfig.prefixLength4:指定相应网络的 CIDR 范围。annotations.networking.gke.io/gdce-vlan-id:指定相应网络的 VLAN ID。annotations.networking.gke.io/gdce-vlan-mtu:(可选)指定相应网络的 MTU 值。如果省略,则从父接口继承 MTU 值。annotations.networking.gke.io/gdce-lb-service-vip-cidr:指定负载均衡服务的虚拟 IP 地址范围。该值可以是 CIDR 块或明确的地址范围值。对于第 3 层负载均衡,此注解是必需的;对于第 2 层负载均衡,此注解是可选的。
以下示例展示了资源的结构:
apiVersion: networking.gke.io/v1
kind: Network
metadata:
name: vlan200-network
annotations:
networking.gke.io/gdce-vlan-id: 200
networking.gke.io/gdce-vlan-mtu: 1500
networking.gke.io/gdce-lb-service-vip-cidrs: "10.1.1.0/24"
spec:
type: L2
nodeInterfaceMatcher:
interfaceName: gdcenet0.200
gateway4: 10.53.0.1
如需为负载均衡服务指定多个虚拟 IP 地址范围,请使用 networking.gke.io/gdce-lb-service-vip-cidrs 注解。您可以提供此注解的值,可以是英文逗号分隔的列表,也可以是 JSON 载荷。例如:
[
{
"name": "test-oam-3",
"addresses": ["10.235.128.133-10.235.128.133"],
"autoAssign": false
}
,
{
"name": "test-oam-4",
"addresses": ["10.235.128.134-10.235.128.134"],
"autoAssign": false
},
{
"name": "test-oam-5",
"addresses": ["10.235.128.135-10.235.128.135"],
"autoAssign": false
}
]
如果您选择使用 JSON 载荷,建议您使用精简的 JSON 格式。例如:
apiVersion: networking.gke.io/v1
kind: Network
metadata:
annotations:
networking.gke.io/gdce-lb-service-vip-cidrs: '[{"name":"test-oam-3","addresses":["10.235.128.133-10.235.128.133"],"autoAssign":false},{"name":"test-oam-4","addresses":["10.235.128.134-10.235.128.134"],"autoAssign":false},{"name":"test-oam-5","addresses":["10.235.128.135-10.235.128.135"],"autoAssign":false}]'
networking.gke.io/gdce-vlan-id: "81"
name: test-network-vlan81
spec:
IPAMMode: Internal
dnsConfig:
nameservers:
- 8.8.8.8
gateway4: 192.168.81.1
l2NetworkConfig:
prefixLength4: 24
nodeInterfaceMatcher:
interfaceName: gdcenet0.81
type: L2
请注意,如果省略 autoAssign 字段,则该字段默认为 false。
NetworkInterfaceState 项资源
NetworkInterfaceState 资源是一种只读资源,可让您发现节点上的物理网络接口,并收集流经这些接口的网络流量的运行时统计信息。Distributed Cloud 会为集群中的每个节点创建一个 NetworkInterfaceState 资源。
Distributed Cloud 已连接机器的默认配置包括 Rack Select Network Daughter Card (rNDC) 上名为 gdcenet0 的绑定网络接口。此接口会绑定 eno1np0 和 eno2np1 网络接口。每个连接分别连接到一个分布式云 ToR 交换机。
NetworkInterfaceState 资源提供以下类别的网络接口信息,这些信息以只读状态字段的形式公开。
一般信息:
status.interfaces.ifname:目标网络接口的名称。status.lastReportTime:目标接口的上次状态报告的时间和日期。
IP 地址配置信息:
status.interfaces.interfaceinfo.address:分配给目标接口的 IP 地址。status.interfaces.interfaceinfo.dns:分配给目标接口的 DNS 服务器的 IP 地址。status.interfaces.interfaceinfo.gateway:为目标接口提供服务的网络网关的 IP 地址。status.interfaces.interfaceinfo.prefixlen:IP 前缀的长度。
硬件信息:
status.interfaces.linkinfo.broadcast:目标接口的广播 MAC 地址。status.interfaces.linkinfo.businfo:采用bus:slot.function格式的 PCIe 设备路径。status.interfaces.linkinfo.flags:接口标志,例如BROADCAST。status.interfaces.linkinfo.macAddress:目标接口的单播 MAC 地址。status.interfaces.linkinfo.mtu:目标接口的 MTU 值。
接收统计信息:
status.interfaces.statistics.rx.bytes:目标接口接收的总字节数。status.interfaces.statistics.rx.dropped:目标接口丢弃的数据包总数。status.interfaces.statistics.rx.errors:目标接口的总数据包接收错误数。status.interfaces.statistics.rx.multicast:目标接口收到的多播数据包总数。status.interfaces.statistics.rx.overErrors:目标接口的总数据包接收量与错误数之比。status.interfaces.statistics.rx.packets:目标接口接收的数据包总数。
传播统计信息:
status.interfaces.statistics.tx.bytes:目标接口传输的总字节数。status.interfaces.statistics.tx.carrierErrors:目标接口遇到的载波错误总数。status.interfaces.statistics.tx.collisions:目标接口遇到的数据包冲突总数。status.interfaces.statistics.tx.dropped:目标接口丢弃的数据包总数。status.interfaces.statistics.tx.errors:目标接口的总传输错误数。status.interfaces.statistics.tx.packets:目标接口传输的数据包总数。
以下示例展示了资源的结构:
apiVersion: networking.gke.io/v1
kind: NetworkInterfaceState
metadata:
name: MyNode1
nodeName: MyNode1
status:
interfaces:
- ifname: eno1np0
linkinfo:
businfo: 0000:1a:00.0
flags: up|broadcast|multicast
macAddress: ba:16:03:9e:9c:87
mtu: 9000
statistics:
rx:
bytes: 1098522811
errors: 2
multicast: 190926
packets: 4988200
tx:
bytes: 62157709961
packets: 169847139
- ifname: eno2np1
linkinfo:
businfo: 0000:1a:00.1
flags: up|broadcast|multicast
macAddress: ba:16:03:9e:9c:87
mtu: 9000
statistics:
rx:
bytes: 33061895405
multicast: 110203
packets: 110447356
tx:
bytes: 2370516278
packets: 11324730
- ifname: enp95s0f0np0
interfaceinfo:
- address: fe80::63f:72ff:fec4:2bf4
prefixlen: 64
linkinfo:
businfo: 0000:5f:00.0
flags: up|broadcast|multicast
macAddress: 04:3f:72:c4:2b:f4
mtu: 9000
statistics:
rx:
bytes: 37858381
multicast: 205645
packets: 205645
tx:
bytes: 1207334
packets: 6542
- ifname: enp95s0f1np1
interfaceinfo:
- address: fe80::63f:72ff:fec4:2bf5
prefixlen: 64
linkinfo:
businfo: 0000:5f:00.1
flags: up|broadcast|multicast
macAddress: 04:3f:72:c4:2b:f5
mtu: 9000
statistics:
rx:
bytes: 37852406
multicast: 205607
packets: 205607
tx:
bytes: 1207872
packets: 6545
- ifname: enp134s0f0np0
interfaceinfo:
- address: fe80::63f:72ff:fec4:2b6c
prefixlen: 64
linkinfo:
businfo: 0000:86:00.0
flags: up|broadcast|multicast
macAddress: 04:3f:72:c4:2b:6c
mtu: 9000
statistics:
rx:
bytes: 37988773
multicast: 205584
packets: 205584
tx:
bytes: 1212385
packets: 6546
- ifname: enp134s0f1np1
interfaceinfo:
- address: fe80::63f:72ff:fec4:2b6d
prefixlen: 64
linkinfo:
businfo: 0000:86:00.1
flags: up|broadcast|multicast
macAddress: 04:3f:72:c4:2b:6d
mtu: 9000
statistics:
rx:
bytes: 37980702
multicast: 205548
packets: 205548
tx:
bytes: 1212297
packets: 6548
- ifname: gdcenet0
interfaceinfo:
- address: 208.117.254.36
prefixlen: 28
- address: fe80::b816:3ff:fe9e:9c87
prefixlen: 64
linkinfo:
flags: up|broadcast|multicast
macAddress: ba:16:03:9e:9c:87
mtu: 9000
statistics:
rx:
bytes: 34160422968
errors: 2
multicast: 301129
packets: 115435591
tx:
bytes: 64528301111
packets: 181171964
.. <remaining interfaces omitted>
lastReportTime: "2022-03-30T07:35:44Z"
NodeSystemConfigUpdate 项资源
借助 NodeSystemConfigUpdate 资源,您可以更改节点的操作系统配置,还可以修改 Kubelet 标志。除 sysctl 更改之外的更改需要重启节点。
实例化此资源时,您必须在 nodeSelector 字段中指定目标节点。您必须在 nodeSelector 字段中包含每个目标节点的所有键值对。如果您在此字段中指定多个目标节点,系统会一次更新一个目标节点。
注意:nodeName 字段已弃用。使用此命令会立即重新启动目标节点(包括本地控制平面节点),这可能会导致关键工作负载停止。
NodeSystemConfigUpdate 资源提供以下特定于 Distributed Cloud Connected 的配置字段:
spec.containerRuntimeDNSConfig.ip:指定私有映像注册表的 IP 地址列表。spec.containerRuntimeDNSConfig:指定由每个连接的分布式云节点上的容器运行时环境使用的一系列自定义 DNS 条目。每个条目都包含以下字段:ip:指定目标 IPv4 地址,domain:指定相应网域,interface:指定网络出站流量接口,通过该接口可以访问ip字段中指定的 IP 地址。 您可以通过以下资源指定接口:CustomNetworkInterfaceConfig、Network(通过注解)、NetworkAttachmentDefinition(通过注解)。这是一项预览版功能。
spec.kubeletConfig.cpuManagerPolicy:指定 Kubernetes CPUManager 政策。有效值为None和Static。spec.kubeletConfig.topologyManagerPolicy:指定 Kubernetes TopologyManager 政策。有效值包括None、BestEffort、Restricted和SingleNumaMode。spec.osConfig.hugePagesConfig:指定每个 NUMA 节点的巨型页配置。有效值为2MB和1GB。所请求的大内存页数量在系统中的两个 NUMA 节点之间均匀分布。例如,如果您分配 16 个 1 GB 大小的大内存页,则每个节点都会预分配 8 GB 的内存。spec.osConfig.isolatedCpusPerSocket:指定每个插槽的隔离 CPU 数量。如果cpuManagerPolicy设置为Static,则此字段为必填字段。隔离 CPU 的最大数量必须小于节点中总 CPU 数量的 80%。spec.osConfig.cpuIsolationPolicy:指定 CPU 隔离政策。Default政策仅将systemd任务与为工作负载预留的 CPU 隔离开来。Kernel政策将 CPU 标记为isolcpus,并在每个 CPU 上设置rcu_nocb、nohz_full和rcu_nocb_poll标志。spec.sysctls.NodeLevel:指定了您可以使用网络功能运算符在节点上全局配置的sysctls参数。可配置的参数如下:fs.inotify.max_user_instancesfs.inotify.max_user_watcheskernel.sched_rt_runtime_uskernel.core_patternnet.ipv4.tcp_wmemnet.ipv4.tcp_rmemnet.ipv4.tcp_slow_start_after_idlenet.ipv4.udp_rmem_minnet.ipv4.udp_wmem_minnet.ipv4.tcp_rmemnet.ipv4.tcp_wmemnet.core.rmem_maxnet.core.wmem_maxnet.core.rmem_defaultnet.core.wmem_defaultnet.netfilter.nf_conntrack_tcp_timeout_unacknowledgednet.netfilter.nf_conntrack_tcp_timeout_max_retransnet.sctp.auth_enablenet.sctp.sctp_memnet.ipv4.udp_memnet.ipv4.tcp_memnet.ipv4.tcp_slow_start_after_idlenet.sctp.auth_enablevm.max_map_count
您还可以使用
tuning容器网络接口 (CNI) 插件将安全和不安全的sysctls参数限定到特定 pod 或命名空间。
NodeSystemConfigUpdate 资源提供以下只读的一般状态字段:
status.lastReportTime:目标接口最近一次报告状态的时间。status.conditions.lastTransitionTime:接口状况最近一次发生变化的时间。status.conditions.observedGeneration:表示初始条件所依据的.metadata.generation值。status.conditions.message:描述接口状况变化的参考消息。status.conditions.reason:一个程序化标识符,表示接口上次更改状态的原因。status.conditions.status:相应情况的状态描述符。有效值为True、False和Unknown。status.conditions.type:采用驼峰命名法的条件类型。
以下示例展示了资源的结构:
apiVersion: networking.gke.io/v1
kind: NodeSystemConfigUpdate
metadata:
name: node-pool-1-config
namespace: default
spec:
nodeSelector:
baremetal.cluster.gke.io/node-pool: node-pool-1
networking.gke.io/worker-network-sriov.capable: true
sysctls:
nodeLevel:
"net.ipv4.udp_mem" : "12348035 16464042 24696060"
kubeletConfig:
topologyManagerPolicy: BestEffort
cpuManagerPolicy: Static
osConfig:
hugePagesConfig:
"TWO_MB": 0
"ONE_GB": 16
isolatedCpusPerSocket:
"0": 10
"1": 10
SriovNetworkNodePolicy 项资源
借助 SriovNetworkNodePolicy 资源,您可以在连接到分布式云的物理机上分配一组 SR-IOV 虚拟函数 (VF),并将该组实例化为 Kubernetes 资源。然后,您可以在 NetworkAttachmentDefinition 资源中使用此资源。
您可以按 PCIe 供应商和设备 ID、PCIe 设备地址或 Linux 枚举设备名称来选择每个目标 VF。SR-IOV 网络运算符会配置每个物理网络接口,以预配目标 VF。这包括更新网络接口固件、配置 Linux 内核驱动程序,以及在必要时重启 Distributed Cloud 连接的机器。
如需发现节点上可用的网络接口,您可以查找 nf-operator 命名空间中该节点上的 NetworkInterfaceState 资源。
以下示例展示了资源的结构:
apiVersion: sriovnetwork.k8s.cni.cncf.io/v1
kind: SriovNetworkNodePolicy
metadata:
name: mlnx6-p2-sriov-en2
namespace: sriov-network-operator
spec:
deviceType: netdevice
isRdma: true
mtu: 9000
nicSelector:
pfNames:
- enp134s0f1np1
nodeSelector:
edgecontainer.googleapis.com/network-sriov.capable: "true"
numVfs: 31
priority: 99
resourceName: mlnx6_p2_sriov_en2
上例从名为 enp134s0f1np1 的网络接口上的第二个端口创建最多 31 个 VF,MTU 值为 9000(允许的最大值)。使用节点选择器标签 edgecontainer.googleapis.com/network-sriov.capable,该标签存在于所有支持 SR-IOV 的 Distributed Cloud 连接节点上。
如需了解如何使用此资源,请参阅 SriovNetworkNodeState。
SriovNetworkNodeState 项资源
通过 SriovNetworkNodeState 只读资源,您可以查询分布式云连接节点上 SriovNetworkNodePolicy 资源的配置状态。它会返回节点上 SriovNetworkNodePolicy 资源的完整配置,以及节点上活跃 VF 的列表。status.syncStatus 字段用于指示为节点定义的所有 SriovNetworkNodePolicy 资源是否已正确应用。
以下示例展示了资源的结构:
apiVersion: sriovnetwork.k8s.cni.cncf.io/v1
kind: SriovNetworkNodeState
metadata:
name: MyNode1
namespace: sriov-network-operator
spec:
dpConfigVersion: "1969684"
interfaces:
- mtu: 9000
name: enp134s0f1np1
numVfs: 31
pciAddress: 0000:86:00.1
vfGroups:
- deviceType: netdevice
mtu: 9000
policyName: mlnx6-p2-sriov-en2
resourceName: mlnx6_p2_sriov_en2
vfRange: 0-30
status:
Status:
Interfaces:
Device ID: 1015
Driver: mlx5_core
Link Speed: 25000 Mb/s
Link Type: ETH
Mac: ba:16:03:9e:9c:87
Mtu: 9000
Name: eno1np0
Pci Address: 0000:1a:00.0
Vendor: 15b3
Device ID: 1015
Driver: mlx5_core
Link Speed: 25000 Mb/s
Link Type: ETH
Mac: ba:16:03:9e:9c:87
Mtu: 9000
Name: eno2np1
Pci Address: 0000:1a:00.1
Vendor: 15b3
Vfs:
- Vfs:
- deviceID: 101e
driver: mlx5_core
mac: c2:80:29:b5:63:55
mtu: 9000
name: enp134s0f1v0
pciAddress: 0000:86:04.1
vendor: 15b3
vfID: 0
- deviceID: 101e
driver: mlx5_core
mac: 7e:36:0c:82:d4:20
mtu: 9000
name: enp134s0f1v1
pciAddress: 0000:86:04.2
vendor: 15b3
vfID: 1
.. <omitted 29 other VFs here>
syncStatus: Succeeded
如需了解如何使用此资源,请参阅 SriovNetworkNodeState。
NetworkAttachmentDefinition 项资源
借助 NetworkAttachmentDefinition 资源,您可以将 Distributed Cloud pod 附加到 Distributed Cloud 连接节点上的一个或多个逻辑或物理网络。它利用 Multus-CNI 框架和以下插件:
使用注解来引用相应 SriovNetworkNodePolicy 资源的名称。创建此注解时,请执行以下操作:
- 使用密钥
k8s.v1.cni.cncf.io/resourceName。 - 在其值中使用前缀
gke.io/,后跟目标SriovNetworkNodePolicy资源的名称。
使用 networking.gke.io/gdce-vlan-id 注解指定目标网络的 VLAN ID。此注解为必需注解。
以下示例展示了资源的结构。适用于 IPv4 网络。
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: sriov-net1
namespace: mynamespace
annotations:
k8s.v1.cni.cncf.io/resourceName: gke.io/mlnx6_p2_sriov_en2
networking.gke.io/gdce-vlan-id: 225
spec:
config: '{
"type": "sriov",
"cniVersion": "0.3.1",
"name": "sriov-network",
"ipam": {
"type": "host-local",
"subnet": "10.56.217.0/24",
"routes": [{
"dst": "0.0.0.0/0"
}],
"gateway": "10.56.217.1"
}
}'
对于 IPv6 网络:
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: sriov-210-den102
annotations:
k8s.v1.cni.cncf.io/resourceName: gke.io/mlnx6_p0_sriov_en
networking.gke.io/gdce-vlan-id: 225
spec:
config: '{
"type": "sriov",
"cniVersion": "0.3.1",
"name": "sriov-210-den102",
"vlan": 210,
"ipam": {
"type": "host-local",
"rangeStart": "2001:4860:1025:102:ffff:0220::2",
"rangeEnd": "2001:4860:1025:102:ffff:0220::F",
"subnet": "2001:4860:1025:102:ffff:0220::/96",
"routes": [{
"dst": "::/0"
}],
"gateway": "2001:4860:1025:102:ffff:0220::1"
}
}'
使用 SR-IOV VF 在 pod 上配置辅助接口
配置 SriovNetworkNodePolicy 资源和相应的 NetworkAttachmentDefinition 资源后,您可以使用 SR-IOV 虚拟功能在分布式云 Pod 上配置辅助网络接口。
为此,请按如下所示向 Distributed Cloud pod 定义添加注解:
- 键:
k8s.v1.cni.cncf.io/networks - 值:
nameSpace/<NetworkAttachmentDefinition1,nameSpace/NetworkAttachmentDefinition2...
以下示例展示了此注解:
apiVersion: v1
kind: pod
metadata:
name: sriovpod
annotations:
k8s.v1.cni.cncf.io/networks: mynamespace/sriov-net1
spec:
containers:
- name: sleeppodsriov
command: ["sh", "-c", "trap : TERM INT; sleep infinity & wait"]
image: alpine
securityContext:
capabilities:
add:
- NET_ADMIN
使用 MacVLAN 驱动程序在 pod 上配置辅助接口
Distributed Cloud Connected 还支持使用 MacVLAN 驱动程序在 Pod 上创建辅助网络接口。只有 gdcenet0 接口支持此配置,并且仅适用于运行容器化工作负载的 pod。
如需配置接口以使用 MacVLAN 驱动程序,请执行以下操作:
配置
NetworkAttachmentDefinition资源,如以下示例所示。对于 IPv4 网络:apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: macvlan-b400-1 annotations: networking.gke.io/gdce-vlan-id: 400 spec: config: '{ "type": "macvlan", "master": "gdcenet0.400", "ipam": { "type": "static", "addresses": [ { "address": "192.168.100.20/27", "gateway": "192.168.100.1" } ] ... } }'对于 IPv6 网络:
apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: macvlan-bond0-210-den402 annotations: networking.gke.io/gdce-vlan-id spec: config: '{ "type": "macvlan", "cniVersion": "0.3.1", "name": "bond0-210", "master": "bond0.210", "ipam": { "type": "host-local", "rangeStart": "2001:4860:1025:102:0001:0210::2", "rangeEnd": "2001:4860:1025:102:0001:0210::F", "subnet": "2001:4860:1025:102:0001:0210::/96", "routes": [{ "dst": "::/0" }], "gateway": "2001:4860:1025:102:0001:0210::1" } }'向 Distributed Cloud pod 定义添加注解,如下所示。对于 IPv4 网络:
apiVersion: v1 kind: pod metadata: name: macvlan-testpod1 annotations: k8s.v1.cni.cncf.io/networks: macvlan-b400-1对于 IPv6 网络:
apiVersion: v1 kind: Pod metadata: name: vlan210-1 namespace: default annotations: k8s.v1.cni.cncf.io/networks: default/macvlan-bond0-210-den402
使用 Distributed Cloud 多网络功能在 pod 上配置辅助接口
分布式云互联支持使用其多网络功能在 pod 上创建辅助网络接口。为此,请完成以下步骤:
配置
Network资源。例如:apiVersion: networking.gke.io/v1 kind: Network metadata: name: vlan200-network spec: type: L2 nodeInterfaceMatcher: interfaceName: vlan200-interface gateway4: 10.53.0.1向 Distributed Cloud pod 定义添加注解,如下所示:
apiVersion: v1 kind: pod metadata: name: mypod annotations: networking.gke.io/interfaces: '[{"interfaceName":"eth1","network":"vlan200-network"}]' networking.gke.io/default-interface: eth1 ...后续步骤