30.4. 配置 MetalLB 地址池
作为集群管理员,您可以添加、修改和删除地址池。MetalLB Operator 使用地址池自定义资源来设置 MetalLB 可分配给服务的 IP 地址。示例中使用的命名空间假定命名空间是 metallb-system
。
30.4.1. 关于 IPAddressPool 自定义资源
在 OpenShift Container Platform 4.10 中的地址池自定义资源定义(CRD)和 API(包括在 "Load balancing with MetalLB" 文档中)在 OpenShift Container Platform 4.11 中仍然可以使用但是,在使用地址池 CRD 时不支持与带第 2 层或 BGP 协议的 IPAddressPools
相关的增强功能。
下表中描述了 IPAddressPool
自定义资源的字段。
字段 | 类型 | 描述 |
---|---|---|
|
|
指定地址池的名称。添加服务时,您可以在 |
|
| 指定地址池的命名空间。指定 MetalLB Operator 使用的同一命名空间。 |
|
|
可选:指定分配给 |
|
| 指定分配给服务的 MetalLB Operator 的 IP 地址列表。您可以在一个池中指定多个范围 ; 它们将共享相同的设置。以 CIDR 表示法指定每个范围,或者指定为以连字符隔开的起始和结束 IP 地址。 |
|
|
可选:指定 MetalLB 是否从这个池自动分配 IP 地址。如果要使用 |
30.4.2. 配置地址池
作为集群管理员,您可以在集群中添加地址池来控制 MetalLB 可分配给负载均衡器服务的 IP 地址。
先决条件
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。
流程
创建一个文件,如
ipaddresspool.yaml
,其内容类似以下示例:apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: namespace: metallb-system name: doc-example labels: 1 zone: east spec: addresses: - 203.0.113.1-203.0.113.10 - 203.0.113.65-203.0.113.75
- 1
- 分配给
IPAddressPool
的该标签可通过BGPAdvertisement
CRD 中的ipAddressPoolSelectors
来引用,以将IPAddressPool
与广告关联。
应用 IP 地址池的配置:
$ oc apply -f ipaddresspool.yaml
验证
查看地址池:
$ oc describe -n metallb-system IPAddressPool doc-example
输出示例
Name: doc-example Namespace: metallb-system Labels: zone=east Annotations: <none> API Version: metallb.io/v1beta1 Kind: IPAddressPool Metadata: ... Spec: Addresses: 203.0.113.1-203.0.113.10 203.0.113.65-203.0.113.75 Auto Assign: true Events: <none>
确认输出中显示了地址池名称,如 doc-example
,并且 IP 地址范围显示在输出中。
30.4.3. 地址池配置示例
30.4.3.1. 示例:IPv4 和 CIDR 范围
您可以使用 CIDR 表示法指定 IP 地址范围。您可以将 CIDR 表示法与使用连字符分隔下限和上限的表示法合并。
apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: doc-example-cidr namespace: metallb-system spec: addresses: - 192.168.100.0/24 - 192.168.200.0/24 - 192.168.255.1-192.168.255.5
30.4.3.2. 示例:保留 IP 地址
您可以将 autoAssign
字段设置为 false
,以防止 MetalLB 自动从池中分配 IP 地址。添加服务时,您可以从池中请求特定的 IP 地址,或者在注解中指定池名称从池中请求任何 IP 地址。
apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: doc-example-reserved namespace: metallb-system spec: addresses: - 10.0.100.0/28 autoAssign: false
30.4.3.3. 示例:IPv4 和 IPv6 地址
您可以添加使用 IPv4 和 IPv6 的地址池。您可以像几个 IPv4 示例一样在 地址
列表中指定多个范围。
无论服务被分配一个 IPv4 地址、一个 IPv6 地址,还是由您添加该服务来确定。spec.ipFamilies
和 spec.ipFamilyPolicy
字段控制 IP 地址如何分配给该服务。
apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: doc-example-combined namespace: metallb-system spec: addresses: - 10.0.100.0/28 - 2002:2:2::1-2002:2:2::100
30.4.4. 其他资源
30.4.5. 后续步骤
- 对于 BGP 模式,请参阅 配置 MetalLB BGP peer。
- 配置服务以使用 MetalLB。