Kubernetes-dashboard安裝metrics-server實現(xiàn)完整的性能數(shù)據(jù)采集和監(jiān)控功能

1. 環(huán)境準備

主機 主機ip 當前作用
hdss7-21 10.4.7.11 10.4.7.10浮動IP dns
hdss7-21 10.4.7.21 master,node節(jié)點
hdss7-22 10.4.7.22 master,node節(jié)點
hdss7-200 10.4.7.200 簽發(fā)證書節(jié)點

注意:

  1. 由于 Kubernetes API 版本之間的重大更改,某些功能可能無法在dashbooard中正常使用
  2. 監(jiān)控信息不需要通過 Heapster 來提供窜管,而是通過 Metrics Server 來提供,Metrics Scraper服務來采集,不需要單獨維護 Heapster(從kubernetes1.19.0+起,dashboard版本更改為2.0.0+和集成了Metrics Scraper)

2. 部署dashboard

2.1 準備資源配置清單

[root@hdss7-21 ~]#  mkdir ~/dashboard  
[root@hdss7-21 ~]#  cd ~/dashboard

yaml文件下載: https://github.com/kubernetes/kubernetes/blob/v1.19.0/cluster/addons/dashboard/dashboard.yaml

dashboard.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: kubernetes-dashboard
  labels:
    k8s-app: kubernetes-dashboard
    addonmanager.kubernetes.io/mode: Reconcile

---

apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    k8s-app: kubernetes-dashboard
    addonmanager.kubernetes.io/mode: Reconcile
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard

---

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  ports:
    - port: 443
      targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard


---

apiVersion: v1
kind: Secret
metadata:
  labels:
    k8s-app: kubernetes-dashboard
    addonmanager.kubernetes.io/mode: EnsureExists
  name: kubernetes-dashboard-certs
  namespace: kubernetes-dashboard
type: Opaque

---

apiVersion: v1
kind: Secret
metadata:
  labels:
    k8s-app: kubernetes-dashboard
    addonmanager.kubernetes.io/mode: EnsureExists
  name: kubernetes-dashboard-csrf
  namespace: kubernetes-dashboard
type: Opaque
data:
  csrf: ""

---

apiVersion: v1
kind: Secret
metadata:
  labels:
    k8s-app: kubernetes-dashboard
    addonmanager.kubernetes.io/mode: EnsureExists
  name: kubernetes-dashboard-key-holder
  namespace: kubernetes-dashboard
type: Opaque

---

kind: ConfigMap
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
    addonmanager.kubernetes.io/mode: EnsureExists
  name: kubernetes-dashboard-settings
  namespace: kubernetes-dashboard

---

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
    addonmanager.kubernetes.io/mode: Reconcile
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
rules:
  - apiGroups: [""]
    resources: ["secrets"]
    resourceNames: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs", "kubernetes-dashboard-csrf"]
    verbs: ["get", "update", "delete"]
  - apiGroups: [""]
    resources: ["configmaps"]
    resourceNames: ["kubernetes-dashboard-settings"]
    verbs: ["get", "update"]
  - apiGroups: [""]
    resources: ["services"]
    resourceNames: ["heapster", "dashboard-metrics-scraper"]
    verbs: ["proxy"]
  - apiGroups: [""]
    resources: ["services/proxy"]
    resourceNames: ["heapster", "http:heapster:", "https:heapster:", "dashboard-metrics-scraper", "http:dashboard-metrics-scraper"]
    verbs: ["get"]

---

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
    addonmanager.kubernetes.io/mode: Reconcile
  name: kubernetes-dashboard
rules:
  - apiGroups: ["metrics.k8s.io"]
    resources: ["pods", "nodes"]
    verbs: ["get", "list", "watch"]

---

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  labels:
    k8s-app: kubernetes-dashboard
    addonmanager.kubernetes.io/mode: Reconcile
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: kubernetes-dashboard
subjects:
  - kind: ServiceAccount
    name: kubernetes-dashboard
    namespace: kubernetes-dashboard

---

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: kubernetes-dashboard
  labels:
    k8s-app: kubernetes-dashboard
    addonmanager.kubernetes.io/mode: Reconcile
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: kubernetes-dashboard
subjects:
  - kind: ServiceAccount
    name: kubernetes-dashboard
    namespace: kubernetes-dashboard

---

