成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Kubernetes組件問題排查的一些方法

云計算
Kubernetes的基礎(chǔ)組件就像一棟房子的地基,它們的重要性不言而喻。作為Kubernetes集群的維護(hù)者,經(jīng)常會遇到組件的問題,那平時是怎么去定位解決的呢?

[[394145]]

本文轉(zhuǎn)載自微信公眾號「運(yùn)維開發(fā)故事」,作者 喬克 。轉(zhuǎn)載本文請聯(lián)系運(yùn)維開發(fā)故事公眾號。

Kubernetes的基礎(chǔ)組件就像一棟房子的地基,它們的重要性不言而喻。作為Kubernetes集群的維護(hù)者,經(jīng)常會遇到組件的問題,那平時是怎么去定位解決的呢?

這里簡要分析一下我的排查思路。

  • 通過集群的狀態(tài),找到故障的節(jié)點或者組件
  • 分析組件的日志
  • 使用pprof分析組件的具體性能

確定范圍

Kubernetes的基礎(chǔ)組件不多,而且部署也非常簡單,所以在定義范圍的時候還是很容易的,比如我們在使用kubectl get nodes的時候,如果某個節(jié)點的狀態(tài)是NotReady,我們腦海中是不是會出現(xiàn)兩種可能?

(1)節(jié)點的kubelet組件有問題

(2)節(jié)點的網(wǎng)絡(luò)組件有問題

這樣一來,大體方向已經(jīng)確定了,然后就是做排除法了。

這里為何說是排除法?因為在解決問題的途中,我們通常會采用先假設(shè)再驗證的方式進(jìn)行,先把所以可能的因素列出來,然后一個一個的去驗證去排除,直到解決問題。

分析日志

日志分析是故障排查最直接的方式,大部分問題都能從日志里體現(xiàn)出來,Kubernetes的組件日志查看方式通常有兩種:

  • 通過systemd啟動的服務(wù),使用journalctl -l -u xxxx
  • 使用靜態(tài)pod啟動的服務(wù),使用kubectl logs -n kube-system $PODNAME --tail 100

當(dāng)然,很多時候不僅僅是分析它本身的問題,我們還會關(guān)注周邊的問題,比如基礎(chǔ)設(shè)施的CPU、內(nèi)存、IO等情況,這樣進(jìn)行綜合考慮來找出問題。

性能分析

為什么把性能分析放到最后呢?

對于大部分人來說,并不擅長,也不喜歡分析組件的性能。第一是時間比較長,第二是要對各個性能指標(biāo)有一定的了解,第三是學(xué)習(xí)成本比較大。

眾所周知,Kubernetes的版本迭代比較快,基本一年會發(fā)2-3個版本,如此快的迭代速度,不排除一些版本中存在BUG,存在一些性能問題。所以在實在沒招的情況下,可以嘗試對其組件的性能進(jìn)行分析。

Kubernetes是使用Golang開發(fā),而Golang的pprof是性能分析的利器,提供交互式界面和UI圖形化,比較直觀,可以很方便的找出問題。除此之外,還可以使用go-torch將profile數(shù)據(jù)生成火焰圖,這樣會更直觀。

Kubernetes的組件都可以使用pprof進(jìn)行性能分析,界面在host:port/debug/pprof/。

pprof的常用方式

使用交互式命令

查看堆棧調(diào)用信息

  1. go tool pprof http://localhost:8001/debug/pprof/heap 

查看 30 秒內(nèi)的 CPU 信息

  1. go tool pprof http://localhost:8001/debug/pprof/profile?seconds=30 

查看 goroutine 阻塞

  1. go tool pprof http://localhost:8001/debug/pprof/block 

收集 5 秒內(nèi)的執(zhí)行路徑

  1. go tool pprof http://localhost:8001/debug/pprof/trace?seconds=5 

互斥持有者的堆棧跟蹤

  1. go tool pprof http://localhost:8001/debug/pprof/mutex 

通過UI界面

UI分析工具使用起來相對比較麻煩,我們需要先導(dǎo)出文件,然后再使用go tool工具起服務(wù)進(jìn)行分析。

比如我們導(dǎo)出kube-scheduler的堆棧信息。

  1. curl -sK -v http://localhost:10251/debug/pprof/heap > heap.out 

然后使用go tool工具起一個服務(wù),如下:

  1. go tool pprof -http=0.0.0.0:8989 heap.out 

然后就可以在瀏覽器上看到具體的堆棧信息圖了。

注意,這里需要在服務(wù)端安裝graphviz組件,各種操作系統(tǒng)的安裝方式見[3]。

