C. 部署 metrics-server 插件

    从 Kubernetes 1.12 开始,kubernetes 的安装脚本移除了 Heapster,从 1.13 开始完全移除了对 Heapster 的支持,Heapster 不再被维护。

    替代方案如下:

    1. 用于支持自动扩缩容的 CPU/memory HPA metrics:metrics-server;
    2. 通用的监控方案:使用第三方可以获取 Prometheus 格式监控指标的监控系统,如 Prometheus Operator;

    没有安装 metrics-server 或 heapster 时,kubeclt top 命令将不能使用:

    安装 metrics-server

    从 github clone 源码:

    1. $ git clone https://github.com/kubernetes-incubator/metrics-server.git
    2. $ cd metrics-server/deploy/1.8+/
    • 使用微软的 grc 镜像;
    • —metric-resolution=30s:从 kubelet 采集数据的周期;
    • —kubelet-preferred-address-types:优先使用 InternalIP 来访问 kubelet,这样可以避免节点名称没有 DNS 解析记录时,通过节点名称调用节点 kubelet API 失败的情况(未配置时默认的情况);

    部署 metrics-server:

    1. $ cd /opt/k8s/work/metrics-server/deploy/1.8+/
    2. $ kubectl create -f .

    查看 metrics-server 输出的 metrics

    1. kubectl get --raw https://172.27.138.251:6443/apis/metrics.k8s.io/v1beta1/pods | jq .
    2. kubectl get --raw https://172.27.138.251:6443/apis/metrics.k8s.io/v1beta1/nodes/<node-name> | jq .
    • 替换 为实际内容;
    • /apis/metrics.k8s.io/v1beta1/nodes 和 /apis/metrics.k8s.io/v1beta1/pods 返回的 usage 包含 CPU 和 Memory;

    kubectl top 命令从 metrics-server 获取集群节点基本的指标信息:

    参考

    1. metrics-server RBAC:https://github.com/kubernetes-incubator/metrics-server/issues/40
    2. metrics-server 参数:
    3. metrics-server 的 APIs 文档