美文网首页
kubernetes 1.17 部署metrics server

kubernetes 1.17 部署metrics server

作者: _fishman | 来源:发表于2019-12-31 10:43 被阅读0次

kubernetes 从1.8版本开始不再集成cadvisor,也废弃了heapster,使用metrics server来提供metrics,这篇文章介绍如何在kubernetes 1.17中部署metrics server。

$ git clone https://github.com/kubernetes-incubator/metrics-server

由于默认镜像是谷歌,如果pull不下来,换成微软的镜像来覆盖默认的 gcr.io 镜像

# metrics-server-deployment.yaml 默认镜像
image: k8s.gcr.io/metrics-server-amd64:v0.3.6

# 替换成微软的镜像
image: gcr.azk8s.cn/google_containers/metrics-server-amd64:v0.3.6

部署metrics Server

$ kubectl apply -f metrics-server/deploy/1.8+/

检查metrics server状态

$ kubectl get pods -n kube-system  |grep metrics
metrics-server-8484595bcc-cwgct            1/1     Running   0          9m44s
$ kubectl logs -f metrics-server-8484595bcc-cwgct -n kube-system 
I1231 10:08:24.220741       1 serving.go:312] Generated self-signed cert (/tmp/apiserver.crt, /tmp/apiserver.key)
I1231 10:08:25.933196       1 secure_serving.go:116] Serving securely on [::]:4443
E1231 10:08:28.409943       1 reststorage.go:135] unable to fetch node metrics for node "node-100": no metrics known for node
E1231 10:08:28.409986       1 reststorage.go:135] unable to fetch node metrics for node "node-101": no metrics known for node
E1231 10:08:28.409996       1 reststorage.go:135] unable to fetch node metrics for node "node-102": no metrics known for node
E1231 10:08:30.098755       1 reststorage.go:135] unable to fetch node metrics for node "node-100": no metrics known for node
E1231 10:08:30.098803       1 reststorage.go:135] unable to fetch node metrics for node "node-101": no metrics known for node
E1231 10:08:30.098816       1 reststorage.go:135] unable to fetch node metrics for node "node-102": no metrics known for node
E1231 10:09:09.746135       1 reststorage.go:135] unable to fetch node metrics for node "node-100": no metrics known for node
E1231 10:09:09.746189       1 reststorage.go:135] unable to fetch node metrics for node "node-101": no metrics known for node
E1231 10:09:09.746199       1 reststorage.go:135] unable to fetch node metrics for node "node-102": no metrics known for node

测试发现通过修改metrics-server-deployment.yaml,添加特定参数可以解决

完整的Deployment

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: gcr.azk8s.cn/google_containers/metrics-server-amd64:v0.3.6      #换成了微软镜像
        args:
          - --cert-dir=/tmp
          - --secure-port=4443
          - --kubelet-insecure-tls  #避免x509: cannot validate certificate
          - --kubelet-preferred-address-types=InternalIP  # 能够通过hostname解析
        ports:
        - name: main-port
          containerPort: 4443
          protocol: TCP
        securityContext:
          readOnlyRootFilesystem: true
          runAsNonRoot: true
          runAsUser: 1000
        imagePullPolicy: Always
        volumeMounts:
        - name: tmp-dir
          mountPath: /tmp
      nodeSelector:
        beta.kubernetes.io/os: linux

重写应用yaml,生效后几分钟可以访问得到数据:

$ kubectl apply -f metrics-server/deploy/1.8+/

探测metrics api

有两种方式可以测试metrics api,分别是kubectl和rest api

首先我们看第一种

$ kubectl top nodes
NAME       CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
node-100   544m         27%    1744Mi          30%       
node-101   255m         12%    749Mi           20%       
node-102   284m         14%    831Mi           22%

第二种方式
首先需要加个proxy

$ kubectl proxy --port=8081 &
$ curl http://localhost:8081/apis/metrics.k8s.io/v1beta1/nodes
{
  "kind": "NodeMetricsList",
  "apiVersion": "metrics.k8s.io/v1beta1",
  "metadata": {
    "selfLink": "/apis/metrics.k8s.io/v1beta1/nodes"
  },
  "items": [
    {
      "metadata": {
        "name": "node-101",
        "selfLink": "/apis/metrics.k8s.io/v1beta1/nodes/node-101",
        "creationTimestamp": "2019-12-31T10:40:40Z"
      },
      "timestamp": "2019-12-31T10:40:25Z",
      "window": "30s",
      "usage": {
        "cpu": "265935339n",
        "memory": "766944Ki"
      }
    },
    {
      "metadata": {
        "name": "node-102",
        "selfLink": "/apis/metrics.k8s.io/v1beta1/nodes/node-102",
        "creationTimestamp": "2019-12-31T10:40:40Z"
      },
      "timestamp": "2019-12-31T10:40:18Z",
      "window": "30s",
      "usage": {
        "cpu": "269443376n",
        "memory": "850940Ki"
      }
    },
    {
      "metadata": {
        "name": "node-100",
        "selfLink": "/apis/metrics.k8s.io/v1beta1/nodes/node-100",
        "creationTimestamp": "2019-12-31T10:40:40Z"
      },
      "timestamp": "2019-12-31T10:40:18Z",
      "window": "30s",
      "usage": {
        "cpu": "498030367n",
        "memory": "1778056Ki"
      }
    }
  ]
}

相关文章

网友评论

      本文标题:kubernetes 1.17 部署metrics server

      本文链接:https://www.haomeiwen.com/subject/szcboctx.html