7.7. 配置 host-device 网络
作为集群管理员,您可以使用 host-device Container Network Interface (CNI) 插件为集群配置额外网络。该插件允许您将指定网络设备从主机的网络命名空间移到 Pod 的网络命名空间。
7.7.1. 使用 host-device CNI 插件创建额外网络附加
Cluster Network Operator (CNO) 管理额外网络定义。当您指定要创建的额外网络时,CNO 会自动创建 NetworkAttachmentDefinition 自定义资源 (CR)。
请勿编辑 Cluster Network Operator 所管理的 NetworkAttachmentDefinition CR。这样做可能会破坏额外网络上的网络流量。
先决条件
-
安装 OpenShift 命令行界面 (CLI),通常称为
oc
。 -
以具有
cluster-admin
特权的用户身份登录。
流程
要为集群创建额外网络,请完成以下步骤:
运行以下命令来编辑 CNO CR:
$ oc edit networks.operator.openshift.io cluster
通过为要创建的额外网络添加配置来修改您要创建的 CR,如以下示例 CR 中所示。
以下 YAML 配置 host-device CNI 插件:
apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster spec: additionalNetworks: 1 - name: test-network-1 namespace: test-1 type: Raw rawCNIConfig: '{ "cniVersion": "0.3.1", "type": "host-device", "device": "eth1" }'
- 1
- 指定额外网络附加定义的配置。
- 保存您的更改,再退出文本编辑器以提交更改。
可选:通过运行以下命令确认 CNO 创建了 NetworkAttachmentDefinition CR。CNO 创建 CR 之前可能会有延迟。
$ oc get network-attachment-definitions -n <namespace> NAME AGE test-network-1 14m
7.7.1.1. 配置 host-device
使用 host-device Container Network Interface (CNI) 插件的额外网络附加配置由以下两个部分提供:
- Cluster Network Operator (CNO) 配置
- CNI 插件配置
CNO 配置指定额外网络附加的名称,以及用于在其中创建网络附加的命名空间。该插件由 CNO 配置中 rawCNIConfig
参数指定的 JSON 对象进行配置。
以下 YAML 描述了 CNO 的配置参数:
Cluster Network Operator YAML 配置
name: <name> 1 namespace: <namespace> 2 rawCNIConfig: '{ 3 ... }' type: Raw
仅设置以下参数之一来指定您的网络设备:device
、HWaddr
、kernelpath
或 pciBusID
。
以下对象描述了 host-device CNI 插件的配置参数:
host-device CNI 插件 JSON 配置对象
{ "cniVersion": "0.3.1", "name": "<name>", 1 "type": "host-device", "device": "<device>", 2 "hwaddr": "<hwaddr>", 3 "kernelpath": "<kernelpath>", 4 "pciBusID": "<pciBusID>", 5 "ipam": { 6 ... } }
7.7.1.1.1. host-device 配置示例
以下示例配置了名为 hostdev-net
的额外网络:
name: hostdev-net
namespace: work-network
type: Raw
rawCNIConfig: '{ 1
"cniVersion": "0.3.1",
"type": "host-device",
"device": "eth1"
}'
- 1
- 以 YAML 字符串形式指定 CNI 配置对象。
7.7.1.2. 配置 ipam CNI 插件
IP 地址管理 (IPAM) CNI 插件为其他 CNI 插件管理 IP 地址分配。您可以配置 ipam 以进行静态 IP 地址分配或使用 DHCP 进行动态 IP 地址分配。您指定的 DHCP 服务器必须可从额外网络访问。
在 OpenShift Container Platform 4.2.0 中,如果您将 Pod 附加到使用 DHCP 进行 IP 地址管理的额外网络中,则 Pod 将无法启动。OpenShift Container Platform 4.2.1 已修复了这个问题。如需更多信息,请参阅 BZ#1754686。
以下 JSON 配置对象描述了您可以设置的参数。
如果您将 type
参数设置为 DHCP
值,则无法设置任何其他参数。
ipam CNI 插件 JSON 配置对象
{ "ipam": { "type": "<type>", 1 "addresses": [ 2 { "address": "<address>", 3 "gateway": "<gateway>" 4 } ], "routes": [ 5 { "dst": "<dst>" 6 "gw": "<gw>" 7 } ], "dns": { 8 "nameservers": ["<nameserver>"], 9 "domain": "<domain>", 10 "search": ["<search_domain>"] 11 } } }
- 1
- 指定
static
,以配置插件来管理 IP 地址分配。指定DHCP
,以允许 DHCP 服务器管理 IP 地址分配。如果指定了DHCP
值,则无法指定任何其他参数。 - 2
- 定义分配给虚拟接口的 IP 地址的数组。支持 IPv4 和 IPv6 IP 地址。
- 3
- 您以 CIDR 格式指定的分配给 worker 节点上 Pod 的 IP 地址块,如
10.1.1.0/24
。 - 4
- 出口网络流量要路由到的默认网关。
- 5
- 描述要在 Pod 中配置的路由的数组。
- 6
- CIDR 格式的 IP 地址范围。
- 7
- 用于将网络流量路由到的网关。
- 8
- DNS 配置。可选。
- 9
- 用来发送 DNS 查询的一个或多个 IP 地址的数组。
- 10
- 附加到主机名的默认域。例如,如果将域设置为
example.com
,对example-host
的 DNS 查找查询将被改写为example-host.example.com
。 - 11
- 在 DNS 查找查询过程中,附加到非限定主机名(如
example-host
)的域名的数组。
7.7.1.2.1. 静态 IP 地址分配配置示例
您可以配置 ipam 以进行静态 IP 地址分配:
{ "ipam": { "type": "static", "addresses": [ { "address": "191.168.1.1/24" } ] } }
7.7.1.2.2. 动态 IP 地址分配配置示例
您可以配置 ipam 以使用 DHCP:
{ "ipam": { "type": "DHCP" } }
后续步骤