溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎樣進行Kubernetes日志查詢分析實踐

發(fā)布時間:2021-12-28 15:10:33 來源:億速云 閱讀:108 作者:柒染 欄目:云計算

這期內(nèi)容當中小編將會給大家?guī)碛嘘P怎樣進行Kubernetes日志查詢分析實踐,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

簡介:下面將介紹如何基于日志服務實現(xiàn)對 Kubernetes(以下簡稱 K8s)日志的采集以及查詢分析,此外,還附帶了對 Ingress、Audit 方案的簡要介紹。為了方便大家通過操作來加深理解,提供了詳細的操作步驟以及對應截圖和配置代碼。

準備工作

為了完成后續(xù)的相關操作,我們需要準備一個 K8s 集群,操作步驟如下:

  1. 登陸容器服務控制臺。

  2. 創(chuàng)建一個標準托管集群(杭州區(qū)域),在向?qū)е泄催x上**【使用 EIP 暴露 API Server】【使用日志服務】**。

  3. 集群創(chuàng)建完畢后,回到集群列表頁面,點擊**【更多->通過 CloudShell 管理集群】**。

  4. 在 CloudShell 中輸入kubectl get ds -n kube-system,結果中顯示的logtail-ds即為了實現(xiàn)數(shù)據(jù)采集所安裝的日志服務組件。

  5. 打開日志服務控制臺,可以看到和 K8s 集群 ID 所對應的 project 也已經(jīng)創(chuàng)建完畢。

操作截圖如下:怎樣進行Kubernetes日志查詢分析實踐

圖:創(chuàng)建托管集群(步驟 2)
怎樣進行Kubernetes日志查詢分析實踐

圖:打開 CloudShell(步驟 3)
怎樣進行Kubernetes日志查詢分析實踐

圖:在 CloudShell 中查看日志服務組件(步驟 4)
怎樣進行Kubernetes日志查詢分析實踐

圖:打開日志服務控制臺,查看 project(步驟 5)

1. 數(shù)據(jù)采集

在 K8s 環(huán)境下,容器日志數(shù)據(jù)從大體上分為兩類:容器標準輸出和容器內(nèi)文本文件,前者是容器特有的一種日志存在形式,后者和傳統(tǒng)的文本文件日志類似,只是文件存放在各個容器內(nèi)部,相互之間隔離。下面我們將介紹如何對這兩種類型的日志進行采集。

1.1. Mock 數(shù)據(jù)

我們將使用如下兩個 YAML 文件分別生成標準輸出和容器內(nèi)文件兩種形式的 mock 數(shù)據(jù)。
容器標準輸出

# 創(chuàng)建兩個 pod 來生成 mock 數(shù)據(jù)
apiVersion: batch/v1
kind: Job
metadata:
  name: nginx-stdout-log-demo-1
  namespace: nginx-stdout
spec:
  template:
    metadata:
      name: nginx-stdout-log-demo-1
    spec:
      containers:
      - name: nginx-stdout-log-demo-1
        image: registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest
        command: ["/bin/mock_log"]
        args: ["--stderr=false", "--stdout=true", "--log-type=nginx", "--total-count=100000000", "--logs-per-sec=5"]
      restartPolicy: Never
---
apiVersion: batch/v1
kind: Job
metadata:
  name: nginx-stdout-log-demo-2
  namespace: nginx-stdout
spec:
  template:
    metadata:
      name: nginx-stdout-log-demo-2
    spec:
      containers:
      - name: nginx-stdout-log-demo-2
        image: registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest
        command: ["/bin/mock_log"]
        args: ["--stderr=false", "--stdout=true", "--log-type=nginx", "--total-count=100000000", "--logs-per-sec=5"]
      restartPolicy: Never

容器內(nèi)文本文件(/var/log/access.log)

apiVersion: batch/v1
kind: Job
metadata:
  name: nginx-file-log-demo
  namespace: nginx-file
spec:
  template:
    metadata:
      name: nginx-file-log-demo
    spec:
      restartPolicy: Never
      containers:
      - name: nginx-file-log-demo
        image: registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest
        command: ["/bin/mock_log"]
        args: ["--log-type=nginx", "--stdout=false", "--stderr=false", "--path=/var/log/access.log", "--total-count=100000000", "--logs-per-sec=5"]

操作步驟:

  1. 打開 CloudShell,參考準備工作中的步驟 3。

  2. 在集群中應用上面提及的兩個 YAML(Github)。

  3. 執(zhí)行 kubectl get pods 查看負責生成日志的幾個 Pod。

  4. 查看兩個 Pod 生成日志的情況(根據(jù)實際情況替換命令中的 pod 名)

    • 標準輸出:執(zhí)行kubectl logs -n nginx-stdout --tail=10 nginx-stdout-log-demo-1-7kvwx。

    • 容器內(nèi)文件:執(zhí)行kubectl exec -n nginx-file nginx-file-log-demo-7frsp -- bash -c "tail /var/log/access.log"。

$ kubectl create namespace nginx-stdout
$ kubectl create -f https://raw.githubusercontent.com/goclis/kubernetes-mock-log/master/pod_nginx_stdout.yaml
$ kubectl create namespace nginx-file
$ kubectl create -f https://raw.githubusercontent.com/goclis/kubernetes-mock-log/master/pod_nginx_file.yaml

命令:生成 mock 數(shù)據(jù)(步驟 2)

$ kubectl get pods -A
NAMESPACE      NAME                                               READY   STATUS    RESTARTS   AGE
nginx-file     nginx-file-log-demo-7frsp                          1/1     Running   0          2m9s
nginx-stdout   nginx-stdout-log-demo-1-7kvwx                      1/1     Running   0          2m12s
nginx-stdout   nginx-stdout-log-demo-2-4x7vw                      1/1     Running   0          2m12s

命令:查看日志服務組件(步驟 3)

上述就是小編為大家分享的怎樣進行Kubernetes日志查詢分析實踐了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI