20.11. 分配出口 IP 地址
作为集群管理员,您可以为从一个命名空间中,或从一个命名空间内的特定 pod 中离开集群的网络流量分配一个出口 IP 地址。
20.11.1. 为一个命名空间分配出口 IP 地址
您可以将一个或多个出口 IP 地址分配给一个命名空间,或分配给命名空间中的特定 pod。
先决条件
-
安装 OpenShift CLI(
oc
)。 - 以集群管理员身份登录集群。
- 至少配置一个节点来托管出口 IP 地址。
流程
创建
EgressIP
对象:-
创建一个
<egressips_name>.yaml
文件,其中<egressips_name>
是对象的名称。 在您创建的文件中,定义一个
EgressIP
对象,如下例所示:apiVersion: k8s.ovn.org/v1 kind: EgressIP metadata: name: egress-project1 spec: egressIPs: - 192.168.127.10 - 192.168.127.11 namespaceSelector: matchLabels: env: qa
-
创建一个
运行以下命令来创建对象。
$ oc apply -f <egressips_name>.yaml 1
- 1
- 将
<egressips_name>
替换为对象的名称。
输出示例
egressips.k8s.ovn.org/<egressips_name> created
-
可选:保存
<egressips_name>.yaml
文件,以便稍后进行修改。 为需要出口 IP 地址的命名空间添加标签。要在第 1 步中定义的
EgressIP
对象的命名空间中添加标签,请运行以下命令:$ oc label ns <namespace> env=qa 1
- 1
- 将
<namespace>
替换为需要出口 IP 地址的命名空间。
验证
要显示集群中所有正在使用的出口 IP,请输入以下命令:
$ oc get egressip -o yaml
注意无论配置了多少个出口 IP 地址,
oc get egressip
只返回一个出口 IP 地址。这并不是程序错误,它是 Kubernetes 的一个限制。作为临时解决方案,您可以传递-o yaml
或-o json
标志来返回所有正在使用的出口 IP 地址。输出示例
# ... spec: egressIPs: - 192.168.127.10 - 192.168.127.11 # ...