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

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

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

[[394145]]

本文轉載自微信公眾號「運維開發故事」,作者 喬克 。轉載本文請聯系運維開發故事公眾號。

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

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

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

確定范圍

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

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

(2)節點的網絡組件有問題

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

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

分析日志

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

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

當然,很多時候不僅僅是分析它本身的問題,我們還會關注周邊的問題,比如基礎設施的CPU、內存、IO等情況,這樣進行綜合考慮來找出問題。

性能分析

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

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

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

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

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

pprof的常用方式

使用交互式命令

查看堆棧調用信息

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

查看 30 秒內的 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 秒內的執行路徑

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

互斥持有者的堆棧跟蹤

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

通過UI界面

UI分析工具使用起來相對比較麻煩,我們需要先導出文件,然后再使用go tool工具起服務進行分析。

比如我們導出kube-scheduler的堆棧信息。

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

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

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

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

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

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

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

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

注意:由于版本原因,有的版本默認開啟了pprof,有的版本則沒有,如果沒有開啟的,需要自行去開啟,參數基本都是profiling: true,具體的信息可以到官網進行查看[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工具啟動服務

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

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

分析kube-scheduler

(1)獲取CPU的信息

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

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

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

(3)在瀏覽器進行查看

分析kube-controller-manager

(1)獲取CPU的信息

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

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

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

(3)在瀏覽器進行查看

分析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工具啟動服務

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

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

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

文檔

[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/

 

責任編輯:武曉燕 來源: 運維開發故事
相關推薦

2015-08-24 09:26:18

Java內存問題見解

2021-07-30 20:59:21

MySQL內存.參數

2009-06-18 13:42:48

Hibernate s

2016-10-18 22:10:02

HTTP推送HTML

2017-05-23 14:33:46

簡歷求職前端開發

2009-06-04 16:28:43

EJB常見問題

2021-10-14 07:28:03

Kubernetes通用排查

2023-09-04 16:55:18

2017-05-10 14:49:52

Kotlin語言Java

2011-03-08 14:28:03

proftpdGentoo

2017-02-21 13:36:11

iosAPP性能

2012-06-15 09:41:40

Linux內核

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

數據分析

2009-06-12 10:25:42

Webservices

2022-01-16 08:04:44

集群部署canal

2010-05-24 18:22:36

jsp MySQL

2009-09-04 13:11:25

ASP.NET生成XM
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www.日日夜夜| 香蕉久久久 | 久久久久亚洲精品中文字幕 | 欧美a∨ | 伊人一二三 | 二区亚洲| 范冰冰一级做a爰片久久毛片 | av乱码| 夜夜草| 红桃视频一区二区三区免费 | www.日本在线 | 久久久天天 | 国产免费让你躁在线视频 | 欧美日韩亚洲一区 | 亚洲成人精品免费 | 欧美日韩在线精品 | 久久久久国产精品午夜一区 | 亚洲精品一区二区三区蜜桃久 | 欧美日韩电影一区二区 | 亚洲h视频 | 成人精品一区亚洲午夜久久久 | 亚洲精品一区二区三区中文字幕 | 国产精品激情在线 | 视频在线观看一区二区 | 日韩精品一区二区三区中文字幕 | 暖暖成人免费视频 | 亚洲网站在线播放 | 久久久久久免费精品一区二区三区 | a网站在线观看 | 国产亚洲网站 | av网站在线播放 | 日韩伦理一区二区 | 久久爱一区 | 一区二区三区在线 | 欧 | 亚洲毛片在线 | 久久一区精品 | 久久夜夜| 国产免费一区二区三区免费视频 | 午夜精品一区二区三区在线视 | 国产成人精品a视频 | 欧美视频二区 |