前段时间二进制安装了个集群,没有安装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
如需转载请注明文章作者和出处。谢谢!