在 skaffold 部署期间提取 pod 日志
Extract pod logs during skaffold deploy
我们 运行 使用 k3s 和 skaffold 针对本地部署的应用程序(CI 构建代理)进行了一些自动化测试。
当我们 运行 skaffold deploy --status-check
时,我们如何查看(标准输出或文件)pod 日志?
(我们在部署期间遇到错误,除非我们通过 ssh 连接到构建代理,否则我们看不到这些错误。)
下面,当运行部署成功后,抓取日志,但是如果我们运行在运行宁skaffold deploy
之前,这就不行了,大概是因为它没有接收到 运行 执行此命令后启动的任何 pods:
kubectl logs \
--namespace x \
--follow \
--ignore-errors \
--max-log-requests 50 \
--all-containers \
--prefix \
--timestamps \
--selector release=y >"k8s.log" 2>&1 &
skaffold deploy --status-check
的输出
看起来像这样:
LAST DEPLOYED: Tue Oct 13 18:14:03 2020
NAMESPACE: smoke
STATUS: deployed
REVISION: 1
TEST SUITE: None
Waiting for deployments to stabilize...
- smoke:deployment/smoke-assets is ready. [7/8 deployment(s) still pending]
- smoke:deployment/smoke-b is ready. [6/8 deployment(s) still pending]
- smoke:deployment/smoke-c is ready. [5/8 deployment(s) still pending]
- smoke:deployment/smoke-d: waiting for rollout to finish: 0 of 1 updated replicas are available...
- smoke:deployment/smoke-e: waiting for rollout to finish: 0 of 1 updated replicas are available...
- smoke:deployment/smoke-f: waiting for rollout to finish: 0 of 1 updated replicas are available...
- smoke:deployment/smoke-g: waiting for rollout to finish: 0 of 1 updated replicas are available...
- smoke:deployment/smoke-h: waiting for rollout to finish: 0 of 2 updated replicas are available...
- smoke:deployment/smoke-d is ready. [4/8 deployment(s) still pending]
- smoke:deployment/smoke-g is ready. [3/8 deployment(s) still pending]
- smoke:deployment/smoke-e is ready. [2/8 deployment(s) still pending]
- smoke:deployment/smoke-h: waiting for rollout to finish: 1 of 2 updated replicas are available...
- smoke:deployment/smoke-h is ready. [1/8 deployment(s) still pending]
1/8 deployment(s) failed
- smoke:deployment/smoke-f: running [kubectl --context k3d-smoke-tests-cluster rollout status deployment smoke-f --namespace smoke --watch=false]
- stdout: ""
- stderr: "error: deployment \"smoke-f\" exceeded its progress deadline\n"
- cause: exit status 1
- smoke:deployment/smoke-f failed. Error: running [kubectl --context k3d-smoke-tests-cluster rollout status deployment smoke-f --namespace smoke --watch=false]
- stdout: ""
- stderr: "error: deployment \"smoke-f\" exceeded its progress deadline\n"
- cause: exit status 1.
@Graham Russell --status-check
应该记录失败的 pod(如果存在)。
我唯一能想到的是 pod 容器终止并在 skaffold 可以获取日志之前被清理。
目前无法在所有部署稳定之前将日志流式传输到标准输出。
你能粘贴当前的 status-check
输出吗
我发现 stern 可以应对新添加到命名空间的 pods。
所以,运行:
stern -n namespace . >my.log &
在 skaffold deploy
成功之前。
我们 运行 使用 k3s 和 skaffold 针对本地部署的应用程序(CI 构建代理)进行了一些自动化测试。
当我们 运行 skaffold deploy --status-check
时,我们如何查看(标准输出或文件)pod 日志?
(我们在部署期间遇到错误,除非我们通过 ssh 连接到构建代理,否则我们看不到这些错误。)
下面,当运行部署成功后,抓取日志,但是如果我们运行在运行宁skaffold deploy
之前,这就不行了,大概是因为它没有接收到 运行 执行此命令后启动的任何 pods:
kubectl logs \
--namespace x \
--follow \
--ignore-errors \
--max-log-requests 50 \
--all-containers \
--prefix \
--timestamps \
--selector release=y >"k8s.log" 2>&1 &
skaffold deploy --status-check
的输出
看起来像这样:
LAST DEPLOYED: Tue Oct 13 18:14:03 2020 NAMESPACE: smoke STATUS: deployed REVISION: 1 TEST SUITE: None Waiting for deployments to stabilize... - smoke:deployment/smoke-assets is ready. [7/8 deployment(s) still pending] - smoke:deployment/smoke-b is ready. [6/8 deployment(s) still pending] - smoke:deployment/smoke-c is ready. [5/8 deployment(s) still pending] - smoke:deployment/smoke-d: waiting for rollout to finish: 0 of 1 updated replicas are available... - smoke:deployment/smoke-e: waiting for rollout to finish: 0 of 1 updated replicas are available... - smoke:deployment/smoke-f: waiting for rollout to finish: 0 of 1 updated replicas are available... - smoke:deployment/smoke-g: waiting for rollout to finish: 0 of 1 updated replicas are available... - smoke:deployment/smoke-h: waiting for rollout to finish: 0 of 2 updated replicas are available... - smoke:deployment/smoke-d is ready. [4/8 deployment(s) still pending] - smoke:deployment/smoke-g is ready. [3/8 deployment(s) still pending] - smoke:deployment/smoke-e is ready. [2/8 deployment(s) still pending] - smoke:deployment/smoke-h: waiting for rollout to finish: 1 of 2 updated replicas are available... - smoke:deployment/smoke-h is ready. [1/8 deployment(s) still pending] 1/8 deployment(s) failed - smoke:deployment/smoke-f: running [kubectl --context k3d-smoke-tests-cluster rollout status deployment smoke-f --namespace smoke --watch=false] - stdout: "" - stderr: "error: deployment \"smoke-f\" exceeded its progress deadline\n" - cause: exit status 1 - smoke:deployment/smoke-f failed. Error: running [kubectl --context k3d-smoke-tests-cluster rollout status deployment smoke-f --namespace smoke --watch=false] - stdout: "" - stderr: "error: deployment \"smoke-f\" exceeded its progress deadline\n" - cause: exit status 1.
@Graham Russell --status-check
应该记录失败的 pod(如果存在)。
我唯一能想到的是 pod 容器终止并在 skaffold 可以获取日志之前被清理。
目前无法在所有部署稳定之前将日志流式传输到标准输出。
你能粘贴当前的 status-check
输出吗
我发现 stern 可以应对新添加到命名空间的 pods。
所以,运行:
stern -n namespace . >my.log &
在 skaffold deploy
成功之前。