UI界面主要的菜單以及其功能簡要介紹如下:

  • VIEW:查看模式
    • Top:從高到底排序查看
    • Graph:默認(rèn)的模式,以關(guān)系圖形式查看
    • Flame Graph:以火焰圖形式查看
    • Peek:排序查看,展示的信息更多
    • Source:排序查看,帶源碼標(biāo)注
    • Disassemble:現(xiàn)實所有總量
  • SAMPLE:為VIEW提供查看模式
    • alloc_objects:已分配的對象總量(不管是否已釋放
    • alloc_space:已分配的內(nèi)存總量(不管是否已釋放)
    • inuse_objects:已分配但尚未釋放的對象數(shù)量
    • inuse_sapce:已分配但尚未釋放的內(nèi)存數(shù)量
    • REFINE:提供篩選能力

上面簡單介紹了pprof的基本使用方法,下面就Kubernetes的各個組件進(jìn)行簡單的分析,這里只就CPU信息進(jìn) 行獲取以及展示。

注意:由于版本原因,有的版本默認(rèn)開啟了pprof,有的版本則沒有,如果沒有開啟的,需要自行去開啟,參數(shù)基本都是profiling: true,具體的信息可以到官網(wǎng)進(jìn)行查看[4]。

分析kube-apiserver

(1)使用kubectl proxy啟動一個代理

  1. kubectl proxy 

(2)另起一個終端,獲取CPU信息

  1. curl -sK -v http://localhost:8001/debug/pprof/profile >apiserver-cpu.out 

(3)使用go tool工具啟動服務(wù)

  1. go tool pprof -http=0.0.0.0:8989 apiserver-cpu.out 

(4)在瀏覽器上進(jìn)行查看

分析kube-scheduler

(1)獲取CPU的信息

  1. curl -sK -v  http://localhost:10251/debug/pprof/profile >scheduler-cpu.out 

(2)使用go tool工具啟動服務(wù)

  1. go tool pprof -http=0.0.0.0:8989 scheduler-cpu.out 

(3)在瀏覽器進(jìn)行查看

分析kube-controller-manager

(1)獲取CPU的信息

  1. curl -sK -v  http://localhost:10252/debug/pprof/profile >controller-cpu.out 

(2)使用go tool工具啟動服務(wù)

  1. go tool pprof -http=0.0.0.0:8989 controller-cpu.out 

(3)在瀏覽器進(jìn)行查看

分析kubelet

(1)使用kubectl proxy啟動一個代理

  1. kubectl proxy 

(2)另起一個終端,獲取CPU信息

  1. curl -sK -v http://127.0.0.1:8001/api/v1/nodes/k8s-node04-138/proxy/debug/pprof/profile >kubelet-cpu.out 

(3)使用go tool工具啟動服務(wù)

  1. go tool pprof -http=0.0.0.0:8989 kubelet-cpu.out 

(4)在瀏覽器上進(jìn)行查看

能夠抓到具體的性能數(shù)據(jù)才是第一步,后續(xù)的具體分析才會幫助我們找到問題。

文檔

[1] https://github.com/google/pprof

[2] https://github.com/uber-archive/go-torch

[3] http://www.graphviz.org/download/#linux

[4] https://kubernetes.io/zh/docs/reference/command-line-tools-reference/kube-apiserver/

 

責(zé)任編輯:武曉燕 來源: 運(yùn)維開發(fā)故事
相關(guān)推薦

2021-07-30 20:59:21

MySQL內(nèi)存.參數(shù)

2015-08-24 09:26:18

Java內(nèi)存問題見解

2009-06-18 13:42:48

Hibernate s

2016-10-18 22:10:02

HTTP推送HTML

2017-05-23 14:33:46

簡歷求職前端開發(fā)

2009-06-04 16:28:43

EJB常見問題

2023-09-04 16:55:18

2017-05-10 14:49:52

Kotlin語言Java

2021-10-14 07:28:03

Kubernetes通用排查

2011-03-08 14:28:03

proftpdGentoo

2017-02-21 13:36:11

iosAPP性能

2012-06-15 09:41:40

Linux內(nèi)核

2018-05-17 14:52:11

Javascripthtmlcss

2009-11-25 09:23:47

PHP引用&符號

2018-06-12 15:39:41

容器部署云平臺

2017-04-13 12:59:43

數(shù)據(jù)分析

2009-06-12 10:25:42

Webservices

2022-01-16 08:04:44

集群部署canal

2021-10-26 13:55:53

搞定系統(tǒng)設(shè)計

2009-09-04 13:11:25

ASP.NET生成XM
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: wwwxxx国产| 亚洲高清成人在线 | 日本不卡免费新一二三区 | 99视频在线免费观看 | 99只有精品 | 成人精品国产 | 91久久精品国产91久久性色tv | 国产精品亚洲视频 | 91精品久久久久久久久中文字幕 | 91久久精品一区二区二区 | 成人蜜桃av | 国产区在线观看 | 超碰人人91 | 亚洲欧美日韩一区 | 日韩国产欧美 | 992tv人人草 久久精品超碰 | 四虎影院在线观看免费视频 | 国产乱码精品一区二区三区五月婷 | 99精品网站 | 国产精品久久久久久久久久免费看 | 日本在线免费看最新的电影 | 久久久网 | 殴美黄色录像 | 在线观看av网站永久 | 欧美精品首页 | 日本久久一区二区三区 | 日本理论片好看理论片 | 精品一区二区三区在线播放 | 91精品国产综合久久小仙女图片 | 男女羞羞视频在线 | 黄色一级免费看 | 免费三级av | 亚洲综合五月天婷婷 | 午夜精品久久久久久 | 日韩精品一区二区三区视频播放 | 精品欧美一区二区三区久久久 | 综合久久网 | 一区二区三区亚洲 | 韩日在线视频 | av在线二区 | 亚洲国产精品久久久久婷婷老年 |