专栏名称: 院长技术
《院长技术》专注于DevOps技术栈研究,云原生、Istio,CICD、Docker、Prometheus、K8s、ServiceMesh、Jenkins、Linux、微服务、分布式存储、监控、日志收集、安全渗透、虚拟化等技术栈。
目录
相关文章推荐
青岛日报  ·  今天12时38分,他在青岛逝世,曾为我国成为 ... ·  8 小时前  
青岛日报  ·  今天12时38分,他在青岛逝世,曾为我国成为 ... ·  8 小时前  
创乎  ·  卖卤味靠私域,每月多赚几万元 ·  14 小时前  
上海科创汇  ·  《杨浦区高新技术企业资助办法》2025 ·  16 小时前  
上海科创汇  ·  申报|2025年金山区生物医药产业项目 ·  16 小时前  
51好读  ›  专栏  ›  院长技术

通过Shell脚本对K8s集群的服务,单/多个Pod进行日志查询提取

院长技术  · 公众号  ·  · 2024-11-04 07:21

正文

#!/bin/bash


# 检查参数数量

if [ "$#" -lt 3 ]; then

echo "Usage: $0 [end-time]"

echo "Example: $0 my-service default '2023-10-01T00:00:00Z'"

echo "Optionally specify end-time: $0 my-service default '2023-10-01T00:00:00Z' '2023-10-01T01:00:00Z'"

exit 1

fi


SERVICE_NAME=$1

NAMESPACE=$2

START_TIME=$3

END_TIME=${4:-""}  # 如果未提供结束时间,则默认为空


# 获取Pod列表

PODS=$(kubectl get pods -n $NAMESPACE -l app=$SERVICE_NAME -o jsonpath='{.items[*].metadata.name}')


if [ -z "$PODS" ]; then

echo "No Pods found for service $SERVICE_NAME in namespace $NAMESPACE"

exit 1

fi


# 遍历每个Pod并获取日志

for POD in $PODS; do

echo "Fetching logs for Pod $POD"

if [ -n "$END_TIME" ]; then

kubectl logs -n $NAMESPACE $POD --since-time=$START_TIME --until-time=$END_TIME

else

kubectl logs -n $NAMESPACE $POD --since-time=$START_TIME

fi

echo "----- End of logs for Pod $POD -----"

echo ""  # 空行分隔不同Pod的日志

done






运行脚本并传入服务名称、命名空间以及开始时间(可选:结束时间):
sh
./fetch_logs.sh my-service default '2023-10-01T00:00:00Z' '2023-10-01T01:00:00Z'




如果只指定开始时间,不指定结束时间:







请到「今天看啥」查看全文