6.6. 构建故障排除
构建管理器启动的构建器实例是临时的。这意味着,它们将在超时/故障时由 Red Hat Quay} 关闭,或者 control plane (EC2/K8s)收集的垃圾箱。这意味着,为了获取构建器日志,在构建 运行时 需要这样做。
6.6.1. DEBUG 配置标志
可以设置 DEBUG 标志,以防止在完成/失败后清理构建器实例。要做到这一点,在所需的 executor 配置中,将 DEBUG 设置为 true。例如:
EXECUTORS: - EXECUTOR: ec2 DEBUG: true ... - EXECUTOR: kubernetes DEBUG: true ...
当设置为 true 时,DEBUG 会在 quay-builder 服务完成后防止构建节点关闭,并阻止构建管理器清理实例(确定 EC2 实例或删除 k8s 作业)。这将允许调试构建器节点问题,不应在生产环境中 设置。生命周期服务仍然存在。例如,实例仍然会在大约 2 小时后(EC2 实例终止,k8s 作业将完成)设置 DEBUG 将影响 ALLOWED_WORKER_COUNT,因为未终止的实例/作业仍会计算到正在运行的 worker 总数。这意味着,如果达到 ALLOWED_WORKER_COUNT,则需要手动删除现有的构建器 worker,才能调度新的构建。
使用以下步骤:
客户机虚拟机将其 SSH 端口(22)转发到其主机的(容器集)端口 2222。端口将构建器 pod 的端口 2222 转发到 localhost 上的端口。例如
$ kubectl port-forward <builder pod> 9999:2222
使用 SSH_AUTHORIZED_KEYS 中的一个密钥,通过 SSH 连接到容器中运行的虚拟机:
$ ssh -i /path/to/ssh/key/set/in/ssh_authorized_keys -p 9999 core@localhost
获取 quay-builder 服务日志:
$ systemctl status quay-builder $ journalctl -f -u quay-builder
第 2-3 步也可以在单一 SSH 命令中完成:
$ ssh -i /path/to/ssh/key/set/in/ssh_authorized_keys -p 9999 core@localhost ‘systemctl status quay-builder’ $ ssh -i /path/to/ssh/key/set/in/ssh_authorized_keys -p 9999 core@localhost ‘journalctl -f -u quay-builder’