添加定制 DNS 解析器后,为何会看到 DNS 故障?

虚拟私有云 4.15 及更高版本

在已有 4.15 集群的 VPC 中创建自定义 DNS 解析器后,您会看到 DNS 故障。

排查 Satellite 存储中的自定义DNS配置问题。

在以下每种情况下,同步 kube-<clusterID> 安全组并替换工作程序节点,如以下步骤中所述。 请注意,在 VPC 中创建并启用解析器后,该问题可能不会立即显现。 DNS 包含可能在替换或重新启动工作程序或重新启动 pod 之前解析名称查找的高速缓存。

  • 向集群添加或替换工作程序节点失败,ibmcloud ks workers 显示类似于以下内容的工作程序状态
    Infrastructure instance status is 'failed': Can't start instance because provisioning failed.
    
  • 运行 oc get oc 时,您会看到类似于以下内容的错误。
    dial tcp: lookup s3.direct.eu-de.cloud-object-storage.appdomain.cloud on 172.21.0.10:53: server misbehaving.
    
  • 重启一个工作节点会导致该节点上的 Pod 进入“Terminating”状态,OpenShift Web 控制台无法打开,或者 Ingress 处于“Critical”状态。

如果在创建 4.15 群集之前已在 VPC 中启用自定义 DNS 解析器,那么 Red Hat OpenShift on IBM Cloud 会自动添加规则,允许通过 DNS 解析器 IP 地址向 IBM Cloud 受管安全组 (kube-<clusterID>) 传输流量。

但是,如果在已包含 4.15 集群的 VPC 上启用定制 DNS 解析器,那么这些现有集群将失去对 DNS 的访问权。

要解决此问题,请通过同步 kube-<clusterID> 安全组来允许访问现有集群上的 DNS 解析器。 同步 kube-<clusterID> 安全组会添加一些规则,允许流量通过DNS解析器的IP地址

  1. 查找 kube-<clusterID> 安全组的安全组标识。

    ibmcloud is security-groups
    
  2. 同步安全组。

    ibmcloud oc security-group sync --cluster <clusterID> --security-group <security-group-ID>
    
  3. 替换集群中的工作节点。

    ibmcloud oc worker replace --cluster <cluster_name_or_ID> --worker <worker_node_ID>
    
  4. 如果问题仍然存在,请联系支持团队。 打开 支持案例。 在案例详细信息中,请确保包含任何相关日志文件,错误消息或命令输出。

其他方案

可能由于 VPC 中的定制 DNS 解析器与同一 VPC 中的 4.15 集群的组合而导致的错误情况。

如果在创建 DNS 解析器之后创建集群

如果在创建定制 DNS 解析器之后创建 4.15 集群,并且工作程序未进入 NormalActive 状态,那么在部署工作程序的逻辑需要 DNS 定制解析器的规则之前,不会将这些规则添加到 kube-<clusterID> 安全组。

  1. 列出 kube-<clusterID> 安全组的详细信息,以验证是否已将定制 DNS 解析器 IP 添加为安全组中的目标。
    ibmcloud is sg kube-<clusterID>
    
  2. 替换集群中的工作节点。
    ibmcloud oc worker replace --cluster <cluster_name_or_ID> --worker <worker_node_ID>
    
  3. 如果问题仍然存在,请联系支持团队。 打开 支持案例。 在案例详细信息中,请确保包含任何相关日志文件,错误消息或命令输出。