添加定制 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地址
-
查找
kube-<clusterID>安全组的安全组标识。ibmcloud is security-groups -
同步安全组。
ibmcloud oc security-group sync --cluster <clusterID> --security-group <security-group-ID> -
替换集群中的工作节点。
ibmcloud oc worker replace --cluster <cluster_name_or_ID> --worker <worker_node_ID> -
如果问题仍然存在,请联系支持团队。 打开 支持案例。 在案例详细信息中,请确保包含任何相关日志文件,错误消息或命令输出。
其他方案
可能由于 VPC 中的定制 DNS 解析器与同一 VPC 中的 4.15 集群的组合而导致的错误情况。
如果在创建 DNS 解析器之后创建集群
如果在创建定制 DNS 解析器之后创建 4.15 集群,并且工作程序未进入 Normal 或 Active 状态,那么在部署工作程序的逻辑需要 DNS 定制解析器的规则之前,不会将这些规则添加到 kube-<clusterID> 安全组。
- 列出
kube-<clusterID>安全组的详细信息,以验证是否已将定制 DNS 解析器 IP 添加为安全组中的目标。ibmcloud is sg kube-<clusterID> - 替换集群中的工作节点。
ibmcloud oc worker replace --cluster <cluster_name_or_ID> --worker <worker_node_ID> - 如果问题仍然存在,请联系支持团队。 打开 支持案例。 在案例详细信息中,请确保包含任何相关日志文件,错误消息或命令输出。