更新时间:2023-07-07 GMT+08:00

Metrics Server安装

跨集群HPA基于社区Metric API,获取集群中资源使用情况。使用跨集群HPA前提是集群安装了Metrics Server,Metrics Server通过kubelet summary API获取数据,实现Metrics API。 Metrics API只可以查询当前数据,不提供历史数据。

前提条件

  • 集群版本必须大于1.13。
  • 安装Metrics Server的虚拟机必须可以连接互联网,并且能用Kubectl操作集群。

Metric Server安装

  1. 需要安装Metrics Server的虚拟机开启API聚合层。需要在kube-APIServer中添加启动参数,增加以下配置,开启API聚合层。

    CCE 1.11版本集群需要提交工单开启API聚合层,CCE 1.13之后的版本默认开启了API聚合层。

     --requestheader-client-ca-file= 
     --proxy-client-cert-file=
     --proxy-client-key-file=
     --requestheader-allowed-names=aggregator
     --requestheader-extra-headers-prefix=X-Remote-Extra-
     --requestheader-group-headers=X-Remote-Group
     --requestheader-username-headers=X-Remote-User

    参数说明:

    • --requestheader-client-ca-file:根证书绑定包用于在信任--requestheader-username-headers指定的标头中的用户名前,在传入请求上验证客户证书。
    • --proxy-client-cert-file:用于证明aggregator或kube-apiserver在请求期间发出呼叫的身份的客户端证书。
    • --proxy-client-key-file:用于证明聚合器或kube-apiserver的身份的客户端证书的私钥,当它必须在请求期间调用时使用。包括将请求代理给用户api-server和调用webhook admission插件。
    • --requestheader-allowed-names:客户端证书常用名称列表,允许在--requestheader-username-headers指定的标头中提供用户名,如果为空,则允许在--requestheader-client-ca-file文件中通过当局验证的任何客户端证书。
    • --requestheader-extra-headers-prefix:要检查的请求标头前缀列表。
    • --requestheader-group-headers:要检查组的请求标头列表。
    • --requestheader-username-headers:要检查用户名的请求标头列表。

    如果Master上没有运行kube-proxy,还需要配置

    --enable-aggregator-routing=true

  2. 部署metrics server。

    wget https://github.com/kubernetes-incubator/metrics-server/archive/v0.3.2.tar.gz
    tar zxvf v0.3.2.tar.gz
    cd metrics-server-0.3.2
    kubectl create -f deploy/1.8+/

  3. 查看pod是否安装成功,保证pod启动。

    kubectl get pods -nkube-system| grep metric

  4. 如果步骤3中pod未启动,可以执行

    kubectl logs {pod-name} -nkube-system

    查询日志,若日志中出现如图1报错,可以执行

    kubectl edit deployment metrics-server -nkube-system

    添加启动参数“--kubelet-insecure-tls”图2,或者配置正确的证书(需要用户提供k8s集群的CA证书,配置给metrics-server)。

    图1 报错日志
    图2 添加启动参数

  5. 查看是否正确取到数据。

    kubectl get --raw /apis/metrics.k8s.io/v1beta1/nodes

    有返回值则说明安装成功。