运行kubectl日志可以看到一个Kubernetes容器的stderr/stdout。
我如何获得一组pod的聚合stderr/stdout,最好是由某个复制控制器创建的那些?
运行kubectl日志可以看到一个Kubernetes容器的stderr/stdout。
我如何获得一组pod的聚合stderr/stdout,最好是由某个复制控制器创建的那些?
当前回答
@johan的回答让我想到了一句话:
for i in $(kubectl get pods -n default |cut -d" " -f1); do kubectl logs $i -n default; done
其他回答
不确定这是否是一个新事物,但随着部署,可以这样做:
kubectl logs deployment/app1
在前面答案的基础上,如果添加-f,可以跟踪日志。
kubectl logs -f deployment/app
你可以使用标签
kubectl logs -l app=elasticsearch
你可能想要指定——all-containers——ignore-errors,以便:
包括来自多个容器的吊舱的日志 在致命错误(例如,无法检索日志)时继续到下一个pod
@johan的回答让我想到了一句话:
for i in $(kubectl get pods -n default |cut -d" " -f1); do kubectl logs $i -n default; done
我使用这个简单的脚本从部署的pods中获取日志:
#!/usr/bin/env bash
DEPLOYMENT=$1
for p in $(kubectl get pods | grep ^${DEPLOYMENT}- | cut -f 1 -d ' '); do
echo ---------------------------
echo $p
echo ---------------------------
kubectl logs $p
done
剧本要点
使用方法:log_deploy .sh "deploy -name"。
然后脚本将显示所有以“deployment-name”开头的pod的日志。