1.部署metrics-server

从v1.8开始,引入了新的功能,即把资源指标引入api,资源指标:metrics-server,自定义指标:prometheus,k8s-prometheus-adapter(把prometheus采集的数据转化成k8s可理解的数据).

新一代架构:

a.核心指标流水线:由kubelet、metrics-server以及由API server提供的api组成;

cpu累计利用率、内存实时利用率、pod的资源占用率及容器的磁盘占用率;

b.监控流水线:用于从系统收集各种指标数据并提供终端用户、存储系统以及HPA,包含核心指标以及许多非核心指标,非核心指标不能被k8s所解析.

metrics-server是个api server,仅仅收集cpu利用率、内存利用率等.

# 访问https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/metrics-server
for i in auth-delegator.yaml metrics-apiservice.yaml metrics-server-service.yaml \
auth-reader.yaml metrics-server-deployment.yaml resource-reader.yaml; \
do wget https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/metrics-server/$i;done
# 手动在node1上下载镜像,有googlecontainer、mirrorgooglecontainers这两个可以用
docker pull mirrorgooglecontainers/metrics-server-amd64:v0.3.3
docker pull mirrorgooglecontainers/addon-resizer:1.8.4
docker tag mirrorgooglecontainers/metrics-server-amd64:v0.3.3 k8s.gcr.io/metrics-server-amd64:v0.3.3
docker tag mirrorgooglecontainers/addon-resizer:1.8.4 k8s.gcr.io/addon-resizer:1.8.4

前方高能,做了那么多始终报错,只有回退版本,修改配置文件

