在Debian上部署Kubernetes(K8s)后,查看服务日志是非常重要的操作,可以帮助您及时排查和解决问题。以下是查看K8s部署日志的详细步骤:
kubectl logs <pod-name> -n <namespace>
<pod-name>
:Pod的名称。<namespace>
:Pod所在的命名空间,如果不指定,默认为default
。kubectl logs -f <pod-name> -n <namespace>
-f
或 --follow
:持续显示日志,类似于tail -f
命令。如果您的Pod包含多个容器,您需要指定要查看的容器名称:
kubectl logs <pod-name> -n <namespace> -c <container-name>
<container-name>
:要查看的容器名称。如果您想查看因故障而退出的容器的日志,可以使用-p
参数:
kubectl logs -f <pod-name> -n <namespace> -p
-p
:查看上一个崩溃容器的日志。您还可以编写Shell脚本来批量查看多个服务的日志。以下是一个简单的示例脚本:
#!/bin/bash
read -p "请输入服务名: " SERVICE_NAME
read -p "请输入命名空间: " NAMESPACE
echo "1. 全部"
echo "2. 指定小时"
echo "3. 开始时间"
read -p "请输入编号: " choice
case $choice in
1)
PODS=$(kubectl get pods -n $NAMESPACE -l app=$SERVICE_NAME -o jsonpath='{.items[*].metadata.name}')
if [ -z "$PODS" ]; then
echo "在【$NAMESPACE】命名空间下没有找到服务为:【$SERVICE_NAME】,可用的Pod"
exit 1
fi
for POD in $PODS; do
echo "开始获取Pod日志 $POD"
kubectl logs -n $NAMESPACE $POD --tail=-1 >/tmp/$POD.log
echo "----- 获取Pod日志结束 $POD -----"
echo ""
done
;;
2)
read -p "请输入取几个小时前的日志: " TimeHour
PODS=$(kubectl get pods -n $NAMESPACE -l app=$SERVICE_NAME -o jsonpath='{.items[*].metadata.name}')
if [ -z "$PODS" ]; then
echo "在【$NAMESPACE】命名空间下没有找到服务为:【$SERVICE_NAME】,可用的Pod"
exit 1
fi
for POD in $PODS; do
echo "开始获取Pod日志 $POD"
kubectl logs -n $NAMESPACE $POD --since=${TimeHour}h >/tmp/$POD.log
echo "----- 获取Pod日志结束 $POD -----"
echo ""
done
;;
3)
read -p "开始时间:'2024-11-05T00:00:00Z'" START_TIME
PODS=$(kubectl get pods -n $NAMESPACE -l app=$SERVICE_NAME -o jsonpath='{.items[*].metadata.name}')
if [ -z "$PODS" ]; then
echo "在【$NAMESPACE】命名空间下没有找到服务为:【$SERVICE_NAME】,可用的Pod"
exit 1
fi
for POD in $PODS; do
echo "开始获取Pod日志 $POD"
kubectl logs -n $NAMESPACE $POD --since-time=$START_TIME >/tmp/$POD.log
echo "----- 获取Pod日志结束 $POD -----"
echo ""
done
;;
*)
echo "无效的选项,程序退出!!!"
exit 1
;;
esac
echo "查询日志程序执行完毕。"
除了kubectl
命令,还有一些第三方工具可以帮助您更高效地查看和管理K8s日志,例如:
通过上述方法,您可以轻松地在Debian上的K8s集群中查看和管理部署日志,快速定位和解决问题。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读:Debian部署K8s有哪些步骤