35.3. 使用示例节点建立 Tunnel
在某些情况下,以前的解决方案是不可能的。例如,F5 BIG-IP® 主机无法运行 OpenShift Container Platform 节点实例或 OpenShift Container Platform SDN,因为 F5® 使用了自定义的、不兼容的 Linux 内核和分布。
相反,要使 F5 BIG-IP® 可访问 pod,您可以在集群网络中选择一个现有节点作为一个 坡道节点(ramp node),并在 F5 BIG-IP® 主机和指定的管道之间建立隧道。由于这是常规的 OpenShift Container Platform 节点,可获取必要的配置来将流量路由到集群网络中的任何节点上的任何 pod。因此,使用节点来假定 F5 BIG-IP® 主机能够访问整个集群网络的网关角色。
以下是在 F5 BIG-IP® 主机和指定通道节点之间建立 ipip 隧道的示例。
在 F5 BIG-IP® 主机上:
设置以下变量:
F5_IP=10.3.89.66 RAMP_IP=10.3.89.89 TUNNEL_IP1=10.3.91.216 CLUSTER_NETWORK=10.128.0.0/14
# F5_IP=10.3.89.661 # RAMP_IP=10.3.89.892 # TUNNEL_IP1=10.3.91.2163 # CLUSTER_NETWORK=10.128.0.0/144 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除所有旧的路由、自助、隧道和 SNAT 池:
tmsh delete net route $CLUSTER_NETWORK || true tmsh delete net self SDN || true tmsh delete net tunnels tunnel SDN || true tmsh delete ltm snatpool SDN_snatpool || true
# tmsh delete net route $CLUSTER_NETWORK || true # tmsh delete net self SDN || true # tmsh delete net tunnels tunnel SDN || true # tmsh delete ltm snatpool SDN_snatpool || trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建新的隧道、自助、路由和 SNAT 池,并使用虚拟服务器中的 SNAT 池:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在通道节点上:
以下会创建一个不是持久性的配置,这意味着当节点或 openvswitch 服务重启时,设置会消失。
设置以下变量:
F5_IP=10.3.89.66 TUNNEL_IP1=10.3.91.216 TUNNEL_IP2=10.3.91.217 CLUSTER_NETWORK=10.128.0.0/14
# F5_IP=10.3.89.66 # TUNNEL_IP1=10.3.91.216 # TUNNEL_IP2=10.3.91.2171 # CLUSTER_NETWORK=10.128.0.0/142 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除所有旧的隧道:
ip tunnel del tun1 || true
# ip tunnel del tun1 || trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用适当的 L2-connected 接口(如 eth0)在通道节点上创建 ipip 隧道:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SNAT,带有来自 SDN 子网的未使用 IP 的隧道 IP:
source /run/openshift-sdn/config.env tap1=$(ip -o -4 addr list tun0 | awk '{print $4}' | cut -d/ -f1 | head -n 1) subaddr=$(echo ${OPENSHIFT_SDN_TAP1_ADDR:-"$tap1"} | cut -d "." -f 1,2,3) export RAMP_SDN_IP=${subaddr}.254# source /run/openshift-sdn/config.env # tap1=$(ip -o -4 addr list tun0 | awk '{print $4}' | cut -d/ -f1 | head -n 1) # subaddr=$(echo ${OPENSHIFT_SDN_TAP1_ADDR:-"$tap1"} | cut -d "." -f 1,2,3) # export RAMP_SDN_IP=${subaddr}.254Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将此
RAMP_SDN_IP分配为 tun0 的额外地址(本地 SDN 的网关):ip addr add ${RAMP_SDN_IP} dev tun0# ip addr add ${RAMP_SDN_IP} dev tun0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 修改 SNAT 的 OVS 规则:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,如果您不计划将路线图节点配置为具有高可用性,请将通道节点标记为不可调度。如果计划按照下一小节进行操作,请跳过这一步,并计划创建高度可用的节点。
oc adm manage-node <ramp_node_hostname> --schedulable=false
$ oc adm manage-node <ramp_node_hostname> --schedulable=falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow
35.3.1. 配置高可用性 Ramp 节点 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Container Platform 的 ipfailover 功能(在内部使用 keepalived )使通道节点从 F5 BIG-IP®的时间点可用。为此,首先要在相同的 L2 子网上启动两个节点,例如名为 ramp-node-1 和 ramp-node-2。
然后,从同一子网中选择一些未分配的 IP 地址,以用于您的虚拟 IP 或 VIP。这将设置为 RAMP_IP 变量,您要在 F5 BIG-IP® 上配置隧道。
例如,假设您使用 10.20.30.0/24 子网作为坡道节点,并且您将 10.20.30.2 分配给 ramp-node-1,将 10.20.30.3 分配给 ramp-node-2。对于您的 VIP,从同一 10.20.30.0/24 子网中选择一些未分配的地址,例如 10.20.30.4。然后,要配置 ipfailover,将两个节点标记为标签,如 f5rampnode :
oc label node ramp-node-1 f5rampnode=true oc label node ramp-node-2 f5rampnode=true
$ oc label node ramp-node-1 f5rampnode=true
$ oc label node ramp-node-2 f5rampnode=true
与 ipfailover 文档 的说明类似,您现在必须创建一个服务帐户并将其添加到 特权 SCC 中。首先,创建 f5ipfailover 服务帐户:
oc create serviceaccount f5ipfailover -n default
$ oc create serviceaccount f5ipfailover -n default
接下来,您可以将 f5ipfailover 服务添加到 特权 SCC。要将 default 命名空间中的 f5ipfailover 添加到 特权 SCC,请运行:
oc adm policy add-scc-to-user privileged system:serviceaccount:default:f5ipfailover
$ oc adm policy add-scc-to-user privileged system:serviceaccount:default:f5ipfailover
最后,使用您选择的 VIP( RAMP_IP 变量)和 f5 ipfailover 服务帐户配置 ipfailover,使用您之前设置的 f5rampnode 标签将 VIP 分配给您的两个节点:
- 1
- 应该配置
RAMP_IP的接口。
使用以上设置时,当当前分配了它的节点主机失败时,VIP( RAMP_IP 变量)会自动重新分配。