寫在前面
在新版的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文件原有的內容如下所示。
1 --- 2 apiVersion: v1 3 kind: ServiceAccount 4 metadata: 5 name: metrics-server 6 namespace: kube-system 7 --- 8 apiVersion: apps/v1 9 kind: Deployment 10 metadata: 11 name: metrics-server 12 namespace: kube-system 13 labels: 14 k8s-app: metrics-server 15 spec: 16 selector: 17 matchLabels: 18 k8s-app: metrics-server 19 template: 20 metadata: 21 name: metrics-server 22 labels: 23 k8s-app: metrics-server 24 spec: 25 serviceAccountName: metrics-server 26 volumes: 27 # mount in tmp so we can safely use from-scratch images and/or read-only containers 28 - name: tmp-dir 29 emptyDir: {} 30 containers: 31 - name: metrics-server 32 image: k8s.gcr.io/metrics-server-amd64:v0.3.6 33 imagePullPolicy: Always 34 volumeMounts: 35 - name: tmp-dir 36 mountPath: /tmp
修改后的文件內容如下所示。
1 --- 2 apiVersion: v1 3 kind: ServiceAccount 4 metadata: 5 name: metrics-server 6 namespace: kube-system 7 --- 8 apiVersion: apps/v1 9 kind: Deployment 10 metadata: 11 name: metrics-server 12 namespace: kube-system 13 labels: 14 k8s-app: metrics-server 15 spec: 16 selector: 17 matchLabels: 18 k8s-app: metrics-server 19 template: 20 metadata: 21 name: metrics-server 22 labels: 23 k8s-app: metrics-server 24 spec: 25 serviceAccountName: metrics-server 26 volumes: 27 # mount in tmp so we can safely use from-scratch images and/or read-only containers 28 - name: tmp-dir 29 emptyDir: {} 30 containers: 31 - name: metrics-server 32 # 修改image 和 imagePullPolicy 33 image: mirrorgooglecontainers/metrics-server-amd64:v0.3.6 34 imagePullPolicy: IfNotPresent 35 # 新增command配置 36 command: 37 - /metrics-server 38 - --kubelet-insecure-tls 39 - --kubelet-preferred-address-types=InternalDNS,InternalIP,ExternalDNS,ExternalIP,Hostname 40 volumeMounts: 41 - name: tmp-dir 42 mountPath: /tmp 43 # 新增resources配置 44 resources: 45 limits: 46 cpu: 300m 47 memory: 200Mi 48 requests: 49 cpu: 200m 50 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信息,如下所示。
1 [root@binghe101 ~]# kubectl top node 2 NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% 3 binghe101 141m 7% 1113Mi 65% 4 binghe102 62m 3% 549Mi 32% 5 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時,少走彎路。