kind: Deployment
apiVersion: apps/v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      k8s-app: kubernetes-dashboard
  template:
    metadata:
      labels:
        k8s-app: kubernetes-dashboard
    spec:
      containers:
        - name: kubernetes-dashboard
          image: kubernetesui/dashboard:v2.0.1
          imagePullPolicy: Always
          ports:
            - containerPort: 8443
              protocol: TCP
          args:
            - --auto-generate-certificates
            - --namespace=kubernetes-dashboard
          volumeMounts:
            - name: kubernetes-dashboard-certs
              mountPath: /certs
            - mountPath: /tmp
              name: tmp-volume
          livenessProbe:
            httpGet:
              scheme: HTTPS
              path: /
              port: 8443
            initialDelaySeconds: 30
            timeoutSeconds: 30
          securityContext:
            allowPrivilegeEscalation: false
            readOnlyRootFilesystem: true
            runAsUser: 1001
            runAsGroup: 2001
      volumes:
        - name: kubernetes-dashboard-certs
          secret:
            secretName: kubernetes-dashboard-certs
        - name: tmp-volume
          emptyDir: {}
      serviceAccountName: kubernetes-dashboard
      nodeSelector:
        "kubernetes.io/os": linux
      tolerations:
        - key: "CriticalAddonsOnly"
          operator: "Exists"
        - key: node-role.kubernetes.io/master
          effect: NoSchedule

---

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: dashboard-metrics-scraper
  name: dashboard-metrics-scraper
  namespace: kubernetes-dashboard
spec:
  ports:
    - port: 8000
      targetPort: 8000
  selector:
    k8s-app: dashboard-metrics-scraper

---

kind: Deployment
apiVersion: apps/v1
metadata:
  labels:
    k8s-app: dashboard-metrics-scraper
  name: dashboard-metrics-scraper
  namespace: kubernetes-dashboard
spec:
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      k8s-app: dashboard-metrics-scraper
  template:
    metadata:
      labels:
        k8s-app: dashboard-metrics-scraper
      annotations:
        seccomp.security.alpha.kubernetes.io/pod: 'runtime/default'
    spec:
      containers:
        - name: dashboard-metrics-scraper
          image: kubernetesui/metrics-scraper:v1.0.4
          ports:
            - containerPort: 8000
              protocol: TCP
          livenessProbe:
            httpGet:
              scheme: HTTP
              path: /
              port: 8000
            initialDelaySeconds: 30
            timeoutSeconds: 30
          volumeMounts:
          - mountPath: /tmp
            name: tmp-volume
          securityContext:
            allowPrivilegeEscalation: false
            readOnlyRootFilesystem: true
            runAsUser: 1001
            runAsGroup: 2001
      serviceAccountName: kubernetes-dashboard
      nodeSelector:
        "kubernetes.io/os": linux
      tolerations:
        - key: node-role.kubernetes.io/master
          effect: NoSchedule
      volumes:
        - name: tmp-volume
          emptyDir: {}

2.2 創(chuàng)建管理員用戶

user.yaml

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: dashboard-admin-sa
  namespace: kubernetes-dashboard
  labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: dashboard-admin-sa
  namespace: kubernetes-dashboard
  annotations:
    rbac.authorization.kubernetes.io/autoupdate: "true"
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: dashboard-admin-sa
  namespace: kubernetes-dashboard

2.3. 創(chuàng)建ingress資源

如果當前沒有使用ingress來提供服務, 可在dashboard的資源清單service資源指定NodePort提供服務

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
  annotations:
    kubernetes.io/ingress.class: traefik
spec:
  rules:
  - host: dashboard.odl.com
    http:
      paths:
      - backend:
          serviceName: kubernetes-dashboard
          servicePort: 443

2.4. dashboard交付至K8s

[root@hdss7-21 dashboard ]# ll  ~/dashboard
總用量 16
-rw-r--r-- 1 root root 6887 12月  7 10:42 dashboard.yaml
-rw-r--r-- 1 root root  328 12月  7 10:44 ingress.yaml
-rw-r--r-- 1 root root  605 12月  7 10:17 user.yaml

[root@hdss7-21 dashboard ]# kubectl apply -f .
namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created
ingress.extensions/kubernetes-dashboard created
serviceaccount/dashboard-admin-sa created
clusterrolebinding.rbac.authorization.k8s.io/dashboard-admin-sa created

2.5 修改dns節(jié)點

如果使用NodePort映射端口, 可忽略此步驟

[root@hdss7-11 ~]# vim /var/named/odl.com.zone
$ORIGIN odl.com.
$TTL 600  ; 10 minutes
@       IN SOA  dns.odl.com. dnsadmin.odl.com. (
        2020091712 ; serial
        10800      ; refresh (3 hours)
        900        ; retry (15 minutes)
        604800     ; expire (1 week)
        86400      ; minimum (1 day)
        )
        NS   dns.odl.com.
