在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何快速查看Kubernetes Pod崩潰前的日志

馬哥Linux運維 ? 來源:csdn ? 2023-07-06 09:25 ? 次閱讀

當pod處于crash狀態(tài)的時候,容器不斷重啟,此時用kubelet logs可能出現(xiàn)一直捕捉不到日志。解決方法:

kubectl previous參數作用:If true, print the logs for the previous instance of the container in a pod if it exists.

單容器pod:

kubectllogspod-name--previous

多容器pod:

kubectllogspod-name--previous-ccontainer-name

比如:

NAMEREADYSTATUSRESTARTSAGE
nginx-7d8b49557c-c2lx92/2Running5

kubectllogsnginx-7d8b49557c-c2lx9--previous
Error:xxxxxxxxxxx

kubelet會保持pod的前幾個失敗的容器,這個是查看的前提條件。kubelet實現(xiàn)previous的原理:將pod的日志存放在/var/log/pods/podname,并且是鏈接文件,鏈接到docker的容器的日志文件,同時kubelet還會保留上一個容器,同時有一個鏈接文件鏈接到pod上一個崩潰的容器的日志文件,使用previous就是查看的這個文件

比如查看一個pod:

ubuntu@~$kubeletgetpod
NAMEREADYSTATUSRESTARTSAGE
busybox1/1Running239499d
nginx-deployment-6wlhd1/1Running079d
redis1/1Running049d

到pod所在node查看kubelet放的兩個日志文件:

ls/var/log/pods/default_busybox_f72ab71a-5b3b-4ecf-940d-28a5c3b30683/busybox
2393.log2394.log

數字的含義:2393證明是第 2393 次重啟后的日志,2394代表是第2394次重啟后的日志。

實際這兩個日志文件是鏈接文件,指向了docker的日志文件:

/busybox#stat2393.log
File:2393.log->/data/kubernetes/docker/containers/68a5b32c9fdb1ad011b32e6252f9cdb759f69d7850e6b7b8591cb4c2bf00bcca/68a5b32c9fdb1ad011b32e6252f9cdb759f69d7850e6b7b8591cb4c2bf00bcca-json.log
Size:173Blocks:8IOBlock:4096symboliclink
Device:fc02h/64514dInode:529958Links:1
Access:(0777/lrwxrwxrwx)Uid:(0/root)Gid:(0/root)
Access:2023-01-311303.751514283+0800
Modify:2023-01-311303.039526838+0800
Change:2023-01-311303.039526838+0800
Birth:-

/busybox#stat2394.log
File:2394.log->/data/kubernetes/docker/containers/2ed9ebf0585215602874b076783e12191dbb010116038b8eb4646273ebfe195c/2ed9ebf0585215602874b076783e12191dbb010116038b8eb4646273ebfe195c-json.log
Size:173Blocks:8IOBlock:4096symboliclink
Device:fc02h/64514dInode:529955Links:1
Access:(0777/lrwxrwxrwx)Uid:(0/root)Gid:(0/root)
Access:2023-01-311403.991106950+0800
Modify:2023-01-311403.183119308+0800
Change:2023-01-311403.183119308+0800
Birth:-

看到分別指向了這兩個容器的日志文件,一個是當前pod里在跑的容器,一個是pod上次跑的容器,現(xiàn)在已經退出了

dockerps-a
CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
2ed9ebf05852ff4a8eb070e1"sleep3600"24minutesagoUp24minutesk8s_busybox_busybox_default_f72ab71a-5b3b-4ecf-940d-28a5c3b30683_2394
68a5b32c9fdbff4a8eb070e1"sleep3600"AboutanhouragoExited(0)24minutesagok8s_busybox_busybox_default_f72ab71a-5b3b-4ecf-940d-28a5c3b30683_2393

使用logs的時候讀的是當前容器那個文件,使用–previous的時候,讀的是上次退出的容器的日志文件,由于kubelet為pod保留了上次退出的容器。

我們手動編輯這兩個文件的內容,看kubelet是否讀的是這兩個文件

