api k8s restful 创建pods_k8s-资源指标API及自定义指标API-二十三

一、

原先版本是用heapster来收集资源指标才能看,但是现在heapster要废弃了。

从k8s v1.8开始后,引入了新的功能,即把资源指标引入api;

在使用heapster时,获取资源指标是由heapster自已获取的,heapster有自已的获取路径,没有通过apiserver,后来k8s引入了资源指标API(Metrics API),于是资源指标的数据就从k8s的api中的直接获取,不必再通过其它途径。

metrics-server: 它也是一种API Server,提供了核心的Metrics API,就像k8s组件kube-apiserver提供了很多API群组一样,但它不是k8s组成部分,而是托管运行在k8s之上的Pod。

为了让用户无缝的使用metrics-server当中的API,还需要把这类自定义的API,通过聚合器聚合到核心API组里,然后可以把此API当作是核心API的一部分,通过kubectl api-versions可直接查看。

metrics-server收集指标数据的方式是从各节点上kubelet提供的Summary API 即10250端口收集数据,收集Node和Pod核心资源指标数据,主要是内存和cpu方面的使用情况,并将收集的信息存储在内存中,所以当通过kubectl top不能查看资源数据的历史情况,其它资源指标数据则通过prometheus采集了。

k8s中很多组件是依赖于资源指标API的功能 ,比如kubectl top 、hpa,如果没有一个资源指标API接口,这些组件是没法运行的;

资源指标:metrics-server

自定义指标: prometheus, k8s-prometheus-adapter

新一代架构:

核心指标流水线:由kubelet、metrics-server以及由API server提供的api组成;cpu累计利用率、内存实时利用率、pod的资源占用率及容器的磁盘占用率;

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

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

二、metrics

(1)卸载上一节heapster创建的资源;

[root@master metrics]# pwd

/root/manifests/metrics

[root@master metrics]# kubectl delete-f ./deployment.apps"monitoring-grafana"deleted

service"monitoring-grafana"deleted

clusterrolebinding.rbac.authorization.k8s.io"heapster"deleted

serviceaccount"heapster"deleted

deployment.apps"heapster"deleted

service"heapster"deleted

deployment.apps"monitoring-influxdb"deleted

service"monitoring-influxdb"deleted

pod"pod-demo" deleted

metrics-server在GitHub上有单独的项目,在kubernetes的addons里面也有关于metrics-server插件的项目yaml文件;

我们这里使用kubernetes里面的yaml:

将以下几个文件下载出来:

[root@master metrics-server]# pwd

/root/manifests/metrics/metrics-server

[root@master metrics-server]# lsauth-delegator.yaml auth-reader.yaml metrics-apiservice.yaml metrics-server-deployment.yaml metrics-server-service.yaml resource-reader.yaml

需要修改一些内容:

目前metrics-server的镜像版本已经升级到metrics-server-amd64:v0.3.1了,此前的版本为v0.2.1,两者的启动的参数还是有所不同的。

[root@master metrics-server]# vim resource-reader.yaml

...

...

rules:-apiGroups:- ""resources:-pods-nodes-namespaces- nodes/stats #添加此行

verbs:-get-list-watch-apiGroups:- "extensions"resources:-deployments

...

...

[root@master metrics-server]# vim metrics-server-deployment.yaml

...

...

containers:- name: metrics-server

image: k8s.gcr.io/metrics-server-amd64:v0.3.1#修改镜像(可以从阿里云上拉取,然后重新打标)

command:- /metrics-server- --metric-resolution=30s- --kubelet-insecure-tls ##添加此行- --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP #添加此行

# These are neededfor GKE, which doesn't support secure communication yet.

# Remove these lines for non-GKE clusters, and when GKE supports token-based auth.

#- --kubelet-port=10255#- --deprecated-kubelet-completely-insecure=trueports:- containerPort: 443name: https

protocol: TCP- name: metrics-server-nanny

image: k8s.gcr.io/addon-resizer:1.8.4#修改镜像(可以从阿里云上拉取,然后重新打标)

resources:

limits:

cpu: 100m

memory: 300Mi

requests:

cpu: 5m

memory: 50Mi

...

...

# 修改containers,metrics-server-nanny 启动参数,修改好的如下:

volumeMounts:- name: metrics-server-config-volume

mountPath:/etc/config

command:- /pod_nanny- --config-dir=/etc/config- --cpu=80m- --extra-cpu=0.5m

- --memory=80Mi- --extra-memory=8Mi- --threshold=5

- --deployment=metrics-server-v0.3.1

- --container=metrics-server- --poll-period=300000

- --estimator=exponential

# Specifies the smallest cluster (definedinnumber of nodes)

# resources will be scaled to.

#- --minClusterSize={ { metrics_server_min_cluster_size }}

...

...

#创建

[root@master metrics-server]# kubectl apply -f ./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

configmap/metrics-server-config created

deployment.apps/metrics-server-v0.3.1created

service/metrics-server created

#查看,pod已经起来了

[root@master metrics-server]# kubectl get pods -n kube-system |grep metrics-server

metrics-server-v0.3.1-7d8bf87b66-8v2w9 2/2 Running 0 9m37s

[root@master ~]# kubectl api-versions |grepmetrics

metrics.k8s.io/v1beta1

[root@master~]# kubectl top nodes

Error f

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值