metrics-server
从 Kubernetes 1.8开始,资源使用指标,例如容器 CPU 和内存使用率,可通过 Metrics API 在 Kubernetes 中获得。此 API 不存储指标值,因此想要获取某个指定节点10分钟前的资源使用量是不可能的。
在此之前,kubernetes对容器的监控是通过hepater来完成的。之所以Metrics-server会替换掉hepater成为新的k8s 监控组件,在于其使得kubernetes在监控方面与其他功能保持了一致,不再像是一个割裂开的功能,比如风格统一的监控指标api,kubectl top命令等。
这里顺便提一下另外一个组件cadvisor,该监控组件本身并非kubernetes内置,但kubelete内置了部分cadvisor功能,因此kubelete可以获取每个节点的容器监控信息。
- all node metrics; type []NodeMetrics
/apis/metrics.k8s.io/v1beta1/nodes
- metrics for a specified node; type NodeMetrics
/apis/metrics.k8s.io/v1beta1/nodes/{
node}
- all pod metrics within namespace with support for all-namespaces; type []PodMetrics
/apis/metrics.k8s.io/v1beta1/namespaces/{
namespace}/pods
- metrics for a specified pod; type PodMetrics
/apis/metrics.k8s.io/v1beta1/namespaces/{
namespace}/pods/{
pod}
golang实现
- 获取pod资源监控信息(目前本人使用方式)
var podMetrics models.PodMetricsList
data, err := k8sClient.RESTClient().Get().AbsPath("apis/metrics.k8s.io/v1beta1/namespaces/my-namespace/pods").