Kubernetes系列之Kubernetes部署metrics-server

四、Kubernetes系列之Kubernetes部署metrics-server
#一、metrics-server简介
自kubernetes 1.8开始,资源使用指标(如容器 CPU 和内存使用率)通过 Metrics API 在 Kubernetes 中获取,metrics-server 替代了heapster。Metrics Server 实现了Resource Metrics API,Metrics Server?是集群范围资源使用数据的聚合器。?
Metrics Server 从每个节点上的 Kubelet 公开的 Summary API 中采集指标信息。

Kubernetes中有些组件依赖资源指标API(metric API)的功能 ,如kubectl top 、hpa。如果没有资源指标API接口,这些组件无法运行。在之前使用的是Heapster,Heapster废弃后改用metrics-server。

  • 通过Metrics API可以获取指定node或者pod的当前资源使用情况(而无法获取历史数据)
  • Metrics API的api路径:/apis/metrics.k8s.io/
  • Metrics API的使用需要在K8S集群中成功部署metrics server

kubernetes metrics server 参考文档 https://github.com/kubernetes-incubator/metrics-server

#二、安装metrics-server

1、下载所需文件
# mkdir ./metrics-server
# cd metrics-server/
# for file in aggregated-metrics-reader.yaml auth-delegator.yaml auth-reader.yaml metrics-apiservice.yaml metrics-server-deployment.yaml metrics-server-service.yaml resource-reader.yaml; do  wget https://raw.githubusercontent.com/kubernetes-incubator/metrics-server/master/deploy/1.8%2B/$file;done 

2、这里需要改2个地方,一个是镜像的问题,一个是服务启动的问题。  

# 在所有Node节点上执行。先把镜像国通阿里云的镜像源下载下来。再改个名字。
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.3
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.3 k8s.gcr.io/metrics-server-amd64:v0.3.3  

# 修改metrics-server-deployment.yaml,增加一个imagePullPolicy,增加command内容,否则会报错no metrics known for node。相关问题原因自行百度。
# vim metrics-server-deployment.yaml
 30       containers:
 31       - name: metrics-server
 32         image: k8s.gcr.io/metrics-server-amd64:v0.3.3
 33         imagePullPolicy: IfNotPresent
 34         command:
 35           - /metrics-server
 36           - --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP
 37           - --kubelet-insecure-tls
 38         volumeMounts:
 39         - name: tmp-dir
 40           mountPath: /tmp  

# kubectl apply -f ./  

clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
clusterrolebinding.rbac.authorization.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
serviceaccount/metrics-server created
deployment.extensions/metrics-server created
service/metrics-server created
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created  

3、查看pod状态
metrics-server-55898485b6-pdhnz               1/1     Running   0          93m    10.244.4.2      huoban-k8s-node01  

4、查看node资源使用情况( 一定要等几分钟,采集数据需要时间)
kubectl top node
NAME                  CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
huoban-k8s-master01   72m          3%     612Mi           16%
huoban-k8s-master02   93m          4%     713Mi           19%
huoban-k8s-master03   108m         5%     674Mi           18%
huoban-k8s-node01     26m          1%     334Mi           9%
huoban-k8s-node02     26m          1%     339Mi           9%        

5、查看pod资源使用情况
# kubectl top pods -n kube-system
NAME                                          CPU(cores)   MEMORY(bytes)
coredns-6967fb4995-4qlfb                      1m           13Mi
coredns-6967fb4995-frv2p                      1m           12Mi
etcd-huoban-k8s-master01                      22m          358Mi
etcd-huoban-k8s-master02                      25m          364Mi
etcd-huoban-k8s-master03                      23m          381Mi
kube-apiserver-huoban-k8s-master01            15m          267Mi
kube-apiserver-huoban-k8s-master02            13m          255Mi
kube-apiserver-huoban-k8s-master03            17m          249Mi
kube-controller-manager-huoban-k8s-master01   7m           69Mi
kube-controller-manager-huoban-k8s-master02   0m           14Mi
kube-controller-manager-huoban-k8s-master03   0m           14Mi
kube-flannel-ds-amd64-6bp76                   1m           21Mi
kube-flannel-ds-amd64-nrvvz                   1m           15Mi
kube-flannel-ds-amd64-shv4n                   1m           16Mi
kube-flannel-ds-amd64-t77n4                   1m           15Mi
kube-proxy-8d522                              1m           19Mi
kube-proxy-9ng4j                              1m           18Mi
kube-proxy-htw7p                              1m           20Mi
kube-proxy-n9r48                              1m           17Mi
kube-proxy-nsqgh                              1m           17Mi
kube-scheduler-huoban-k8s-master01            1m           27Mi
kube-scheduler-huoban-k8s-master02            0m           16Mi
kube-scheduler-huoban-k8s-master03            0m           13Mi
kubernetes-dashboard-86844cc55f-sz4gn         0m           13Mi
metrics-server-d9d75756b-l75wj                1m           17Mi   

原文地址:https://blog.51cto.com/79076431/2474978

时间: 2024-08-30 14:52:53

