调试Red Hat OpenShift网络控制台、OperatorHub,内部注册表和其他组件
虚拟私有云 经典基础架构
Red Hat OpenShift 集群具有许多用于简化开发者体验的内置组件。 例如,您可以使用 Red Hat OpenShift Web 控制台来管理和部署集群工作负载,或者从 OperatorHub 启用 3rd-party 操作程序以使用服务网格和其他功能增强集群。
常用的组件包括以下内容。 如果这些组件失败,请查看以下调试步骤。
openshift-console
项目中的 Red Hat OpenShift Web 控制台openshift-marketplace
项目中的 OperatorHubopenshift-image-registry
项目中的 内部注册表
步骤 1: 检查帐户设置
检查是否正确设置了 IBM Cloud 帐户。 一些可阻止缺省组件正常运行的常见方案包括以下内容:
- 如果经典集群具有多个专区,或者具有 VPC 集群,请确保启用 VRF 或 VLAN 生成。 要检查是否已启用 VRF,请运行
ibmcloud account show
。 要检查是否启用了 VLAN 生成,请运行ibmcloud oc vlan spanning get
。 - 如果帐户中的某些用户使用多因子认证 (MFA) (例如 TOTP),请确保对 IBM Cloud 帐户中的所有用户 启用 MFA。
不支持在用户级别启用 MFA。 如果对某些用户启用了 MFA,但未对帐户级别的所有用户启用 MFA,那么可能会发生认证错误。
步骤 2: 检查公共网关
-
对于启用了公共和私有云服务端点的 VPC 集群:
检查是否在集群连接到的每个 VPC 子网上启用了公共网关。 缺省组件 (例如,Web 控制台和 OperatorHub ) 需要公共网关,才能使用安全的公共连接来完成诸如从远程专用注册表中拉取映像之类的操作。
- 使用 IBM Cloud 控制台或 CLI 确保在集群连接到的每个子网 上启用公共网关。
- 在 Web 控制台中重新启动 开发者目录 的组件。
- 编辑样本操作程序的 ConfigMap。
oc edit configs.samples.operator.openshift.io/cluster
- 编辑样本操作程序的 ConfigMap。
2. 将
managementState
的值从Removed
更改为Managed
。 3。 保存并关闭配置映射。 您的更改将自动应用。 -
对于同时启用了公共和私有云服务端点的经典集群:
检查集群是否具有公共连接,以便网络组件在部署时可以与主节点通信。
-
检查主站状态。 如果 主状态 未 就绪,请 查看其状态 并遵循任何故障诊断信息来解决问题。
ibmcloud oc cluster get -c <cluster_name_or_ID>
-
在主站状态输出中,检查群集是否有公共服务端点 URL。 如果群集没有公共云服务端点,请启用它。
-
检查集群中是否至少有一些工作程序节点具有 公共 IP 地址。 如果没有工人节点这样做,则必须为至少一个工人池设置公共 VLAN。
ibmcloud oc workers -c <cluster_name_or_ID>
-
步骤 3: 检查防火墙和网络策略
检查任何防火墙或网络策略,以验证您是否未阻止 OperatorHub 或其他 Red Hat OpenShift 组件的任何入口或出口流量。
- 如果通过指定哪些 IP 地址有权访问集群,生成了 IBM Cloud Identity and Access Management (IAM) 允许列表,那么必须 将集群所在区域的区域的 Red Hat OpenShift on IBM Cloud 控制平面的 CIDR 添加到允许列表。
- 仅限经典: 如果您有防火墙,请 打开防火墙中所需的端口和 IP 地址。
- 仅限 VPC: 如果使用 VPC ACL 或安全组控制流量,请确保允许最低要求的 入站和出站规则。
步骤 4: 检查集群设置
检查是否正确设置了集群。 如果您刚刚创建了集群,请等待一段时间,以便集群组件完全供应。
- 获取群集的详细信息。
ibmcloud oc cluster get -c <cluster_name_or_ID>
- 查看上一步的输出以检查 Ingress 子域。
- 如果集群 没有 子域,请参阅 创建集群后不存在 Ingress 子域。
- 如果集群具有子域,请继续执行下一步。
- 验证集群是否运行最新补丁 Version。 如果集群未运行最新补丁版本,请更新集群和工作程序节点。
- 检查群集状态。 如果状态不是 normal,请参阅 [调试集群 (#debug_clusters)。
- 检查 主运行状况。 如果状态不是 normal,请参阅 [查看主运行状况 (#debug_master)。
- 检查可能运行 Red Hat OpenShift 组件的工作程序节点。 如果状态不是 normal,请参阅 调试工作程序节点。
ibmcloud oc worker ls -c <cluster_name_or_ID>
第 5 步:登录群集
登录到集群。 请注意,如果 Red Hat OpenShift Web 控制台无法用于获取登录令牌,那么可以 从 CLI 访问集群。
仅限 VPC: 如果已启用私有云服务端点,那么必须 通过 VPC VPN 连接连接到专用网络 才能访问 Web 控制台。
步骤 6: 检查组件 pod
检查不起作用的 Red Hat OpenShift 组件 pod 的运行状况。
- 检查 Pod 的状态。
oc get pods -n <project>
- 如果 pod 未处于 正在运行 状态,请描述 pod 并检查事件。 例如,您可能会看到一个错误,即由于缺少 CPU 或内存资源而无法调度 pod,如果您的集群具有的工作程序节点少于 3 个,那么这很常见。 调整经典工作程序池的大小 或 调整 VPC 工作程序池的大小,然后重试。
oc describe pod -n <project> <pod>
- 如果未在事件部分中看到任何有用信息,请查看 pod 日志以获取任何错误消息或其他故障诊断信息。
oc logs pod -n <project> <pod>
- 重新启动 pod 并检查其是否达到 正在运行 状态。
oc delete pod -n <project> <pod>
步骤 7: 检查系统 pod
如果 pod 运行正常,请检查其他系统 pod 是否迂到问题。 通常要正常运行,一个组件依赖于另一个组件才能正常运行。
例如,OperatorHub 具有一组存储在外部注册表 (例如 quay.io
) 中的映像。 这些映像将拉入内部注册表以在 Red Hat OpenShift 集群中的项目中使用。 如果未正确设置任何 OperatorHub 或内部注册表组件,例如由于缺少许可权或计算资源,那么不会显示 OperatorHub 和目录。
- 检查暂挂 pod。
oc get pods --all-namespaces | grep Pending
- 描述 pod 并检查 Events。
例如,您可能从oc describe pod -n <project_name> <pod_name>
openshift-image-registry
pod 看到的一些常见消息包括:Volume could not be created
错误消息,因为您在没有正确存储许可权的情况下创建了集群。缺省情况下,Red Hat OpenShift on IBM Cloud 集群随附一个文件存储设备,用于存储系统和其他 pod 的映像。 修改 基础架构许可权 并重新启动 pod。order will exceed maximum number of storage volumes allowed
错误消息,因为您已超出每个帐户所允许的文件和块存储设备的组合配额。 除去未使用的存储设备 或 增加存储配额,然后重新启动 pod。- 无法存储映像的消息,因为文件存储设备已满。 调整存储设备大小 并重新启动 pod。
Pull image still failed due to error: unauthorized: authentication required
错误消息,因为内部注册表无法从外部注册表中拉取映像。 检查是否为项目设置了 映像拉取私钥,然后重新启动 pod。
- 检查运行失败 pod 的 Node。 如果所有 pod 都在同一工作程序节点上运行,那么该工作程序节点可能存在网络连接问题。 重新装入工作程序节点。
ibmcloud oc worker reload -c <cluster_name_or_ID> -w <worker_node_ID>
步骤 8: 检查 VPN
请检查是否正确设置了集群中的 VPN。
- 检查 VPN pod 是否正在运行。
oc get pods -n kube-system -l app=vpn
- 检查 VPN 日志,并检查指示 VPN 隧道不工作的
ERROR
消息,例如WORKERIP:<port>
,例如WORKERIP:10250
。oc logs -n kube-system <vpn_pod> --tail 10
- 如果看到工作程序 IP 错误,请检查工作程序到工作程序的通信是否中断。 登录到
calico-system
项目中的calico-node
pod,并检查是否存在相同的WORKERIP:10250
错误。oc exec -n calico-system <calico-node_pod> -- date
- 如果工作程序到工作程序的通信中断,请确保启用 VRF 或 VLAN 生成。
- 如果看到与 VPN 或
calico-node
pod 不同的错误,请重新启动 VPN pod。oc delete pod -n kube-system <vpn_pod>
- 如果 VPN 仍然失败,请检查运行 pod 的工作程序节点。
oc describe pod -n kube-system <vpn_pod> | grep "Node:"
- 对工作程序节点进行警戒,以便将 VPN pod 重新调度到其他工作程序节点。
oc cordon <worker_node>
- 请再次检查 VPN pod 日志。 如果 pod 不再有错误,那么工作程序节点可能存在网络连接问题。 重新装入工作程序节点。
ibmcloud oc worker reload -c <cluster_name_or_ID> -w <worker_node_ID>
步骤 9: 刷新集群主节点
刷新集群主节点以设置缺省 Red Hat OpenShift 组件。 刷新集群后,请等待几分钟以允许操作完成。
ibmcloud oc cluster master refresh -c <cluster_name_or_ID>
步骤 10: 重试
请再次尝试使用 Red Hat OpenShift 组件。
如果该错误仍然存在,请参阅 反馈,问题和支持。