1. 首页
  2. 技术知识

kubernetes(k8s)安装metrics-server实现资源使用情况监控方式详解

1. Metrics Server 与 kubenetes版本

Metrics Server    Metrics API group/version    Supported Kubernetes version

0.6x    metrics.k8s.io/v1beta1    *1.19+

0.5x    metrics.k8s.io/v1beta1    *1.8+

0.4x    metrics.k8s.io/v1beta1    *1.8+

0.3x    metrics.k8s.io/v1beta1    1.8-1.21


2. Metrics Server 下载方式

github:https://github.com/kubernetes-sigs/metrics-server


3. k8s集群安装部署metrics

本次安装的是metrics0.5.0版本

下载地址:https://github.com/kubernetes-sigs/metrics-server/releases

docker镜像地址:docker pull cnskylee/metrics-server:v0.5.0

4. 创建components-v0.5.0.yaml文件,并将下面的脚本copy到文件中

  1. apiVersion: v1
  2. kind: ServiceAccount
  3. metadata:
  4.   labels:
  5.     k8s-APP: metrics-server
  6.   name: metrics-server
  7.   namespace: kube-system
  8. apiVersion: rbac.authorization.k8s.io/v1
  9. kind: ClusterRole
  10. metadata:
  11.   labels:
  12.     k8s-app: metrics-server
  13.     rbac.authorization.k8s.io/aggregate-to-admin: “true”
  14.     rbac.authorization.k8s.io/aggregate-to-edit: “true”
  15.     rbac.authorization.k8s.io/aggregate-to-view: “true”
  16.   name: system:aggregated-metrics-reader
  17. rules:
  18. – apiGroups:
  19.   – metrics.k8s.io
  20.   resources:
  21.   – pods
  22.   – nodes
  23.   verbs:
  24.   – get
  25.   – list
  26.   – watch
  27. apiVersion: rbac.authorization.k8s.io/v1
  28. kind: ClusterRole
  29. metadata:
  30.   labels:
  31.     k8s-app: metrics-server
  32.   name: system:metrics-server
  33. rules:
  34. – apiGroups:
  35.   – “”
  36.   resources:
  37.   – pods
  38.   – nodes
  39.   – nodes/stats
  40.   – namespaces
  41.   – configmaps
  42.   verbs:
  43.   – get
  44.   – list
  45.   – watch
  46. apiVersion: rbac.authorization.k8s.io/v1
  47. kind: RoleBinding
  48. metadata:
  49.   labels:
  50.     k8s-app: metrics-server
  51.   name: metrics-server-auth-reader
  52.   namespace: kube-system
  53. roleRef:
  54.   apiGroup: rbac.authorization.k8s.io
  55.   kind: Role
  56.   name: extension-apiserver-authentication-reader
  57. subjects:
  58. – kind: ServiceAccount
  59.   name: metrics-server
  60.   namespace: kube-system
  61. apiVersion: rbac.authorization.k8s.io/v1
  62. kind: ClusterRoleBinding
  63. metadata:
  64.   labels:
  65.     k8s-app: metrics-server
  66.   name: metrics-server:system:auth-delegator
  67. roleRef:
  68.   apiGroup: rbac.authorization.k8s.io
  69.   kind: ClusterRole
  70.   name: system:auth-delegator
  71. subjects:
  72. – kind: ServiceAccount
  73.   name: metrics-server
  74.   namespace: kube-system
  75. apiVersion: rbac.authorization.k8s.io/v1
  76. kind: ClusterRoleBinding
  77. metadata:
  78.   labels:
  79.     k8s-app: metrics-server
  80.   name: system:metrics-server
  81. roleRef:
  82.   apiGroup: rbac.authorization.k8s.io
  83.   kind: ClusterRole
  84.   name: system:metrics-server
  85. subjects:
  86. – kind: ServiceAccount
  87.   name: metrics-server
  88.   namespace: kube-system
  89. apiVersion: v1
  90. kind: Service
  91. metadata:
  92.   labels:
  93.     k8s-app: metrics-server
  94.   name: metrics-server
  95.   namespace: kube-system
  96. spec:
  97.   ports:
  98.   – name: https
  99.     port: 443
  100.     protocol: TCP
  101.     targetPort: https
  102.   selector:
  103.     k8s-app: metrics-server
  104. apiVersion: apps/v1
  105. kind: Deployment
  106. metadata:
  107.   labels:
  108.     k8s-app: metrics-server
  109.   name: metrics-server
  110.   namespace: kube-system
  111. spec:
  112.   selector:
  113.     matchLabels:
  114.       k8s-app: metrics-server
  115.   strategy:
  116.     rollingUpdate:
  117.       maxUnavailable: 0
  118.   template:
  119.     metadata:
  120.       labels:
  121.         k8s-app: metrics-server
  122.     spec:
  123.       containers:
  124.       – args:
  125.         – –cert-dir=/tmp
  126.         – –secure-port=4443
  127.         – –kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
  128.         – –kubelet-use-node-status-port
  129.         – –metric-resolution=15s
  130.         – –kubelet-insecure-tls
  131.         image: registry.cn-shenzhen.aliyuncs.com/zengfengjin/metrics-server:v0.5.0
  132.         imagePullPolicy: IfNotPresent
  133.         livenessProbe:
  134.           failureThreshold: 3
  135.           httpGet:
  136.             path: /livez
  137.             port: https
  138.             scheme: HTTPS
  139.           periodSeconds: 10
  140.         name: metrics-server
  141.         ports:
  142.         – containerPort: 4443
  143.           name: https
  144.           protocol: TCP
  145.         readinessProbe:
  146.           failureThreshold: 3
  147.           httpGet:
  148.             path: /readyz
  149.             port: https
  150.             scheme: HTTPS
  151.           initialDelaySeconds: 20
  152.           periodSeconds: 10
  153.         resources:
  154.           requests:
  155.             cpu: 100m
  156.             memory: 200Mi
  157.         securityContext:
  158.           readOnlyRootFilesystem: true
  159.           runAsNonRoot: true
  160.           runAsUser: 1000
  161.         volumeMounts:
  162.         – mountPath: /tmp
  163.           name: tmp-dir
  164.       nodeSelector:
  165.         kubernetes.io/os: linux
  166.       priorityClassName: system-cluster-critical
  167.       serviceAccountName: metrics-server
  168.       volumes:
  169.       – emptyDir: {}
  170.         name: tmp-dir
  171. apiVersion: apiregistration.k8s.io/v1
  172. kind: APIService
  173. metadata:
  174.   labels:
  175.     k8s-app: metrics-server
  176.   name: v1beta1.metrics.k8s.io
  177. spec:
  178.   group: metrics.k8s.io
  179.   groupPriorityMinimum: 100
  180.   insecureSkipTLSVerify: true
  181.   service:
  182.     name: metrics-server
  183.     namespace: kube-system
  184.   version: v1beta1
  185.   versionPriority: 100

