溫馨提示×

Debian K8s部署日志如何查看

小樊
84
2025-02-22 09:24:32
欄目: 智能運維

在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集群中查看和管理部署日志,快速定位和解決問題。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女