问题是在部署新部署后
kubectl apply -f deployment.yml
(假设使用一个副本进行部署)
Kubernetes 将创建第二个 pod 并关闭前一个 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?