Kubernetes 部署 Metrics Server 获取集群指标数据

    技术2023-11-20  99

    如果出现下面的错误: no metrics known for pod  请按照本文的方法重新安装,可能/deploy/1.8+ 文件没有修改出现问题

    unable to fetch node metrics for node "k8s": no metrics known for node E0703 14:52:39.716521 1 reststorage.go:160] unable to fetch pod metrics for pod kube-system/coredns-66bff467f8-b6mnm: no metrics known for pod E0703 14:52:39.716543 1 reststorage.go:160] unable to fetch pod metrics for pod kube-system/kube-scheduler-k8s3: no metrics known for pod E0703 14:52:39.716548 1 reststorage.go:160] unable to fetch pod metrics for pod kube-system/kube-controller-manager-k8s3: no metrics known for pod E0703 14:52:39.716552 1 reststorage.go:160] unable to fetch pod metrics for pod kube-system/calico-node-67pwg: no metrics known for pod E0703 14:52:39.716555 1 reststorage.go:160] unable to fetch pod metrics for pod kubernetes-dashboard/kubernetes-dashboard-5585794759-w7qgt: no metrics known for pod E0703 14:52:39.716559 1 reststorage.go:160] unable to fetch pod metrics for pod kube-system/etcd-k8s3: no metrics known for pod E0703 14:52:39.716563 1 reststorage.go:160] unable to fetch pod metrics for pod kube-system/kube-apiserver-k8s3: no metrics known for pod E0703 14:52:39.716566 1 reststorage.go:160] unable to fetch pod metrics for pod kube-system/calico-kube-controllers-58b656d69f-98xk2: no metrics known for pod E0703 14:52:39.716570 1 reststorage.go:160] unable to fetch pod metrics for pod kube-system/coredns-66bff467f8-7jrq5: no metrics known for pod E0703 14:52:39.716573 1 reststorage.go:160] unable to fetch pod metrics for pod kube-system/kube-proxy-r8l7n: no metrics known for pod E0703 14:52:39.716576 1 reststorage.go:160] unable to fetch pod metrics for pod kubernetes-dashboard/dashboard-metrics-scraper-6b4884c9d5-j8hfs: no metrics known for pod E0703 14:52:39.716580 1 reststorage.go:160] unable to fetch pod metrics for pod kube-system/metrics-server-59f947bc97-fh8ss: no metrics known for pod

     

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

    安装版本信息:

    Kubernetes 版本:1.18.0Metrics Server 版本:0.3.6

     创建文件metrics-server.yaml 并复制下面的内容到文件中。 

    kubectl apply -f  metrics-server.yaml

    github上的下载的目 /root/k8s3/metrics-server/deploy/1.8+ 下面有多个文件,下面的文件是这几个文件的组合,这是稍微修改一点内容:(修改部分有注释)

    ## ServiceAccount apiVersion: v1 kind: ServiceAccount metadata: name: metrics-server namespace: kube-system --- ## ClusterRole aggregated-metrics-reader apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRol metadata: name: system:aggregated-metrics-reader labels: rbac.authorization.k8s.io/aggregate-to-view: "true" rbac.authorization.k8s.io/aggregate-to-edit: "true" rbac.authorization.k8s.io/aggregate-to-admin: "true" rules: - apiGroups: ["metrics.k8s.io"] resources: ["pods","nodes"] verbs: ["get","list","watch"] --- ## ClusterRole metrics-server apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: system:metrics-server rules: - apiGroups: [""] resources: ["pods","nodes","nodes/stats","namespaces","configmaps"] verbs: ["get","list","watch"] --- ## ClusterRoleBinding auth-delegator apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: metrics-server:system:auth-delegator roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: system:auth-delegator subjects: - kind: ServiceAccount name: metrics-server namespace: kube-system --- ## RoleBinding metrics-server-auth-reader apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: metrics-server-auth-reader namespace: kube-system roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: extension-apiserver-authentication-reader subjects: - kind: ServiceAccount name: metrics-server namespace: kube-system --- ## ClusterRoleBinding system:metrics-server apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: system:metrics-server roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: system:metrics-server subjects: - kind: ServiceAccount name: metrics-server namespace: kube-system ## APIService --- apiVersion: apiregistration.k8s.io/v1beta1 kind: APIService metadata: name: v1beta1.metrics.k8s.io spec: service: name: metrics-server namespace: kube-system group: metrics.k8s.io version: v1beta1 insecureSkipTLSVerify: true groupPriorityMinimum: 100 versionPriority: 100 ## Service --- apiVersion: v1 kind: Service metadata: name: metrics-server namespace: kube-system labels: kubernetes.io/name: "Metrics-server" kubernetes.io/cluster-service: "true" spec: selector: k8s-app: metrics-server ports: - port: 443 targetPort: 4443 --- ## Deployment 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: hostNetwork: true serviceAccountName: metrics-server containers: - name: metrics-server ## 修改镜像源地址 image: registry.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6 imagePullPolicy: IfNotPresent args: - --cert-dir=/tmp - --secure-port=4443 - --kubelet-insecure-tls ## 增加 - --kubelet-preferred-address-types=InternalDNS,InternalIP,ExternalDNS,ExternalIP,Hostname ## 增加 ports: - name: main-port containerPort: 4443 protocol: TCP securityContext: readOnlyRootFilesystem: true runAsNonRoot: true runAsUser: 1000 resources: limits: memory: 1Gi cpu: 1000m requests: memory: 1Gi cpu: 1000m volumeMounts: - name: tmp-dir mountPath: /tmp - name: localtime readOnly: true mountPath: /etc/localtime volumes: - name: tmp-dir emptyDir: {} - name: localtime hostPath: type: File path: /etc/localtime nodeSelector: kubernetes.io/os: linux kubernetes.io/arch: "amd64"

     

    Processed: 0.010, SQL: 9