Bboysoul's Blog

首页 归档 资源 公告

kubernetes搭建mertics-server

April 4, 2020

简介

先介绍下我本地k8s的情况

NAME                     STATUS   ROLES    AGE     VERSION
k8s-master1   Ready    master   6h22m   v1.18.0
k8s-master2   Ready    master   6h22m   v1.18.0
k8s-master3   Ready    master   6h21m   v1.18.0
k8s-slave1    Ready    <none>   6h21m   v1.18.0
k8s-slave2    Ready    <none>   6h21m   v1.18.0

mertics api 简介

从k8s 1.8开始,注意是1.8不是我安装的1.18 1.18版本是大于1.8的,不知道为什么总有人觉得1.18版本小于1.8版本

从k8s 1.8开始kubernetes就有metics api了,这些指标可以被用户直接使用,比如kubectl top这个命令,还有hpa(Horizontal Pod Autoscaler)会使用这些指标去决策。如果你要使用mertics api那么就要安装mertics server

Metrics Server是k8s集群范围资源使用数据的聚合器,因为我使用的是kubeadm去创建的集群,所以Metrics Server是没有默认安装的,需要手动安装,集群安装完成时候kubectl top命令是不能使用的

操作

首先clone mertics-server的仓库

git clone https://github.bboysoul.tk/kubernetes-sigs/metrics-server.git

因为mertics-server是要使用aggregation layer的,所以我们要把apiserver 的aggregation layer打开,编辑

vim /etc/kubernetes/manifests/kube-apiserver.yaml

在command中加入

- --enable-aggregator-routing=true

把每个master节点的kubelet重启

systemctl restart kubelet

之后还有一个问题是因为我们kubelet的证书安装的时候就是自签名的证书,所以是不受信任的,我们要在deploy/kubernetes/metrics-server-deployment.yaml的containers.args加入

- --kubelet-insecure-tls

最后变为

      containers:
      - name: metrics-server
        image: k8s.gcr.io/metrics-server-amd64:v0.3.6
        imagePullPolicy: IfNotPresent
        args:
          - --cert-dir=/tmp
          - --secure-port=4443
          - --kubelet-insecure-tls

之后apply这些yaml文件

kubectl apply -f deploy/kubernetes

因为容器是存储在k8s.gcr.io中的,所以有些神奇的操作你懂的

查看api是不是创建成功

kubectl api-versions

看下top命令是不是可以使用

kubectl top nodes

使用kubectl打开一个proxy

kubectl proxy --port=8080

之后访问下api

curl http://localhost:8080/apis/metrics.k8s.io/v1beta1/nodes

curl http://localhost:8080/apis/metrics.k8s.io/v1beta1/pods

如果可以访问,说明没有什么问题

欢迎关注我的博客www.bboy.app

Have Fun


Tags:
本文总阅读量 本文总访客量 本站总访问量 本站总访客数