$TTL 60 ; 1 minute
dns                A    10.4.7.11
harbor             A    10.4.7.200
k8s-yaml           A    10.4.7.200
traefik            A    10.4.7.10
dashboard          A    10.4.7.10

2.6. 登錄dashboard界面

2.6.1 查看secret資源

[root@hdss7-21 ~]# kubectl get secret -n kubernetes-dashboard
NAME                               TYPE                                  DATA   AGE
dashboard-admin-sa-token-qrkdl     kubernetes.io/service-account-token   3      30m
default-token-h4p79                kubernetes.io/service-account-token   3      37m
kubernetes-dashboard-certs         Opaque                                0      37m
kubernetes-dashboard-csrf          Opaque                                1      37m
kubernetes-dashboard-key-holder    Opaque                                2      37m
kubernetes-dashboard-token-n8t4c   kubernetes.io/service-account-token   3      37m

[root@hdss7-21 ~]# kubectl describe secret dashboard-admin-sa-token-qrkdl  -n kubernetes-dashboard
Name:         dashboard-admin-sa-token-qrkdl
Namespace:    kubernetes-dashboard
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: dashboard-admin-sa
              kubernetes.io/service-account.uid: 661f4adb-b51b-46d5-b9f8-966c91161f20

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1346 bytes
namespace:  20 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9......(省略)

2.6.2. 使用token登錄界面

image.png
image.png
image.png

3. 安裝metrics-server

yaml文件: https://github.com/kubernetes/kubernetes/tree/v1.15.12/cluster/addons/metrics-server

metrics-server 0.3.3
addon-resizer:1.8.5
鏡像的下載需要科學上網

3.1 準備資源配置清單

auth-delegator.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: metrics-server:system:auth-delegator
  labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: system:auth-delegator
subjects:
- kind: ServiceAccount
  name: metrics-server
  namespace: kube-system

auth-reader.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: metrics-server-auth-reader
  namespace: kube-system
  labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: extension-apiserver-authentication-reader
subjects:
- kind: ServiceAccount
  name: metrics-server
  namespace: kube-system

metrics-apiservice.yaml

apiVersion: apiregistration.k8s.io/v1beta1
kind: APIService
metadata:
  name: v1beta1.metrics.k8s.io
  labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
spec:
  service:
    name: metrics-server
    namespace: kube-system
  group: metrics.k8s.io
  version: v1beta1
  insecureSkipTLSVerify: true
  groupPriorityMinimum: 100
  versionPriority: 100

metrics-server-deployment.yaml
參數(shù) :
metrics-server

  1. 啟動command新增參數(shù) - --kubelet-insecure-tls
  2. 啟動command注釋參數(shù) --kubelet-port=10250
  3. 啟動command注釋參數(shù) - --deprecated-kubelet-completely-insecure=true

addon-resizer

  1. 修改 - --cpu={{ base_metrics_server_cpu }} ==> - --cpu=80m
  2. 修改 - --memory={{ base_metrics_server_memory }} ==> - --extra-memory=80Mi
  3. 修改 --extra-memory={{ metrics_server_memory_per_node }}Mi ==> --extra-memory=8Mi
  4. 注釋 - --minClusterSize={{ metrics_server_min_cluster_size }}
apiVersion: v1
kind: ServiceAccount
metadata:
  name: metrics-server
  namespace: kube-system
  labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: metrics-server-config
  namespace: kube-system
  labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: EnsureExists
data:
  NannyConfiguration: |-
    apiVersion: nannyconfig/v1alpha1
    kind: NannyConfiguration
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: metrics-server-v0.3.3
  namespace: kube-system
  labels:
    k8s-app: metrics-server
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
    version: v0.3.3
