Как профилировать службу, работающую в модуле kubernetes?

avatar
Dentiny
9 августа 2021 в 00:59
136
1
0

Я хочу профилировать службу, развернутую в кластере k8s, с помощью графа perf/flame, но не могу установить ее в модуле. Моя программа написана на C++, поэтому, к сожалению, я не могу ее профилировать с помощью плагина kubectl flame.

root@mypod:/app# perf
WARNING: perf not found for kernel 5.4.0-1044

  You may need to install the following packages for this specific kernel:
    linux-tools-5.4.0-1044-gke
    linux-cloud-tools-5.4.0-1044-gke

  You may also want to install one of the following packages to keep up to date:
    linux-tools-gke
    linux-cloud-tools-gke
root@mypod:/app# apt-get install -y linux-tools-5.4.0-1044-gke
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package linux-tools-5.4.0-1044-gke
E: Couldn't find any package by glob 'linux-tools-5.4.0-1044-gke'
E: Couldn't find any package by regex 'linux-tools-5.4.0-1044-gke'
root@mypod:/app# 
root@mypod:/app# apt-get install -y linux-cloud-tools-5.4.0-1044-gke
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package linux-cloud-tools-5.4.0-1044-gke
E: Couldn't find any package by glob 'linux-cloud-tools-5.4.0-1044-gke'
E: Couldn't find any package by regex 'linux-cloud-tools-5.4.0-1044-gke'

Или есть другой способ сделать это?

Источник

Ответы (1)

avatar
coderanger
9 августа 2021 в 01:12
0

Двумя наиболее распространенными инструментами трассировки без изменений являются bpftrace и systemtap. Не знаю, будет ли работать какой-либо из них на COS GKE, вам определенно нужно будет сделать это с реальной виртуальной машины внутри песочницы инструментов, а не внутри модуля. Или можно использовать gprof, но для этого требуется скомпилировать исполняемый файл с активной поддержкой профилирования.