
前段时间二进制安装了个集群,没有安装metrics-server插件,此文档用于记录metrics-server的部署过程。
环境:
k8s版本:1.17.5、部署方式:二进制
简介
从v1.8开始,Kubernetes集群资源监控可以通过Metrics API的形式获取,在1.11就开始逐渐废弃heapster了,采用metrics-server来代替,metrics-server是集群的核心监控数据的聚合器,它是kubelet公开的Summary API中采集指标信息,Metrics-server是扩展的APIServer。
前期准备
生成证书
此步骤在ca证书的目录下进行
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
  | 
$ vim aggregator-proxy-csr.json
{
  "CN": "aggregator",
  "hosts": [],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "QingDao",
      "L": "QingDao",
      "O": "k8s",
      "OU": "System"
    }
  ]
}
  | 
 
生成证书
1
  | 
cfssl gencert -ca=ca.pem   -ca-key=ca-key.pem   -config=ca-config.json   -profile=kubernetes aggregator-proxy-csr.json | cfssljson -bare aggregator
  | 
 
开启聚合层
1
2
3
4
5
6
7
8
9
  | 
  # 具体配置
  --requestheader-client-ca-file=/etc/kubernetes/ssl/ca.pem \
  --requestheader-allowed-names= \
  --requestheader-extra-headers-prefix=X-Remote-Extra- \
  --requestheader-group-headers=X-Remote-Group \
  --requestheader-username-headers=X-Remote-User \
  --proxy-client-cert-file=/etc/kubernetes/ssl/aggregator.pem \
  --proxy-client-key-file=/etc/kubernetes/ssl/aggregator-key.pem \
  --enable-aggregator-routing=true \
  | 
 
1
2
3
4
5
6
7
8
  | 
--requestheader-client-ca-file:ca 证书
--requestheader-allowed-names:  客户端证书常用名称列表。允许在--requestheader-username-headers指定的标头中提供用户名,如果为空,则允许在--requestheader-client-ca文件中通过当局验证的任何客户端证书
 --requestheader-extra-headers-prefix:  要检查的请求标头前缀列表
 --requestheader-group-headers:  要检查组的请求标头列表
--requestheader-username-headers:  要检查用户名的请求标头列表
--proxy-client-cert-file:  用于证明aggregator或kube-apiserver在请求期间发出呼叫的身份的客户端证书
--proxy-client-key-file:  用于证明聚合器或kube-apiserver的身份的客户端证书的私钥,当它必须在请求期间调用时使用。包括将请求代理给用户api-server和调用webhook admission插件
--enable-aggregator-routing=true:  打开aggregator路由请求到endpoints IP,而不是集群IP
  | 
 
 
1
2
  | 
$ systemctl daemon-reload 
$ systemctl restart kube-apiserver
  | 
 
安装metrics-server
由于需要更改yaml文件内容,所以没用官方github上直接kubectl apply -f方式
1
  | 
$ wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml
  | 
 
 
1
2
3
4
5
6
7
8
9
  | 
$ vim components.yaml
......
        args:
          - --cert-dir=/tmp
          - --secure-port=4443
          #添加以下两行
          - --kubelet-insecure-tls #跳过证书校验
          - --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,externalDNS  #解析到对应ip
......
  | 
 
 
1
  | 
$ kubectl apply -f components.yaml
  | 
 
验证
1
2
3
4
  | 
$ kubectl get pods -n kube-system |grep metrics
metrics-server-5799d89f84-dfjgx   1/1     Running   0          3h
$ kubectl get apiservice | grep metrics
v1beta1.metrics.k8s.io                 kube-system/metrics-server   True        3h
  | 
 
 
1
2
3
4
  | 
$ kubectl top nodes
NAME            CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
172.16.77.153   20m          0%     2568Mi          16%
172.16.77.167   75m          0%     8298Mi          52%
  | 
 
参考
官方文档
https://blog.csdn.net/ameng734086045/article/details/88245385
     
    
  
    Author
    dylan
  
  
    LastMod
    
        2020-07-13
        
    
  
  
  
    License
    如需转载请注明文章作者和出处。谢谢!