kubernetes - 如何在CD输出中包含Pod启动日志/信息?

标签 kubernetes continuous-deployment

我正在设置CI / CD管道。部署步骤运行以下命令:

kubectl apply -f manifest.yml --namespace <namespace>
kubectl rollout status Deployment/<service> --namespace <namespace>

这给出以下输出:
Waiting for deployment "<service>" rollout to finish: 1 out of 2 new replicas have been updated...
error: deployment "<service>" exceeded its progress deadline
##[error]error: deployment "<service>" exceeded its progress deadline

通过运行
kubectl get pods

我可以看到它已经启动了一个卡在CrashLoopBackOff中的Pod。我可以通过运行来查看为什么pod无法启动:
kubectl logs <pod-name>

有没有办法在部署日志中包含此输出?我显然可以检查部署是否失败,然后解析以上命令并显示日志输出,但是我希望有某种方法可以使此信息脱离kubectl的部署状态(最好是有一种方法可以使kubectl的部署状态随时通知部署中的Pod的状态已更改,并显示具有错误状态更改的所有Pod的日志。)

最佳答案

如果不是这种情况,请labelize您pod:

apiVersion: v1
kind: Pod
metadata:
  name: label-demo
  labels:
    environment: production
    app: nginx

它使您可以查看没有Pod名称的日志:
kubectl logs -l app=nginx -n your-namespace

对于CrashLoopBackOff错误,事件通常提供比日志更多的信息:
kubectl get events --sort-by lastTimestamp -n your-namespace

在管道的此端添加此代码,它将为您提供有关 pods 调度的有趣信息,等等。

关于kubernetes - 如何在CD输出中包含Pod启动日志/信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57777350/

相关文章:

kubernetes - 在Kubernetes中,Kafka Connect部署无法连接到Kafka Broker服务(内部图)

docker - 在容器内运行 docker

continuous-deployment - 多组件项目的持续交付

azure - 将 SSH key 添加到 Windows Azure

kubernetes - 使用K8S Client-Go获取 namespace 配额

kubernetes - 配置主API服务器以检查警戒线节点并销毁它是否没有作业在运行

kubernetes - 声明volumeMounts后没有这样的文件或目录

winforms - 如何设计安装程序以便将其用于自动化验收测试

xamarin - 有没有人用 gitlab-ci 成功构建 Xamarin.Forms?

conda - 如何在 Conda 中管理开发依赖?