IBM Cloud Docs
故障排除 Red Hat OpenShift 问题

故障排除 Red Hat OpenShift 问题

使用故障诊断信息来诊断和修复 Red Hat® OpenShift® 的问题。

RHEL 预订

如果您在订阅时遇到问题,请使用以下命令运行查询。

subscription-manager list --available --all

负载均衡器

要检查负载平衡是否正常,请在堡垒节点上使用以下命令。 如果结果是一组完整的报文头,则负载平衡成功。

wget --no-check-certificate https://api.ocp.dallas.ibm.local:6443

Red Hat CoreOS

您无需使用 SSH 连接节点,但如果需要,可以通过 bastion 节点进行连接。 下面的示例使用以下命令连接到引导程序服务器:

ssh core@192.168.133.9

如果收到错误,请尝试使用以下命令来禁用指纹检查:

ssh -o StrictHostKeyChecking=no core@192.168.133.9

本示例演示了如何从堡垒节点连接到控制平面节点,以查看日志并更改权限,使其可读。 目录名称可能不同。

ssh -i /root/.ssh/id_rsa core@192.168.133.12
sudo su
chmod 777 /var/log/pods/b2810e842791d83d48a4684295b7cd01/etcd-member/0.log

此示例显示如何将日志下载到防御主机节点,然后再下载到跳板机或远程设备,以便提高日志可读性并能够解析日志。 目录名称可能不同。

scp -i /root/.ssh/id_rsa core@192.168.133.10:/var/log/pods/b2810e842791d83d48a4684295b7cd01/etcd-member/0.log 0.log

Red Hat OpenShift

获取节点及其状态的列表:

oc get nodes

使用 kubectl 时,首选项会生效,同时决定使用哪个 kubeconfig 文件。

  • 如果指定了,请使用 --kubeconfig 标记。
  • 如果指定了KUBECONFIG环境变量,请使用该变量。
  • 使用 $HOME/.kube/config 文件。

要将由 Red Hat OpenShift 安装程序创建的kubeconfig导出到环境变量,请使用以下命令:

export KUBECONFIG=/opt/ocpinstall/auth/kubeconfig

删除部署

如果您的Terraform部署出现问题,您可以使用以下命令删除部署。

terraform destroy

在某些情况下,您可能在使用 Terraform 完成自动化时遇到问题。 在这些情况下,您可能需要使用 vCenter 并删除 Terraform 状态文件来手动删除部署。

  1. 删除 vCenter 中的 ocp 文件夹及其内容。
  2. 删除 ocp 资源组。
  3. 删除 rm /opt/ocpinstall/installer/upi/vsphere/terraform.tfstate Terraform 状态文件。

完成这些步骤后,您可以修复部署问题并重新部署 Red Hat OpenShift 平台。

生成新的 Ignition 文件

Ignition 文件的有效期为 24 小时。 可以通过完成以下步骤来生成 .ign 文件:

  1. 除去旧的状态、配置和 ign 文件:

    cd /opt/ocpinstall
    rm -R .openshift_install.log .openshift_install_state.json auth *.ign metadata.json
    
  2. 复制 Red Hat OpenShift 的 install-config 备份到yaml:

    cp install-config.bak install-config.yaml
    openshift-install create ignition-configs --dir=/opt/ocpinstall/
    
  3. 复制 bootstrap.ign 到 nginx 主文件夹。

    cp bootstrap.ign /usr/share/nginx/html
    
  4. cat master.igncat worker.ign 替换为 terraform.tfvars 中的主要部分和工作人员部分。 nano /opt/ocpinstall/installer/upi/vsphere/terraform.tfvars:

    // Ignition config for the control plane machines. You should copy the contents of the master.ign generated by$
    control_plane_ignition = <<END_OF_MASTER_IGNITION
    <replace with new master.ign>
    END_OF_MASTER_IGNITION
    
    // Ignition config for the compute machines. You should copy the contents of the worker.ign generated by the i$
    compute_ignition = <<END_OF_WORKER_IGNITION
    <replace with new worker.ign>
    END_OF_WORKER_IGNITION
    

为 Red Hat OpenShift 拍摄快照

您可能希望在开发或测试期间停止和恢复 Red Hat OpenShift 群集虚拟机。 在拍摄快照之前,您必须考虑以下几点。

在安装 Red Hat OpenShift 4.x 集群时,会创建一个引导证书,用于在控制平面节点上为kubelet客户端证书创建证书签名请求(CSR)(每个节点或kubelet一个)。 此证书用于识别任何节点上的每个 kubelet。 由于引导程序证书无法撤销,因此设置为在集群安装后较短时间内到期(24 小时)。 除控制平面节点外的所有节点都有一个可撤销的服务账户令牌。 引导程序证书仅在集群安装后 24 小时内有效。 在初始 24 小时后,证书将每 30 天到期一次。

第一个控制面 kubelet 持续 24 小时后才会重新创建。 如果您在部署后立即拍摄快照,控制平面 kubelet 还没有 30 天的客户证书。 然后,缺少的kubelet客户端证书刷新窗口导致集群无法使用,因为集群备份时无法使用引导凭证。 实际上,这个过程要求在安装后至少运行25小时,才能关闭 Red Hat OpenShift 4集群。

可以通过部署后在防御主机中运行以下命令来检查证书的有效性:

ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no core@192.168.133.10 -- sudo openssl x509 -text -noout -in /var/lib/kubelet/pki/kubelet-client-current.pem

运行以下命令检查输出证书的有效期。

Warning: Identity file id_rsa_crc not accessible: No such file or directory.
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            6a:73:78:19:f3:1e:8f:0c:a9:51:b8:53:f4:eb:29:8d:49:fa:7e:fd
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN = kube-csr-signer_@1573016574
        Validity
            Not Before: Nov  6 08:22:00 2019 GMT
            Not After : Dec  6 04:57:43 2019 GMT

有关安装后关闭群集的更多信息,请参阅 启用 Red Hat OpenShift 4群集以停止和恢复群集虚拟机

在最初的24小时证书更新后,集群快照将在未来30天内随时启用。 在 30 天后,证书将失效,导致集群快照不可用。