创建集群后,为何不存在 Ingress 子域?

虚拟私有云 传统基础设施

您创建一个集群,并运行 ibmcloud oc cluster get --cluster CLUSTER 来检查其状态。 集群 Statenormal,但 Ingress SubdomainIngress Secret 不可用。

即使集群已处于 normal 状态,Ingress 子域和私钥也可能仍在创建中。 Ingress 子域和密钥的创建可能需要超过 15 分钟才能完成:

经典集群

  1. 工作程序节点在 VLAN 上完全部署并准备就绪时,将订购用于 VLAN 的可移植公用子网和可移植专用子网。
  2. 可移植子网订购成功完成后,将使用可移植公共 IP 地址和可移植专用 IP 地址更新 ibm-cloud-provider-vlan-ip-config 配置映射。
  3. ibm-cloud-provider-vlan-ip-config 配置映射更新时,会触发Ingress控制器以创建相应资源。
  4. 将创建用于公开 Ingress 控制器的负载均衡器服务并为其分配 IP 地址。
  5. 负载平衡器 IP 地址用于在 IBM NS1 中注册入口子域。 IBM NS1 在注册过程中可能会出现延迟。

VPC 集群

  1. 创建 VPC 集群时,系统会在您的 VPC 中(位于集群外部)自动创建一个公共 VPC 负载均衡器和一个私有 VPC 负载均衡器。
  2. 针对每个区域触发一个公共 Ingress 控制器以进行创建。
  3. 将创建用于公开 Ingress 控制器的负载均衡器服务并为其分配主机名。
  4. 负载平衡器主机名用于在 IBM NS1 中注册入口子域。 IBM NS1 在注册过程中可能会出现延迟。

在删除具有相同或相似名称的集群之后创建集群? 请参阅 创建名称相同或相似的集群后不存在 Ingress 子域

通常,集群准备就绪后,将在 15 分钟后创建 Ingress 子域和私钥。 如果集群处于 normal 状态超过 15 分钟后,Ingress 子域和私钥仍然不可用,那么可以通过执行以下步骤来检查创建过程的进度:

  1. 登录到集群。 由于子域不可用,因此无法打开 Red Hat OpenShift 控制台。 您可以改为通过 CLI 使用 --admin 选项来设置集群上下文。

    ibmcloud oc cluster config -c CLUSTER_NAME_OR_ID --admin
    
  2. 验证工作程序节点的 State 是否为 normal,以及 Status 是否为 Ready。 创建集群后,工作程序节点可能最长需要 20 分钟才能准备就绪。

    ibmcloud oc worker ls -c CLUSTER_NAME_OR_ID
    

    示例输出

    ID                                                     Public IP         Private IP      Flavor              State     Status   Zone    Version
    kube-blrs3b1d0p0p2f7haq0g-mycluster-default-000001f7   169.xx.xxx.xxx    10.xxx.xx.xxx   u3c.2x4.encrypted   deployed   Ready    dal10   1.35
    
  3. 验证 Ingress 控制器创建的先决条件步骤是否已完成。

    • 经典集群:查看 ibm-cloud-provider-vlan-ip-config 配置映射的详细信息。
    oc describe cm ibm-cloud-provider-vlan-ip-config -n kube-system
    
    • 如果该配置映射显示 IP 地址,请继续执行下一步。
    • 如果 Events 部分显示类似于 ErrorSubnetLimitReached: There are already the maximum number of subnets permitted in this VLAN 的警告消息,请参阅 VLAN 容量故障诊断主题

    填充有 IP 地址的配置映射的输出示例:

    NAME:         ibm-cloud-provider-vlan-ip-config
    Namespace:    kube-system
    Labels:       <none>
    Annotations:  <none>
    Data
    ====
    reserved_public_vlan_id:
    ----
    vlanipmap.json:
    ----
    {
        "vlans": [
        {
          "id": "2234947",
          "subnets": [
            {
              "id": "2215454",
              "ips": [
                "10.XXX.XXX.XXX",
                "10.XXX.XXX.XXX",
                "10.XXX.XXX.XXX",
                "10.XXX.XXX.XXX",
                "10.XXX.XXX.XXX"
              ],
              "is_public": false,
              "is_byoip": false,
              "cidr": "10.XXX.XXX.X/29"
            }
          ],
          "zone": "dal10",
          "region": "us-south"
        },
        {
          "id": "2234945",
          "subnets": [
            {
              "id": "2219170",
              "ips": [
                "169.XX.XXX.XX",
                "169.XX.XXX.XX",
                "169.XX.XXX.XX",
                "169.XX.XXX.XX",
                "169.XX.XXX.XX"
              ],
              "is_public": true,
              "is_byoip": false,
              "cidr": "169.XX.XXX.X/29"
            }
          ],
          "zone": "dal10",
          "region": "us-south"
        }
        ],
        "vlan_errors": [],
        "reserved_ips": []
    }
    cluster_id:
    ----
    bmnj1b1d09lpvv3oof0g
    reserved_private_ip:
    ----
    reserved_private_vlan_id:
    ----
    reserved_public_ip:
    ----
    Events:  <none>
    
    • VPC 集群: 验证 Ingress 控制器的 VPC 负载均衡器是否存在。 在输出结果中,查找名称kube-<cluster_ID> 开头的 VPC 负载均衡器。 如果未安装 infrastructure-service 插件,请通过运行 ibmcloud plugin install infrastructure-service 来安装该插件。
    ibmcloud is load-balancers
    

    尽管 VPC 负载均衡器已列出,但其 DNS 条目可能仍在注册中。 创建 VPC 负载均衡器时,将通过公共 DNS 注册主机名。 有时,该 DNS 条目需要几分钟才能同步到您的客户端所使用的特定 DNS 服务器上。

  4. 请确认 Ingress 控制器已成功创建。

    1. 检查集群是否存在 Ingress 控制器部署。
      • 如果列出了 Ingress 控制器部署,请继续执行下一步。
      • 如果在几分钟后未创建 Ingress 控制器部署,请 查看获取帮助的方法
        oc get deployment -n openshift-ingress
        ```
        示例输出
        ```sh {: screen}
        NAME             READY   UP-TO-DATE   AVAILABLE   AGE
        router-default   2/2     2            2           26m
        ```
    2. 检查 Ingress 控制器的负载均衡器服务是否存在,以及是否为其分配了公共外部 IP 地址 (经典集群) 或主机名 (VPC 集群)。
        * 如果列出了名为 `router-default` 的服务,并为其分配了 IP 地址 (经典集群) 或主机名 (VPC 集群),请继续执行下一步。
        * 如果在几分钟后未创建 `router-default` 服务,请 [查看获取帮助的方法](/docs/openshift?topic=openshift-get-help)。
    
    ```sh {: pre}
        oc get svc -n openshift-ingress
        ```
        示例输出
        ```sh {: screen}
        NAME                      TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)                      AGE
        router-default            LoadBalancer   172.21.47.119   169.XX.XX.XX   80:31182/TCP,443:31154/TCP   27m
        router-internal-default   ClusterIP      172.21.51.30    <none>         80/TCP,443/TCP,1936/TCP      26m
        ```
    
  5. 再次检查 Ingress 子域和私钥是否已创建。 如果它们不可用,但您已验证步骤 1-3 中的所有组件都存在,请 查看获取帮助的方法

    ibmcloud oc cluster get -c CLUSTER_NAME_OR_ID