spec:
  selector:
    matchLabels:
      k8s-app: metrics-server
      version: v0.3.3
  template:
    metadata:
      name: metrics-server
      labels:
        k8s-app: metrics-server
        version: v0.3.3
      annotations:
        scheduler.alpha.kubernetes.io/critical-pod: ''
        seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
    spec:
      priorityClassName: system-cluster-critical
      serviceAccountName: metrics-server
      containers:
      - name: metrics-server
        image: k8s.gcr.io/metrics-server-amd64:v0.3.3
        command:
        - /metrics-server
        - --metric-resolution=30s
        # These are needed for GKE, which doesn't support secure communication yet.
        # Remove these lines for non-GKE clusters, and when GKE supports token-based auth.
        #- --kubelet-port=10255
        #- --deprecated-kubelet-completely-insecure=true
        - --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP
        - --kubelet-insecure-tls
        ports:
        - containerPort: 443
          name: https
          protocol: TCP
      - name: metrics-server-nanny
        image: k8s.gcr.io/addon-resizer:1.8.5
        resources:
          limits:
            cpu: 100m
            memory: 300Mi
          requests:
            cpu: 5m
            memory: 50Mi
        env:
          - name: MY_POD_NAME
            valueFrom:
              fieldRef:
                fieldPath: metadata.name
          - name: MY_POD_NAMESPACE
            valueFrom:
              fieldRef:
                fieldPath: metadata.namespace
        volumeMounts:
        - name: metrics-server-config-volume
          mountPath: /etc/config
        command:
          - /pod_nanny
          - --config-dir=/etc/config
          #- --cpu={{ base_metrics_server_cpu }}
          - --cpu=80m
          - --extra-cpu=0.5m
          #- --memory={{ base_metrics_server_memory }}
          - --memory=80Mi
          #- --extra-memory={{ metrics_server_memory_per_node }}Mi
          - --extra-memory=8Mi
          - --threshold=5
          - --deployment=metrics-server-v0.3.3
          - --container=metrics-server
          - --poll-period=300000
          - --estimator=exponential
          # Specifies the smallest cluster (defined in number of nodes)
          # resources will be scaled to.
          # 注釋
          # - --minClusterSize={{ metrics_server_min_cluster_size }}
      volumes:
        - name: metrics-server-config-volume
          configMap:
            name: metrics-server-config
      tolerations:
        - key: "CriticalAddonsOnly"
          operator: "Exists"

metrics-server-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: metrics-server
  namespace: kube-system
  labels:
    addonmanager.kubernetes.io/mode: Reconcile
    kubernetes.io/cluster-service: "true"
    kubernetes.io/name: "Metrics-server"
spec:
  selector:
    k8s-app: metrics-server
  ports:
  - port: 443
    protocol: TCP
    targetPort: https

resource-reader.yaml

rules.resources 添加資源 - nodes/stats參數(shù)

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: system:metrics-server
  labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
rules:
- apiGroups:
  - ""
  resources:
  - pods
  - nodes
  - namespaces
  # 添加
  - nodes/stats
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - "extensions"
  resources:
  - deployments
  verbs:
  - get
  - list
  - update
  - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: system:metrics-server
  labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: system:metrics-server
subjects:
- kind: ServiceAccount
  name: metrics-server
  namespace: kube-system

3.2. 開啟apiserver聚合層

  1. 在master節(jié)點要能訪問metrics server pod ip(kubeadm部署默認已經滿足該條件,二進制部署需注意要在master節(jié)點也部署node組件)
  2. 二進制安裝需要開啟聚合層(kubeadm默認已經啟用,二進制部署需自己啟用)
  3. 如果您未在 master 節(jié)點上運行 kube-proxy,則必須確保 kube-apiserver 啟動參數(shù)中包含--enable-aggregator-routing=true

3.2.1. cfssl生成證書

[root@hdss7-200 certs]# vim metrics-server-csr.json 
{
  "CN": "aggregator",
  "hosts": [],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "BeiJing",
      "L": "BeiJing",
      "O": "odl",
      "OU": "System"
    }
  ]
[root@hdss7-200 certs]# cfssl gencert \
-ca=/opt/certs/ca.pem \
-ca-key=/opt/certs/ca-key.pem \
-config=/opt/certs/ca-config.json \
-profile=clent metrics-server-csr.json | cfssl-json -bare metrics-server

報錯: {"code":5100,"message":"Invalid policy: no key usage available"}
-profile=kubernetes metrics-server-csr.json 的kubernetes 在ca-config.json文件中不存在

ca-config.json添加

            "kubernetes": {
                "expiry": "175200h",
                "usages": [
                    "signing",
                    "key encipherment",
                    "client auth"
                ]
            },

3.2.2. 將證書復制至所有master節(jié)點

[root@hdss7-200 certs]# ll metrics-server*
-rw-r--r-- 1 root root  997 12月  7 16:38 metrics-server.csr
-rw-r--r-- 1 root root  220 12月  7 16:19 metrics-server-csr.json
-rw------- 1 root root 1675 12月  7 16:38 metrics-server-key.pem
-rw-r--r-- 1 root root 1371 12月  7 16:38 metrics-server.pem
[root@hdss7-200 certs]# scp metrics-server.pem metrics-server-key.pem hdss7-21:/opt/kubernetes/server/bin/certs
[root@hdss7-200 certs]# scp metrics-server.pem metrics-server-key.pem hdss7-22:/opt/kubernetes/server/bin/certs

