6.6. 构建故障排除
由构建管理器启动的构建器实例是临时的。这意味着,他们可以在超时/失败或 control plane(EC2/K8s)收集的垃圾回收时被 Red Hat Quay} 关闭。这意味着,若要获取构建器日志,构建 运行时 需要执行此操作。
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_AUTHORIZED_KEYS 连接到容器中运行的虚拟机:
$ 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
也可以使用单个 SSH 命令执行第 2-3 步:
$ 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’