IBM Cloud Docs
将 Ingress 资源隔离到边缘工作节点

将 Ingress 资源隔离到边缘工作节点

为了确保 ALB pod 始终被调度到边缘工作器节点(如果存在),而不是被调度到非边缘工作器节点,您必须创建或使用每个区域至少有两个边缘工作器节点的现有工作器池。

在 ALB pod 更新期间,会推出新的 ALB pod 来替换现有的 ALB pod。 为了确保 ALB 在更新期间可用,滚动更新可确保至少有一个 ALB pod 处于活动状态。 但是,ALB pod 具有反亲和性规则,不允许同一个工作器上有两个 ALB pod。 当一个区域中存在至少两个边缘节点时,可以在其中一个节点上替换新的 ALB pod,同时另一个节点保持运行。

为了实现 ALB 的高可用性,当每个区域中没有足够的边缘节点时,将忽略边缘节点标签,并且 ALB pod 也会被调度到非边缘节点。

将 ALB 工作负载隔离到边缘节点的步骤对于经典和 VPC 基础设施都是相同的。 但是,每种类型的 ALB 外部 IP 的命名约定都不同。 对于传统基础设施上的 ALB,外部 IP 是标准 IP 地址,例如 169.46.17.2。 对于 VPC 基础设施上的 ALB,外部 IP 是主机名,例如 f3bee8b5-us-south.lb.appdomain.cloud

要将工作负载隔离到边缘工作节点:

  1. 创建带标签的工作池 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
      
    • 要创建 VPC 工作池,您可以使用 worker-pool create vpc-gen2命令
      ibmcloud oc worker-pool create vpc-gen2 --name POOL_NAME --cluster CLUSTER --flavor FLAVOR --size-per-zone WORKERS_PER_ZONE --hardware ISOLATION --label dedicated=edge
      
    • 要标记现有的工作池,您可以使用 worker-pool label set命令
      ibmcloud oc worker-pool label set --cluster CLUSTER --worker-pool POOL --label dedicated=edge
      
  2. 验证工作程序池和工作程序节点是否具有 dedicated=edge 标签。

    • 要检查工作池,请使用 get 命令。
      ibmcloud ks worker-pool get --cluster <cluster_name_or_ID> --worker-pool <worker_pool_name_or_ID>
      
    • 要检查单个工作程序节点,请查看以下命令输出中的 Labels 字段。
      kubectl describe node <worker_node_private_IP>
      
  3. 检索集群中的所有现有 ALB。 查看命令输出。 对于每个具有地位已启用,注意白细胞介素建造

    ibmcloud ks ingress alb ls --cluster <cluster_name_or_ID>
    

    示例输出

    ALB ID                                Enabled   State     Type      Load Balancer Hostname                      Zone         Build                                  Status
    private-crc81nk5l10gfhdql4i3qg-alb1   true      enabled   private   e9dd35e6-us-south.lb.appdomain.cloud   us-south-3   ingress:1.1.1_1949_iks/ingress-auth:   enabled
    public-crc81nk5l10gfhdql4i3qg-alb1    true      enabled   public    38daf55c-us-south.lb.appdomain.cloud   us-south-3   ingress:1.1.1_1949_iks/ingress-auth:   healthy
    
  4. 使用上一步的输出,运行 ibmcloud ks ingress alb update 每个启用的 ALB 的命令。 此命令会将 ALB 重新部署到边缘工作程序节点。

    当您运行此命令将 ALB 重新部署到边缘工作器节点时,ALB 也会更新到最新版本。 如果您不想将 ALB 更新到最新版本,请包含 --version 选项并指定下面列出的版本建造在上一步的输出中。

    ibmcloud ks ingress alb update -c <cluster_name_or_ID> --alb <ALB_ID> [--version <build_version>]
    

    示例输出

    Updating ALB pods for private-crc81nk5l10gfhdql4i3qg-alb1 to version '1.1.1_1949_iks' in cluster crc81nk5l10gfhdql4i3qg...
    OK
    
  5. 确认是否将所有 ALB pod 都部署到了边缘节点。 集群中启用的每个公共和专用 ALB 都有两个 pod。

    kubectl describe nodes -l dedicated=edge | grep alb
    

    示例输出

    kube-system                private-crc81nk5l10gfhdql4i3qg-alb1-d5dd478db-27pv4    0 (0%)        0 (0%)      0 (0%)           0 (0%)
    kube-system                private-crc81nk5l10gfhdql4i3qg-alb1-d5dd478db-7p9q6    0 (0%)        0 (0%)      0 (0%)           0 (0%)
    kube-system                public-crc81nk5l10gfhdql4i3qg-alb1-5ff8cdff89-s77z6    0 (0%)        0 (0%)      0 (0%)           0 (0%)
    kube-system                public-crc81nk5l10gfhdql4i3qg-alb1-5ff8cdff89-kvs9f    0 (0%)        0 (0%)      0 (0%)           0 (0%)
    
  6. 确认是否没有任何 ALB pod 部署到非边缘节点。

    kubectl describe nodes -l dedicated!=edge | grep alb
    

    如果 ALB pod 正确部署到了边缘节点,那么不会返回任何 ALB pod。 这意味着您的 ALB 已成功重新安排到边缘工作节点上。

您使用以下标记标记了工作池中的工作节点 dedicated=edge 并将所有现有的 ALB 重新部署到边缘节点。 所有后续添加到集群的 ALB 也都将部署到边缘工作器池中的边缘节点。 接下来你可以阻止其他 在边缘工作节点上运行的工作负载