创建集群后,为何不存在 Ingress 子域?
虚拟私有云 传统基础设施
您创建一个集群,并运行 ibmcloud oc cluster get --cluster CLUSTER 来检查其状态。 集群 State 为 normal,但 Ingress Subdomain 和 Ingress Secret 不可用。
即使集群已处于 normal 状态,Ingress 子域和私钥也可能仍在创建中。 Ingress 子域和密钥的创建可能需要超过 15 分钟才能完成:
经典集群:
- 工作程序节点在 VLAN 上完全部署并准备就绪时,将订购用于 VLAN 的可移植公用子网和可移植专用子网。
- 可移植子网订购成功完成后,将使用可移植公共 IP 地址和可移植专用 IP 地址更新
ibm-cloud-provider-vlan-ip-config配置映射。 - 当
ibm-cloud-provider-vlan-ip-config配置映射更新时,会触发Ingress控制器以创建相应资源。 - 将创建用于公开 Ingress 控制器的负载均衡器服务并为其分配 IP 地址。
- 负载平衡器 IP 地址用于在 IBM NS1 中注册入口子域。 IBM NS1 在注册过程中可能会出现延迟。
VPC 集群:
- 创建 VPC 集群时,系统会在您的 VPC 中(位于集群外部)自动创建一个公共 VPC 负载均衡器和一个私有 VPC 负载均衡器。
- 针对每个区域触发一个公共 Ingress 控制器以进行创建。
- 将创建用于公开 Ingress 控制器的负载均衡器服务并为其分配主机名。
- 负载平衡器主机名用于在 IBM NS1 中注册入口子域。 IBM NS1 在注册过程中可能会出现延迟。
在删除具有相同或相似名称的集群之后创建集群? 请参阅 创建名称相同或相似的集群后不存在 Ingress 子域。
通常,集群准备就绪后,将在 15 分钟后创建 Ingress 子域和私钥。 如果集群处于 normal 状态超过 15 分钟后,Ingress 子域和私钥仍然不可用,那么可以通过执行以下步骤来检查创建过程的进度:
-
登录到集群。 由于子域不可用,因此无法打开 Red Hat OpenShift 控制台。 您可以改为通过 CLI 使用
--admin选项来设置集群上下文。ibmcloud oc cluster config -c CLUSTER_NAME_OR_ID --admin -
验证工作程序节点的 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 -
验证 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 服务器上。
- 经典集群:查看
-
请确认 Ingress 控制器已成功创建。
- 检查集群是否存在 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 ``` - 检查集群是否存在 Ingress 控制器部署。
-
再次检查 Ingress 子域和私钥是否已创建。 如果它们不可用,但您已验证步骤 1-3 中的所有组件都存在,请 查看获取帮助的方法。
ibmcloud oc cluster get -c CLUSTER_NAME_OR_ID