15.12.3. 以重定向模式部署出口路由器 pod


您可以部署出口路由器 Pod,将其自身保留源 IP 地址的流量重定向到一个或多个目标 IP 地址。

添加出口路由器 pod 后,需要使用保留源 IP 地址的客户端 pod 必须修改为连接到出口路由器,而不是直接连接到目标 IP。

先决条件

  • 安装 OpenShift CLI(oc)。
  • 以具有 cluster-admin 特权的用户身份登录。

流程

  1. 创建网络附加定义。
  2. 创建出口路由器 pod。
  3. 为确保其他 pod 可以找到出口路由器 pod 的 IP 地址,请创建一个使用出口路由器 Pod 的服务,如下例所示:

    apiVersion: v1
    kind: Service
    metadata:
      name: egress-1
    spec:
      ports:
      - name: database
        protocol: TCP
        port: 3306
      type: ClusterIP
      selector:
        name: egress-router-pod

    创建服务后,您的 Pod 可以连接到该服务。出口路由器 Pod 将连接重定向到目标 IP 地址中对应的端口。连接来自保留的源 IP 地址。

验证

要验证出口路由器 pod 是否已启动并具有二级网络接口,请完成以下步骤:

  1. 查看出口路由器 Pod 的事件:

    $ oc get events --field-selector involvedObject.name=egress-router-pod

    如果 pod 引用了网络附加定义,则上一个命令会返回类似如下的输出:

    输出示例

    LAST SEEN   TYPE     REASON           OBJECT                  MESSAGE
    5m4s        Normal   Scheduled        pod/egress-router-pod   Successfully assigned default/egress-router-pod to ci-ln-9x2bnsk-f76d1-j2v6g-worker-c-24g65
    5m3s        Normal   AddedInterface   pod/egress-router-pod   Add eth0 [10.129.2.31/23]
    5m3s        Normal   AddedInterface   pod/egress-router-pod   Add net1 [192.168.12.99/24] from default/egress-router-redirect

  2. 可选:查看出口路由器 pod 的路由表。

    1. 获取出口路由器 pod 的节点名称:

      $ POD_NODENAME=$(oc get pod egress-router-pod -o jsonpath="{.spec.nodeName}")
    2. 在目标节点上进入一个 debug 会话。此步骤被实例化为一个名为 <node_name>-debug 的 debug pod:

      $ oc debug node/$POD_NODENAME
    3. /host 设为 debug shell 中的根目录。debug pod 在 pod 中的 /host 中挂载主机 的 root 文件系统。将根目录改为 /host,您可以从主机的可执行路径中运行二进制文件:

      # chroot /host
    4. chroot 环境控制台中获取容器 ID:

      # crictl ps --name egress-router-redirect | awk '{print $1}'

      输出示例

      CONTAINER
      bac9fae69ddb6

    5. 确定容器的进程 ID。在本例中,容器 ID 是 bac9fae69ddb6

      # crictl inspect -o yaml bac9fae69ddb6 | grep 'pid:' | awk '{print $2}'

      输出示例

      68857

    6. 输入容器的网络命名空间:

      # nsenter -n -t 68857
    7. 显示路由表:

      # ip route

      在以下示例输出中,net1 网络接口是默认路由。集群网络的流量使用 eth0 网络接口。192.168.12.0/24 网络的流量使用 net1 网络接口,并来自保留源 IP 地址 192.168.12.99。pod 将所有其他流量路由到网关的 IP 地址 192.168.12.1。不显示服务网络的路由。

      输出示例

      default via 192.168.12.1 dev net1
      10.129.2.0/23 dev eth0 proto kernel scope link src 10.129.2.31
      192.168.12.0/24 dev net1 proto kernel scope link src 192.168.12.99
      192.168.12.1 dev net1

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部