问题是在部署新部署之后
kubectl apply -f deployment.yml
(假设使用一个副本进行部署)
Kubernetes 将创建第二个 pod 并关闭前一个 - 到目前为止还可以。
但是在 kubectl apply 之后,我想立即在 CI/CD 中检测部署是否成功,并且无论如何(无论推出成功还是失败)从新部署的 pod 之一获取日志,以便在 CI 中提供尽可能多的信息/CD 日志以确定哪里出了问题。
所以我正在使用
kubectl rollout status deployment deployment-name
这是等待部署推出。紧接着你会得到两个 pod,一个处于“正在运行”状态,另一个处于“终止”状态。
现在有问题的部分:通常我会使用类似的方法
kubectl get pods --selector=app=deployment-name --output=jsonpath='{.items[*].metadata.name}' --field-selector=status.phase=Running
但不幸的是,它将返回两个 pod 的名称(“运行”和“终止”),用空格分隔。
现在我也试过了
kubectl get pods --selector=app=deployment-name --output=jsonpath='{.items[*].metadata.name}' --field-selector=status.phase=Running,status.phase!=Terminating
根据文档:
但由于某种原因,这将返回完全相同的结果,两个 pod 都在运行和终止。
问题是:
如何从结果中正确排除 TERMINATING pod?