Kubernetes系列之Kubernetes部署metrics-server的相关文章

Kubernetes1.15.2集群部署并部署Metrics Server插件

环境信息: 操作系统 主机名 IP地址 CentOS 7.6 k8s-master 192.168.31.61 CentOS 7.6 k8s-node1 192.168.31.62 CentOS 7.6 k8s-node2 192.168.31.63 1. 安装要求 在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 操作系统 CentOS7.x-86_x64 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多 集群中所有机器之间网络互通 可以访问外网,需要

Kubernetes系列之Kubernetes的弹性伸缩(HPA)

###前言在kubernetes中,我们使用pod对外提供服务.这时候,我们需要以下两种情形需要关注: Pod因为不明原因挂掉,导致服务不可用Pod在高负荷的情况下,不能支撑我们的服务 如果我们人工监控pods,人工进行调整副本那么这个工作量无疑是巨大的,但kubernetes已经有了相应的机制来应对了. ###HPA全称Horizontal Pod Autoscaler控制器工作流程(V1版本) 更详细的介绍参考官方文档Horizontal Pod Autoscaler 流程 创建HPA资源对

Kubernetes系列之Kubernetes资源管理

Kubernetes 从创建之初的核心模块之一就是资源调度.想要在生产环境使用好 Kubernetes,必须对它的资源模型以及资源管理非常了解.这篇文章算是对散布在网络上的 Kubernetes 资源管理内容的一个总结.干货文章,强列推荐一读. Kubernetes 资源简介 什么是资源? 在 Kubernetes 中,有两个基础但是非常重要的概念:Node 和 Pod.Node 翻译成节点,是对集群资源的抽象:Pod 是对容器的封装,是应用运行的实体.Node 提供资源,而 Pod 使用资源,

Kubernetes系列02—Kubernetes设计架构和设计理念

1.Kubernetes设计架构 Kubernetes集群包含有节点代理kubelet和Master组件(APIs, scheduler, etc),一切都基于分布式的存储系统.下面这张图是Kubernetes的架构图. 2.Kubernetes节点 2.1 介绍 ① 在这张系统架构图中,我们把服务分为运行在工作节点上的服务和组成集群级别控制板的服务. ② Kubernetes节点有运行应用容器必备的服务,而这些都是受Master的控制. ③ 每次个节点上当然都要运行Docker.Docker来

Kubernetes系列:Kubernetes Dashboard

15.1.Dashboard 作为Kube认得Web用户界面,用户可以通过Dashboard在Kubernetes集群中部署容器化的应用,对应用进行问题处理和管理,并对集群本身进行管理.通过Dashboard,用户可以查看集群中应用的运行情况,同时也能够基于Dashboard创建或修改部署.任务.服务等Kubernetes的资源.通过部署向导,用户能够对部署进行扩容缩容,进行滚动更新.重启Pod或部署新应用,也能够查看Kubernetes资源的状态. dashboard-secret.yaml

Kubernetes系列之kubeadm部署多节点master集群

版本信息 linux Centos7 kubernetes v1.14.5 docker v18.06.1-ce 节点信息 VIP:47.110.19.11 阿里云负载均衡 安装前准备 开始部署前确保所有节点网络正常,能访问公网.主要操作都在VPC-OPEN-MASTER001节点进行,设置VPC-OPEN-MASTER001可以免密码登陆其他节点.所有操作都使用root用户身份进行. 服务器说明 我们这里使用的是五台centos-7.6的虚拟机,具体信息如下表: 系统类型 IP地址 节点角色

Kubernetes系列之kubernetes Prometheus Operator

Operator是由CoreOS公司开发的用来扩展Kubernetes API的特定应用程序控制器,用来创建.配置和管理复杂的有状态应用,例如Mysql.缓存和监控系统.目前CoreOS官方提供了几种Operator的代码实现,其中就包括Prometheus Operator 下图为Prometheus Operator 架构图 Operator作为一个核心的控制器,它会创建Prometheus.ServiceMonitor.alertmanager以及我们的prometheus-rule这四个

Kubernetes系列之Kubernetes使用ingress-nginx作为反向代理

#一.Ingress简介 在Kubernetes中,服务和Pod的IP地址仅可以在集群网络内部使用,对于集群外的应用是不可见的.为了使外部的应用能够访问集群内的服务,在Kubernetes 目前 提供了以下几种方案:NodePortLoadBalancerIngress###1.Ingress组成ingress controller 将新加入的Ingress转化成Nginx的配置文件并使之生效ingress服务 将Nginx的配置抽象成一个Ingress对象,每添加一个新的服务只需写一个新的In

Kubernetes系列之Kubernetes Pod控制器

#一.常见Pod控制器及含义 ###1. ReplicaSets ReplicaSet是下一代复本控制器.ReplicaSet和 Replication Controller之间的唯一区别是现在的选择器支持.Replication Controller只支持基于等式的selector(env=dev或environment!=qa),但ReplicaSet还支持新的,基于集合的selector(version in (v1.0, v2.0)或env notin (dev, qa)).大多数kub