【K8S】K8S部署Metrics-Server服務
阿新 • • 發佈:2020-09-09
寫在前面
在新版的K8S中,系統資源的採集均使用Metrics-Server服務,可以通過Metrics-Server服務採集節點和Pod的記憶體、磁碟、CPU和網路的使用率等資訊。
讀者可參考《【K8S】基於單Master節點安裝K8S叢集》一文搭建單Master節點的K8S叢集。
說的具體點:新版K8S資源使用情況的度量(如容器的 CPU 和記憶體使用)可以通過 Metrics API 獲取。
注意:
- Metrics API 只可以查詢當前的度量資料,並不儲存歷史資料
- Metrics API URI 為
/apis/metrics.k8s.io/
,在k8s.io/metrics維護 - 必須部署 metrics-server 才能使用該 API,metrics-server 通過呼叫 Kubelet Summary API 獲取資料
部署Metrics-Server服務
1.下載並解壓Metrics-Server
https://github.com/kubernetes-sigs/metrics-server/archive/v0.3.6.tar.gz
tar -zxvf v0.3.6.tar.gz
2.修改Metrics-Server配置檔案
cd metrics-server-0.3.6/deploy/1.8+/
vim metrics-server-deployment.yaml
vim metrics-server-deployment.yaml檔案原有的內容如下所示。
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: metrics-server
namespace: kube-system
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: metrics-server
namespace: kube-system
labels:
k8s-app: metrics-server
spec:
selector:
matchLabels:
k8s-app: metrics-server
template:
metadata:
name: metrics-server
labels:
k8s-app: metrics-server
spec:
serviceAccountName: metrics-server
volumes:
# mount in tmp so we can safely use from-scratch images and/or read-only containers
- name: tmp-dir
emptyDir: {}
containers:
- name: metrics-server
image: k8s.gcr.io/metrics-server-amd64:v0.3.6
imagePullPolicy: Always
volumeMounts:
- name: tmp-dir
mountPath: /tmp
修改後的檔案內容如下所示。
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: metrics-server
namespace: kube-system
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: metrics-server
namespace: kube-system
labels:
k8s-app: metrics-server
spec:
selector:
matchLabels:
k8s-app: metrics-server
template:
metadata:
name: metrics-server
labels:
k8s-app: metrics-server
spec:
serviceAccountName: metrics-server
volumes:
# mount in tmp so we can safely use from-scratch images and/or read-only containers
- name: tmp-dir
emptyDir: {}
containers:
- name: metrics-server
# 修改image 和 imagePullPolicy
image: mirrorgooglecontainers/metrics-server-amd64:v0.3.6
imagePullPolicy: IfNotPresent
# 新增command配置
command:
- /metrics-server
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalDNS,InternalIP,ExternalDNS,ExternalIP,Hostname
volumeMounts:
- name: tmp-dir
mountPath: /tmp
# 新增resources配置
resources:
limits:
cpu: 300m
memory: 200Mi
requests:
cpu: 200m
memory: 100Mi
修改完metrics-server-deployment.yaml檔案後儲存退出。
3.安裝Metrics-Server
執行如下命令安裝Metrics-Server。
kubectl apply -f metrics-server-0.3.6/deploy/1.8+/
4.檢視node資訊
安裝完Metrics-Server之後,檢視node資訊,如下所示。
[root@binghe101 ~]# kubectl top node
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
binghe101 141m 7% 1113Mi 65%
binghe102 62m 3% 549Mi 32%
binghe103 100m 5% 832Mi 48%
可以看到,使用Metrics-Server收集到節點資訊,說明Metrics-Server安裝成功。
注意事項
下載Metrics-Server安裝檔案之後,一定要修改metrics-server-deployment.yaml檔案,在使用kubectl top node
命令檢視node資訊時,會報如下錯誤。
error: metrics not available yet
寫在最後
如果覺得文章對你有點幫助,請微信搜尋並關注「 冰河技術 」微信公眾號,跟冰河學習各種程式設計技術。
最後附上K8S最全知識圖譜連結:
祝大家在學習K8S時,少走彎路。