温馨提示×

Debian K8s部署日志如何查看

小樊
35
2025-02-22 09:24:32
栏目: 智能运维
Debian服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在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日志

如果您的Pod包含多个容器,您需要指定要查看的容器名称:

kubectl logs <pod-name> -n <namespace> -c <container-name>
  • <container-name>:要查看的容器名称。

查看退出Pod的日志

如果您想查看因故障而退出的容器的日志,可以使用-p参数:

kubectl logs -f <pod-name> -n <namespace> -p
  • -p:查看上一个崩溃容器的日志。

使用Shell脚本批量查看日志

您还可以编写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日志,例如:

  • Kubetail:一个简单的Shell脚本,可以同时跟踪多个Pod的日志,并支持彩色输出和条件过滤。
  • Stern:一个用Go语言开发的多容器日志查看工具,也支持彩色输出和条件过滤。

通过上述方法,您可以轻松地在Debian上的K8s集群中查看和管理部署日志,快速定位和解决问题。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读:Debian部署K8s有哪些步骤

0