/busybox#cat2393.log
{"log":"lastcrashlogs
","stream":"stderr","time":"2022-11-05T0827.31523845Z"}

/busybox#cat2394.log
{"log":"nowpodlog
","stream":"stderr","time":"2022-11-05T0827.31523845Z"}

ubuntu@10-234-32-51:~$klogsbusybox--previous
lastcrashlogs
ubuntu@10-234-32-51:~$klogsbusybox
nowpodlog

由于是鏈接文件,那么可能實際是從別的地方讀的,或者說直接讀容器目錄下的,由于鏈接文件我們改了后容器目錄下的日志文件也跟著改了,我們直接創(chuàng)建兩個文件來做驗證:

ubuntu@10-234-32-51:~$kgetpod
NAMEREADYSTATUSRESTARTSAGE
busybox1/1Running239599d
nginx-deployment-6wlhd1/1Running079d
redis1/1Running049d

/busybox#ls
2394.log2395.log

/busybox#rm2394.log2395.log

我們刪除,然后自己創(chuàng)建,這時是regular file,而不是鏈接文件了:
/busybox#ls
2394.log2395.log

/busybox#stat2394.log
File:2394.log
Size:100Blocks:8IOBlock:4096regularfile
Device:fc02h/64514dInode:529965Links:1
Access:(0640/-rw-r-----)Uid:(0/root)Gid:(0/root)
Access:2023-01-311511.307170422+0800
Modify:2023-01-311507.711225229+0800
Change:2023-01-311507.711225229+0800
Birth:-

/busybox#stat2395.log
File:2395.log
Size:86Blocks:8IOBlock:4096regularfile
Device:fc02h/64514dInode:529967Links:1
Access:(0640/-rw-r-----)Uid:(0/root)Gid:(0/root)
Access:2023-01-311517.539989934+0800
Modify:2023-01-311514.348038586+0800
Change:2023-01-311514.352038525+0800
Birth:-

/busybox#cat2394.log
{"log":"previouslogscreatebymyself
","stream":"stderr","time":"2022-11-05T0827.31523845Z"}
/busybox#cat2395.log
{"log":"createbymyself
","stream":"stderr","time":"2022-11-05T0827.31523845Z"}

ubuntu@10-234-32-51:~$klogsbusybox
createbymyself
ubuntu@10-234-32-51:~$klogsbusybox--previous
previouslogscreatebymyself

得出結論:kubelet讀的是/var/log/pods/下的日志文件,–previous讀的也是/var/log/pods/下的日志文件,且專門有個鏈接文件來指向上一個退出容器的日志文件,以此來獲取容器崩潰前的日志。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • POD
    POD
    +關注

    關注

    0

    文章

    18

    瀏覽量

    6050

原文標題:如何快速查看 Kubernetes Pod 崩潰前的日志

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    阿里云容器Kubernetes監(jiān)控(二) - 使用Grafana展現(xiàn)Pod監(jiān)控數據

    kubernetes中承擔的責任遠不止監(jiān)控數據的采集,還包括控制臺的監(jiān)控接口、HPA的POD彈性伸縮等都依賴于Heapster的功能。簡介在kubernetes的監(jiān)控方案中
    發(fā)表于 05-10 15:28

    再次升級!阿里云Kubernetes日志解決方案

    服務器,獲取新的或已更新的配置并進行熱加載。Logtail根據配置信息采集各個容器(POD)上的標準輸出或日志文件。最終Logtail將處理、聚合好的數據發(fā)送到日志服務。部署方法阿里云Kube
    發(fā)表于 05-28 19:08

    從零開始入門 K8s| 詳解 Pod 及容器設計模式

    一、為什么需要 Pod容器的基本概念我們知道 PodKubernetes 項目里面一個非常重要的概念,也是非常重要的一個原子調度單位,但是為什么我們會需要這樣一個概念呢?在使用容器
    發(fā)表于 09-20 15:12

    崩潰日志快速解析方法

    iOS快速解析崩潰日志
    發(fā)表于 10-09 14:13

    Pod資源配置

    Kubernetes進階實戰(zhàn)》第四章《管理Pod資源對象》
    發(fā)表于 10-22 14:39

    Kubernetes平臺中的日志收集方案

    十、Kubernetes平臺中日志收集
    發(fā)表于 11-04 09:19

    如何多點出發(fā)快速查看網絡狀態(tài)

    如何多點出發(fā)快速查看網絡狀態(tài)     無論什么類型的網絡,運行時間長了,總有發(fā)生故障的時候;遇到網絡故障時,想辦法在最短時間內將
    發(fā)表于 04-14 14:02 ?2353次閱讀

    【工程師小貼士總匯】快速查看每個工程師都會碰上的困難

    【工程師小貼士總匯】快速查看每個工程師都會碰上的困難
    的頭像 發(fā)表于 07-12 16:17 ?2376次閱讀

    教你不用三方APP快速查看iPhone/iPad電池循環(huán)數

    不下三方APP:教你快速查看iPhone/iPad電池循環(huán)數,iphone,電池,ipad,app,電池容量,ios
    發(fā)表于 02-04 14:03 ?1.3w次閱讀

    深入研究Kubernetes調度

    “本文從 Pod 和節(jié)點的配置開始,介紹了 Kubernetes Scheduler 框架、擴展點、API 以及可能發(fā)生的與資源相關的瓶頸,并展示了性能調整設置,涵蓋了 Kubernetes 中調度
    的頭像 發(fā)表于 08-23 10:39 ?1448次閱讀

    Kubernetes組件pod核心原理

    1. 核心組件原理 —— pod 核心原理 1.1 pod 是什么 pod 也可以理解是一個容器,裝的是 docker 創(chuàng)建的容器,也就是用來封裝容器的一個容器; pod 是一個虛擬化
    的頭像 發(fā)表于 09-02 09:27 ?1866次閱讀

    Kubernetes中的Pod簡易理解

    PodKubernetes中非常重要的概念,也是Kubernetes管理的基本單位。正如其名,Pod像一個豌豆莢,可以容納多個container,擁有相同的IP地址。
    的頭像 發(fā)表于 02-15 10:44 ?1312次閱讀

    Kubernetes Pod如何獨立工作

    在學習 Kubernetes 網絡模型的過程中,了解各種網絡組件的作用以及如何交互非常重要。本文就介紹了各種網絡組件在 Kubernetes 集群中是如何交互的,以及如何幫助每個 Pod 都能獲取 IP 地址。
    的頭像 發(fā)表于 05-16 14:29 ?651次閱讀
    <b class='flag-5'>Kubernetes</b> <b class='flag-5'>Pod</b>如何獨立工作

    Kubernetes Pod如何獲取IP地址呢?

    Kubernetes 網絡模型的核心要求之一是每個 Pod 都擁有自己的 IP 地址并可以使用該 IP 地址進行通信。很多人剛開始使用 Kubernetes 時,還不清楚如何為每個 Pod
    的頭像 發(fā)表于 07-21 10:00 ?831次閱讀
    <b class='flag-5'>Kubernetes</b> <b class='flag-5'>Pod</b>如何獲取IP地址呢?

    redis容器內怎么查看redis日志

    redis是一款流行的開源內存數據庫,常用于緩存、消息隊列、任務管理等場景。在使用redis時,了解如何查看redis日志對于排查問題、監(jiān)控性能和分析應用程序行為非常重要。在本文中,我們將介紹在
    的頭像 發(fā)表于 12-05 10:10 ?3838次閱讀
    主站蜘蛛池模板: 亚洲天堂导航 | 国产精品bdsm在线调教 | 四虎永久在线观看免费网站网址 | 九月婷婷综合婷婷 | xxxx性欧美极品另类 | 国产精品女人在线观看 | 欧美人成在线观看 | 午夜痒痒网 | 天堂在线资源最新版 | 久热网 | 1024手机看片国产旧版你懂的 | 美女黄页免费 | 轻点灬大ji巴太大太深了 | 色偷偷综合 | 亚洲欧美网 | 日日夜夜2017| xxxx性xx另类| 国产日本特黄特色大片免费视频 | 日本天堂影院 | 高清一级做a爱免费视 | 热久久久久 | 国产综合成色在线视频 | www婷婷| 一区不卡在线观看 | 国产精品一区二区三区免费视频 | 亚洲国产成人久久午夜 | 性生大片一级毛片免费观看 | 114毛片免费观看网站 | 丁香5月婷婷| 中文字幕xxx | 成人啪啪免费视频 | 上课被同桌摸下面做羞羞 | 色香色香欲天天天影视综合网 | 在线三级播放 | 久久久久久久久综合 | 狠狠色噜噜狠狠狠狠五月婷 | 每日最新avhd101天天看新片 | 亚洲国产精品自在现线让你爽 | 亚洲伊人成人 | 精品福利在线视频 | 国产成人精品本亚洲 |