距离上一次更新该文章已经过了 550 天,文章所描述的內容可能已经发生变化,请留意。
编辑~/.bashrc
, 粘贴以下函数,并执行source ~/.bashrc
使其生效, 使用的时候执行函数podinfo $pid
通过pid 获取pod name
shell
1 | podinfo() { |
通过pid获取pod id
shell
1 | podUid() { |
通过pod name获取pod 详细信息
shell
1 | podAll() { |
Kubernetes 中的很多组件都是通过 HTTPS
协议来暴露指标,比如 kubelet
,那么如何使用 API 来访问这些指标呢?
先选取一个容器,比如 prometheus
,找到它的 PID:
javascript
1 | $ ps -ef|grep "/bin/prometheus" |
根据 PID 找到 Pod UID:
javascript
1 | $ cat /proc/14338/mountinfo | grep "etc-hosts" | awk -F / {'print $6'} |
根据 Pod UID 找到 Service Account
的 token 挂载目录:
javascript
1 | $ ll /var/lib/kubelet/pods/8e018a8e-4aaa-4ac6-986a-1a5133a4bcf1/volumes/kubernetes.io~secret/prometheus-k8s-token-p7bgb/ |
获取 token 信息:
javascript
1 | $ export TOKEN=$(cat /var/lib/kubelet/pods/8e018a8e-4aaa-4ac6-986a-1a5133a4bcf1/volumes/kubernetes.io~secret/prometheus-k8s-token-p7bgb/token) |
通过 curl 直接访问指标:
javascript
1 | $ curl -s -H "Authorization: Bearer $TOKEN" --cacert /var/lib/kubelet/pods/8e018a8e-4aaa-4ac6-986a-1a5133a4bcf1/volumes/kubernetes.io~secret/prometheus-k8s-token-p7bgb/ca.crt --insecure https://127.0.0.1:10250/metrics/cadvisor |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 小五的个人杂货铺!