Metrics-server插件安装配置
1、創建 metrics-server 使用的證書
vim metrics-server-csr.json{"CN": "aggregator","hosts": [],"key": {"algo": "rsa","size": 2048},"names": [{"C": "CN","ST": "BeiJing","L": "BeiJing","O": "k8s","OU": "System"}] } cfssl gencert -ca=/etc/kubernetes/ssl/ca.pem \-ca-key=/etc/kubernetes/ssl/ca-key.pem \ -config=/opt/ssl/config.json \-profile=kubernetes metrics-server-csr.json | cfssljson -bare metrics-server將生成的證書拷貝到所有node和master節點
cp metrics-server*.pem /etc/kubernetess/ssl/
scp metrics-server*.pem? 192.168.1.8:/etc/kubernetess/ssl/
2、修改 kubernetes 控制平面組件的配置以支持 metrics-server
kube-apiserver
添加如下配置參數:
--requestheader-client-ca-file=/etc/kubernetes/ssl/ca.pem \--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/metrics-server.pem \--proxy-client-key-file=/etc/kubernetes/ssl/metrics-server-key.pem \--runtime-config=api/all=true \?
- --requestheader-XXX、--proxy-client-XXX 是 kube-apiserver 的 aggregator layer 相關的配置參數,metrics-server & HPA 需要使用;
- --requestheader-client-ca-file:用于簽名 --proxy-client-cert-file 和 --proxy-client-key-file 指定的證書;在啟用了 metric aggregator 時使用;
- 如果 kube-apiserver 機器沒有運行 kube-proxy,則還需要添加 --enable-aggregator-routing=true 參數
?
注意:requestheader-client-ca-file 指定的 CA 證書,必須具有 client auth and server auth
?
kube-controller-manager
添加如下配置參數:
--horizontal-pod-autoscaler-use-rest-clients=true用于配置 HPA 控制器使用 REST 客戶端獲取 metrics 數據
?
3、修改插件配置文件
# git clone https://github.com/kubernetes-incubator/metrics-server
# cd metrics-server/deploy/1.8+
# vim metrics-server-deployment.yaml
apiVersion: v1 kind: ServiceAccount metadata: name: metrics-servernamespace: kube-system --- apiVersion: extensions/v1beta1 kind: Deployment metadata:name: metrics-servernamespace: kube-systemlabels:k8s-app: metrics-server spec:selector:matchLabels:k8s-app: metrics-servertemplate:metadata:name: metrics-serverlabels:k8s-app: metrics-serverspec:serviceAccountName: metrics-servervolumes:# mount in tmp so we can safely use from-scratch images and/or read-only containers- name: tmp-diremptyDir: {}containers:- name: metrics-serverimage: mirrorgooglecontainers/metrics-server-amd64:v0.3.1imagePullPolicy: Always command:- /metrics-server- --kubelet-insecure-tls- --kubelet-preferred-address-types=InternalIPvolumeMounts:- name: tmp-dirmountPath: /tmp注釋:1、metrics默認使用hostname來通信的,而且coredns中已經添加了宿主機的/etc/resolv.conf,
? ? ? ? ? ? ?所以只需要添加一個內部的dns服務器或者在pod的deployment的yaml手動添加主機解析記錄,再或者改變參數為InternalIP,直接用ip來連接
? ? ? ? ?2、kubelet-insecure-tls: 跳過驗證kubelet的ca證書,暫時開啟。(不推薦用于生產環境)
?
4、修改完成之后開始部署
# kubectl apply .
# kubectl get pods -n kube-system | grep metrics
# kubectl get apiservice v1beta1.metrics.k8s.io -o yaml
?
5、驗證是否成功
# kubectl top nodes
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% es-60 377m 18% 5915Mi 76% es-61 267m 13% 5479Mi 70%注意:?內存單位 Mi=1024*1024字節? M=1000*1000字節
? ? ? ? ? CPU單位 1核=1000m 即250m=1/4核
#?kubectl top pod --all-namespaces
?
?
參考資料:?https://github.com/kubernetes-incubator/metrics-server/issues/97
?
總結
以上是生活随笔為你收集整理的Metrics-server插件安装配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 复习Javascript专题(二):闭包
- 下一篇: Java每天10道面试题,跟我走,off