vim resource-reader.yaml # 添加一行nodes/stats
rules:
- apiGroups:
- ""
resources:
- pods
- nodes
- namespaces
- nodes/stats
# 第一个镜像的command只留这三行
vim metrics-server-deployment.yaml
containers:
- name: metrics-server
image: k8s.gcr.io/metrics-server-amd64:v0.3.3
imagePullPolicy: IfNotPresent
command:
- /metrics-server
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP
# 第二个镜像的command改成需要的参数
volumeMounts:
- name: metrics-server-config-volume
mountPath: /etc/config
command:
- /pod_nanny
- --config-dir=/etc/config
- --cpu=20m
- --extra-cpu=0.5m
- --memory=200Mi
- --extra-memory=50Mi
- --threshold=5
- --deployment=metrics-server-v0.3.2
- --container=metrics-server
- --poll-period=300000
- --estimator=exponential
- --minClusterSize=10 kubectl logs metrics-server-v0.3.2-7c686bc879-trs8q -c metrics-server-nanny -n kube-system
ERROR: Invoked by [/pod_nanny --config-dir=/etc/config --cpu=40m --extra-cpu=0.5m --memory=200Mi
ERROR: Watching namespace: kube-system, pod: metrics-server-v0.3.2-7c686bc879-trs8q, container: metrics-server.
ERROR: storage: MISSING, extra_storage: 0Gi
ERROR: cpu: 40m, extra_cpu: 0.5m, memory: 200Mi, extra_memory: 50Mi
ERROR: Resources: [{Base:{i:{value:40 scale:-3} d:{Dec:<nil>} s:40m Format:DecimalSI} kubectl logs metrics-server-v0.3.2-79c585b88c-h74pl -c metrics-server -n kube-system
I0511 15:59:50.515057 1 serving.go:312] Generated self-signed cert (apiserver.local.config/certificates/apiserver.crt,
apiserver.local.config/certificates/apiserver.key)
I0511 16:00:25.615475 1 secure_serving.go:116] Serving securely on [::]:443 wget https://github.com/kubernetes-incubator/metrics-server/archive/v0.3.1.zip
unzip v0.3.1.zip
cd metrics-server-0.3.1/deploy/1.8+/
# 修改deployment.yaml文件
--kubelet-preferred-address-types=InternalIP # 直接使用节点IP地址获取数据
--kubelet-insecure-tls # 不验证客户端证书
image: mirrorgooglecontainers/metrics-server-amd64:v0.3.1 # 更换镜像源
cat metrics-server-deployment.yaml
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: metrics-server
namespace: kube-system
---
apiVersion: extensions/v1beta1
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: mirrorgooglecontainers/metrics-server-amd64:v0.3.1
imagePullPolicy: IfNotPresent
command:
- /metrics-server
- --metric-resolution=30s
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP
volumeMounts:
- name: tmp-dir
mountPath: /tmp kubectl api-versions
kubectl proxy --port=8080
curl http://localhost:8080/apis/metrics.k8s.io/v1beta1
curl http://localhost:8080/apis/metrics.k8s.io/v1beta1/pods
kubectl top nodes
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
k8s-master 325m 16% 1322Mi 70%
k8s-node1 157m 7% 765Mi 40%
k8s-node2 144m 7% 592Mi 31%

参考博客:https://blog.csdn.net/oyym_mv/article/details/87166639

参考博客:http://blog.itpub.net/28916011/viewspace-2216340/

k8s之资源指标API部署metrics-server的更多相关文章

  1. k8s系列---资源指标API及自定义指标API

    不得不说千万不要随意更改版本,我用的1.13的版本,然后学到这一步时,还因yaml文件不同,卡住了很久,然后各种google才找到解决办法  https://www.linuxea.com/2112. ...

  2. k8s之自定义指标API部署prometheus

    1.自定义指标-prometheus node_exporter是agent;PromQL相当于sql语句来查询数据; k8s-prometheus-adapter:prometheus是不能直接解析 ...

  3. k8s资源指标API及metrics-server资源监控

    简述: 在k8s早期版本中,对资源的监控使用的是heapster的资源监控工具. 但是从 Kubernetes 1.8 开始,Kubernetes 通过 Metrics API 获取资源使用指标,例如 ...

  4. Kubernetes 学习23 kubernetes资源指标API及自定义指标API

    一.概述 1.上集中我们说到,官方文档提示说从k8s 1.11版本开始,将监控体系指标数据获取机制移向新一代的监控模型.也就意味着对于我们的k8s来讲现在应该有这样两种资源指标被使用.一种是资源指标, ...

  5. 十七,k8s集群指标API及自定义API

    目录 资源指标: Metrics-Server 资源指标: Metric-Server介绍 Metric-Server部署 下载yaml文件 因为有墙, 所以提前下载image镜像, 当然也可以手动修 ...

  6. kubernetes学习笔记之十二:资源指标API及自定义指标API

    第一章.前言 以前是用heapster来收集资源指标才能看,现在heapster要废弃了从1.8以后引入了资源api指标监视 资源指标:metrics-server(核心指标) 自定义指标:prome ...

  7. K8S原来如此简单(五)Metrics Server与HPA

    什么是HPA https://kubernetes.io/zh/docs/tasks/run-application/horizontal-pod-autoscale/ 我们前面有通过kubectl ...

  8. 启用k8s metrics server监控

    1.创建aggregator证书 方法一:直接使用二进制源码包安装 $ wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 $ chmod +x cfs ...

  9. Kubernetes学习之路(二十三)之资源指标和集群监控

    目录 1.资源指标和资源监控 2.Weave Scope监控集群 (1)Weave Scope部署 (2)使用 Scope (3)拓扑结构 (4)实时资源监控 (5)在线操作 (6)强大的搜索功能 2 ...

随机推荐

  1. CodeForces 494B Obsessive String ——(字符串DP+KMP)

    这题的题意就很晦涩.题意是:问有多少种方法,把字符串s划分成不重叠的子串(可以不使用完s的所有字符,但是这些子串必须不重叠),使得t串是所有这些新串的子串.譬如第一个样例,"ababa&qu ...

  2. MYSQL的两种存储引擎区别

    Innodb引擎 Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别.该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL ...

  3. Java并发指南14:Java并发容器ConcurrentSkipListMap与CopyOnWriteArrayList

    原文出处http://cmsblogs.com/ 『chenssy』 到目前为止,我们在Java世界里看到了两种实现key-value的数据结构:Hash.TreeMap,这两种数据结构各自都有着优缺 ...

  4. Dubbo系列(三)dubbo的核心技术--RPC调用

    dubbo的核心技术--RPC调用:分为俩部分RPC协议Protocol和方法调用Invoke: 一.RPC协议Protocol(Remote Procedure Call)远程过程调用协议 1.我们 ...

  5. 重读APUE(11)-信号安全的可重入函数

    重入时间点 进程捕捉到信号并对其进行处理时,进程正在执行的正常指令序列就会被信号处理程序临时中断,它首先执行该信号粗合理程序中的指令:如果从信号处理程序返回,则继续执行捕捉到信号时进程正在执行的正常指 ...

  6. 粘性定位 sticky

    position:sticky  粘性定位 top:200px 这是他的阈值,意思是当我们页面滚动到 200 像素的使用,我们的元素会自动变成固定定位,不到200像素的时候,我们的元素走的是相对定位 ...

  7. python笔记4 内置函数,匿名函数.递归函数 面向对象(基础, 组合,继承)

    内置函数 eval和exec eval :执行字符串中的代码并将结果返回给执行者,有返回值 exec:执行字符串中的代码,往往用于执行流程语句,没有返回值. s1 = '1+2' s2 = 'prin ...

  8. springboot和hadoop2.7.7集成开发

    1.本人在腾讯云安装hadoop2.7.7,详细安装请看以前的博客 2.pom.xml文件 <?xml version="1.0" encoding="UTF-8& ...

  9. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_23-页面预览-页面预览开发

    1.用户进入cms前端,点击“页面预览”在浏览器请求cms页面预览链接. 2.cms根据页面id查询DataUrl并远程请求DataUrl获取数据模型. 3.cms根据页面id查询页面模板内容 4.c ...

  10. Spring事务管理2----编程式事务管理

    编程式事务管理 通过使用将Spring框架提供的TransactionTemplate模板注入到业务层来进行事务管理,这样对业务层原来的代码修改过多.不利于项目的后期维护. 以下是声明式事务管理的具体 ...