3.2.3. 所有apiserver啟動文件添加參數(shù)

 [root@hdss7-21 ~]# vim /opt/kubernetes/server/bin/kube-apiserver-startup.sh
/opt/kubernetes/server/bin/kube-apiserver
    .....
    .....
    --requestheader-client-ca-file=./certs/ca.pem \
    --requestheader-allowed-names="aggregator" \
    --requestheader-extra-headers-prefix=X-Remote-Extra- \
    --requestheader-group-headers=X-Remote-Group \
    --requestheader-username-headers=X-Remote-User \
    --proxy-client-cert-file=./certs/metrics-server.pem \
    --proxy-client-key-file=./certs/metrics-server-key.pem  

3.2.4. 所有kubelet添加authentication-token-webhook參數(shù)

 [root@hdss7-21 ~]# vim /opt/kubernetes/server/bin/kubelet-startup.sh
/opt/kubernetes/server/bin/kubelet \
          ...
          ...
          --authentication-token-webhook=true

3.2.5. 重啟apiserver和kubelet

supervisor是用Python開發(fā)的一個client/server服務,是Linux/Unix系統(tǒng)下的一個進程管理工具

 [root@hdss7-21 ~]# supervisorctl restart kube-apiserver-7-21 kube-kubelet-7-21
 [root@hdss7-22 ~]# supervisorctl restart kube-apiserver-7-22 kube-kubelet-7-22

3.3. metrics-server交付至k8s

[root@hdss7-21 metrics-server]# ll
總用量 24
-rw-r--r-- 1 root root  398 11月 27 17:16 auth-delegator.yaml
-rw-r--r-- 1 root root  420 11月 27 17:16 auth-reader.yaml
-rw-r--r-- 1 root root  393 11月 27 17:18 metrics-apiservice.yaml
-rw-r--r-- 1 root root 3220 12月  7 10:02 metrics-server-deployment.yaml
-rw-r--r-- 1 root root  336 11月 27 17:19 metrics-server-service.yaml
-rw-r--r-- 1 root root  817 12月  1 17:26 resource-reader.yaml
[root@hdss7-21 metrics-server]# kubectl apply -f .
horization.k8s.io/metrics-server:system:auth-delegator created
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created
serviceaccount/metrics-server created
configmap/metrics-server-config created
deployment.apps/metrics-server-v0.3.3 created
service/metrics-server created

3.3. 查看kubectl top是否有信息

等待幾分鐘后查看

[root@hdss7-21 ~]#  kubectl top nodes
NAME                STATUS   ROLES         AGE     VERSION
hdss7-21.host.com   Ready    master,node   5d21h   v1.15.12
hdss7-22.host.com   Ready    master,node   22d     v1.15.12

3.4. 登錄dashboard界面查看

image.png
image.png

至此,Kubernetes-dashboard安裝metrics-server實現(xiàn)完整的性能數(shù)據(jù)采集和監(jiān)控功能
如有疑問,可留下評論.

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末庇茫,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子螃成,更是在濱河造成了極大的恐慌旦签,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寸宏,死亡現(xiàn)場離奇詭異宁炫,居然都是意外死亡,警方通過查閱死者的電腦和手機氮凝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進店門羔巢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人罩阵,你說我怎么就攤上這事竿秆。” “怎么了稿壁?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵幽钢,是天一觀的道長。 經常有香客問我傅是,道長匪燕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任喧笔,我火速辦了婚禮帽驯,結果婚禮上,老公的妹妹穿的比我還像新娘溃斋。我一直安慰自己界拦,他們只是感情好,可當我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布梗劫。 她就那樣靜靜地躺著,像睡著了一般截碴。 火紅的嫁衣襯著肌膚如雪梳侨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天日丹,我揣著相機與錄音走哺,去河邊找鬼。 笑死哲虾,一個胖子當著我的面吹牛丙躏,可吹牛的內容都是我干的择示。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼晒旅,長吁一口氣:“原來是場噩夢啊……” “哼栅盲!你這毒婦竟也來了?” 一聲冷哼從身側響起废恋,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤谈秫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鱼鼓,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拟烫,經...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年迄本,在試婚紗的時候發(fā)現(xiàn)自己被綠了硕淑。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡嘉赎,死狀恐怖置媳,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情曹阔,我是刑警寧澤半开,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站赃份,受9級特大地震影響寂拆,放射性物質發(fā)生泄漏。R本人自食惡果不足惜抓韩,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一纠永、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧谒拴,春花似錦尝江、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至苍日,卻和暖如春惭聂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背相恃。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工辜纲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓耕腾,卻偏偏與公主長得像见剩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子扫俺,可洞房花燭夜當晚...
    茶點故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內容