将传统 NLB 隔离至边缘工作节点
经典
在以下步骤中,您将添加 dedicated=edge 标签到集群中每个公共或私有 VLAN 上的工作节点。 此标签仅用于将网络负载均衡器 (NLB) 部署到这些工作节点。 公共和私有 NLB 均可部署到边缘工作节点上。
如果您计划使用现有的工作节点池,该池必须覆盖集群中的所有区域,并且每个区域至少拥有两个工作节点。 你可以使用以下标签标记工作池:dedicated=edge 通过使用 ibmcloud oc worker-pool label set 命令。
准备工作
- 确保您具有以下 IBM Cloud IAM 角色:
- 该集群的任何平台访问角色
- 所有命名空间的 “写入者”或 “管理员”服务访问角色
- 访问您的Red Hat OpenShift簇。
-
创建带标签的工作池
dedicated=edge或者将标签添加到您现有的工作池之一。- 要创建工作池,您可以使用
worker-pool create classic命令。
ibmcloud oc worker-pool create classic --name POOL_NAME --cluster CLUSTER --flavor FLAVOR --size-per-zone WORKERS_PER_ZONE --hardware ISOLATION --label dedicated=edge ``` * 要标记现有的工作池,您可以使用 `worker-pool label set`[命令](/docs/openshift?topic=openshift-kubernetes-service-cli#worker-pool-label-set-cli)。 ```sh {: pre} ibmcloud oc worker-pool label set --cluster CLUSTER --worker-pool POOL --label dedicated=edge ``` - 要创建工作池,您可以使用
-
验证工作程序池和工作程序节点是否具有
dedicated=edge标签。- 要检查工作池,请运行
get命令。
ibmcloud oc worker-pool get --cluster CLUSTER_NAME_OR_ID --worker-pool WORKER_POOL_NAME_OR_ID ``` * 要检查单个工作程序节点,请查看以下命令输出中的 **Labels** 字段。 ```sh {: pre} oc describe node <worker_node_private_IP> ``` - 要检查工作池,请运行
-
检索集群中所有现有的 NLB。 在输出结果中,请注意每个负载均衡器的命名空间 和名称。
oc get services --all-namespaces | grep LoadBalancer示例输出:
PORT(S) AGE router-default 80:31228/TCP,443:31655/TCP 4h54m LoadBalancer 172.21.71.79 169.46.17.2 -
根据上一步的输出结果,针对每个 NLB 运行以下命令。 此命令将 NLB 重新部署到一个边缘工作节点上。
oc get service -n <namespace> <name> -o yaml | oc apply -f -示例输出:
service "router-default" configured -
要验证网络工作负载是否仅限于边缘节点,请确认负载均衡器已调度到边缘节点,且未调度到非边缘节点。
- NLB pod
- 确认是否将 NLB pod 部署到了边缘节点。 查找上一步输出中列出的负载均衡服务的外部 IP 地址。 替换句点 (
.) 加上连字符 (-)在以下示例中crc81nk5l10gfhdql4i3qg,NLB 的外部 IP 地址为169.46.17.2。示例输出:oc describe nodes -l dedicated=edge | grep "169-46-17-2"ibm-system ibm-cloud-provider-ip-169-46-17-2-76fcb4965d-wz6dg 5m (0%) 0 (0%) 10Mi (0%) 0 (0%) ibm-system ibm-cloud-provider-ip-169-46-17-2-76fcb4965d-2z64r 5m (0%) 0 (0%) 10Mi (0%) 0 (0%) - 确认是否没有任何 NLB pod 部署到非边缘节点。 以下是
public-crc81nk5l10gfhdql4i3qg-nlb1NLB的示例,其外部IP地址为169.46.17.2:oc describe nodes -l dedicated!=edge | grep "169-46-17-2"- 如果 NLB pod 正确部署到了边缘节点,那么不会返回任何 NLB pod。 这说明 NLB 已成功地重新安排到仅边缘工作程序节点上。
- 如果返回了 NLB pod,请继续执行下一步。
- 确认是否将 NLB pod 部署到了边缘节点。 查找上一步输出中列出的负载均衡服务的外部 IP 地址。 替换句点 (
- NLB pod
-
如果 NLB Pod 仍部署在非边缘节点上,您可以删除这些 Pod,以便将其重新部署到边缘节点上。
每次仅删除一个 Pod,并在删除其他 Pod 之前,请确认该 Pod 已重新调度到边缘节点上。
- 删除 pod。 例如,如果
public-crc81nk5l10gfhdql4i3qg-alb1的某个NLB Pod未被调度到边缘节点:
oc delete pod ibm-cloud-provider-ip-169-46-17-2-76fcb4965d-wz6dg -n ibm-system ``` 2. 验证 pod 是否已重新安排到边缘工作程序节点上。 重新安排是自动执行的,但可能需要几分钟时间。 以下是 `public-crc81nk5l10gfhdql4i3qg-alb1` NLB的示例,其外部IP地址为 `169.46.17.2`: ```sh {: pre} oc describe nodes -l dedicated=edge | grep "169-46-17-2" ``` 示例输出: ```sh {: screen} ibm-system ibm-cloud-provider-ip-169-46-17-2-76fcb4965d-wz6dg 5m (0%) 0 (0%) 10Mi (0%) 0 (0%) ibm-system ibm-cloud-provider-ip-169-46-17-2-76fcb4965d-2z64r 5m (0%) 0 (0%) 10Mi (0%) 0 (0%) ``` - 删除 pod。 例如,如果
您已使用 dedicated=edge 为工作节点池中的工作节点添加了标签,并将所有现有的NLB重新部署到了边缘节点上。 后续添加到集群中的所有 NLB 也会部署到边缘工作池中的某个边缘节点上。 接下来,请阻止其他工作负载在边缘工作程序节点上运行并阻止流至工作程序节点上 NodePort 的入站流量。