复制代码 需要注意的是端口和镜像地址。


5. 执行部署

  1. kubectl apply -f ./components-v0.5.0.yaml

复制代码
4.查看metrics-server的pod运行状态

  1. kubectl get pods -n kube-system| egrep ‘NAME|metrics-server’

复制代码
5. 查看运行日志

  1. # kubectl logs metrics-server-56874cd58b-b2gj9 -n kube-system                              
  2. I0418 09:49:44.461828       1 serving.go:341] Generated self-signed cert (/tmp/apiserver.crt, /tmp/apiserver.key)
  3. I0418 09:49:45.252957       1 requestheader_controller.go:169] Starting RequestHeaderAuthRequestController
  4. I0418 09:49:45.252972       1 shared_informer.go:240] Waiting for caches to sync for RequestHeaderAuthRequestController
  5. I0418 09:49:45.252994       1 configmap_cafile_content.go:202] Starting client-ca::kube-system::extension-apiserver-authentication::client-ca-file
  6. I0418 09:49:45.253002       1 shared_informer.go:240] Waiting for caches to sync for client-ca::kube-system::extension-apiserver-authentication::client-ca-file
  7. I0418 09:49:45.253142       1 configmap_cafile_content.go:202] Starting client-ca::kube-system::extension-apiserver-authentication::requestheader-client-ca-file
  8. I0418 09:49:45.253153       1 shared_informer.go:240] Waiting for caches to sync for client-ca::kube-system::extension-apiserver-authentication::requestheader-client-ca-file
  9. I0418 09:49:45.254091       1 secure_serving.go:197] Serving securely on [::]:4443
  10. I0418 09:49:45.254139       1 tlsconfig.go:240] Starting DynamicServingCertificateController
  11. I0418 09:49:45.254342       1 dynamic_serving_content.go:130] Starting serving-cert::/tmp/apiserver.crt::/tmp/apiserver.key
  12. I0418 09:49:45.353087       1 shared_informer.go:247] Caches are synced for RequestHeaderAuthRequestController
  13. I0418 09:49:45.353087       1 shared_informer.go:247] Caches are synced for client-ca::kube-system::extension-apiserver-authentication::client-ca-file
  14. I0418 09:49:45.354631       1 shared_informer.go:247] Caches are synced for client-ca::kube-system::extension-apiserver-authentication::requestheader-client-ca-file

复制代码
6.测试kubectl top命令的使用

  1. # kubectl top pods -n kube-system
  2. NAME                                 CPU(cores)   MEMORY(bytes)   
  3. coredns-58cc8c89f4-jdfc7             4m           12Mi            
  4. coredns-58cc8c89f4-z8t26             5m           13Mi            
  5. etcd-k8s-master                      9m           281Mi           
  6. kube-apiserver-k8s-master            22m          296Mi

复制代码 查看节点资源:

  1. # kubectl top nodes
  2. NAME         CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
  3. k8s-master   96m          2%     9330Mi          59%      
  4. k8s-node83   66m          1%     5829Mi          37%      
  5. k8s-node85   116m         2%     8555Mi          54%

复制代码 查看默认空间pod资源:

  1. # kubectl top pods
  2. NAME                     CPU(cores)   MEMORY(bytes)   
  3. nginx-6867cdf567-rprv9   0m           1Mi

复制代码 到此这篇关于kubernetes(k8s)安装metrics-server实现资源使用情况监控的文章就介绍到这了,更多相关kubernetes安装metrics-server资源监控内容请搜索共生网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持共生网络!

原创文章,作者:starterknow,如若转载,请注明出处:https://www.starterknow.com/108154.html

联系我们