這期內容當中小編將會給大家?guī)碛嘘P怎樣進行Kubernetes日志查詢分析實踐,文章內容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
堅守“ 做人真誠 · 做事靠譜 · 口碑至上 · 高效敬業(yè) ”的價值觀,專業(yè)網站建設服務10余年為成都成都純水機小微創(chuàng)業(yè)公司專業(yè)提供企業(yè)網站制作營銷網站建設商城網站建設手機網站建設小程序網站建設網站改版,從內容策劃、視覺設計、底層架構、網頁布局、功能開發(fā)迭代于一體的高端網站建設服務。
簡介:下面將介紹如何基于日志服務實現(xiàn)對 Kubernetes(以下簡稱 K8s)日志的采集以及查詢分析,此外,還附帶了對 Ingress、Audit 方案的簡要介紹。為了方便大家通過操作來加深理解,提供了詳細的操作步驟以及對應截圖和配置代碼。
為了完成后續(xù)的相關操作,我們需要準備一個 K8s 集群,操作步驟如下:
登陸容器服務控制臺。
創(chuàng)建一個標準托管集群(杭州區(qū)域),在向導中勾選上**【使用 EIP 暴露 API Server】和【使用日志服務】**。
集群創(chuàng)建完畢后,回到集群列表頁面,點擊**【更多->通過 CloudShell 管理集群】**。
在 CloudShell 中輸入kubectl get ds -n kube-system
,結果中顯示的logtail-ds
即為了實現(xiàn)數據采集所安裝的日志服務組件。
打開日志服務控制臺,可以看到和 K8s 集群 ID 所對應的 project 也已經創(chuàng)建完畢。
操作截圖如下:
圖:創(chuàng)建托管集群(步驟 2)
圖:打開 CloudShell(步驟 3)
圖:在 CloudShell 中查看日志服務組件(步驟 4)
圖:打開日志服務控制臺,查看 project(步驟 5)
在 K8s 環(huán)境下,容器日志數據從大體上分為兩類:容器標準輸出和容器內文本文件,前者是容器特有的一種日志存在形式,后者和傳統(tǒng)的文本文件日志類似,只是文件存放在各個容器內部,相互之間隔離。下面我們將介紹如何對這兩種類型的日志進行采集。
我們將使用如下兩個 YAML 文件分別生成標準輸出和容器內文件兩種形式的 mock 數據。
容器標準輸出
# 創(chuàng)建兩個 pod 來生成 mock 數據 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
容器內文本文件(/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"]
操作步驟:
打開 CloudShell,參考準備工作中的步驟 3。
在集群中應用上面提及的兩個 YAML(Github)。
執(zhí)行 kubectl get pods 查看負責生成日志的幾個 Pod。
查看兩個 Pod 生成日志的情況(根據實際情況替換命令中的 pod 名)
標準輸出:執(zhí)行kubectl logs -n nginx-stdout --tail=10 nginx-stdout-log-demo-1-7kvwx
。
容器內文件:執(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 數據(步驟 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日志查詢分析實踐了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。