Kubernetes 监控日志排错之 Metrics Server
2021-04-14 04:25
标签:命令 number auth 否则 节点 serve secure Kubernete 架构 监控资源指标管道 Metrics API(Metrics Server) 在Kubernetes集群中部署 Metrics API(Metrics Server) 查看node资源指标 查看pods资源指标 其它方式在Kubernetes 上部署Metrics Server的方法 此方法要比以上部署要容易许多,可参考之 Kubernetes 监控日志排错之 Metrics Server 标签:命令 number auth 否则 节点 serve secure Kubernete 架构 原文地址:https://blog.51cto.com/51eat/2474332
从 Kubernetes 1.8开始,资源使用指标,例如容器 CPU 和内存使用率,可通过 Metrics API 在 Kubernetes 中获得。这些指标可以直接被用户访问,比如使用kubectl top命令行,或者这些指标由集群中的控制器使用,例如,Horizontal Pod Autoscaler,使用这些指标来做决策;
通过 Metrics API,您可以获得指定节点或 pod 当前使用的资源量。此 API 不存储指标值,因此想要获取某个指定节点10分钟前的资源使用量是不可能的;
API源码GitHub仓库地址:
Metrics Server是一种API Server。其提供了核心的Metrics API,通过在主 API server 中注册的 Metrics Server Kubernetes 聚合器来采集指标信息,就像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方面的使用情况,并将收集的信息存储在内存中;
Metrics API 需要在集群中部署 Metrics Server。否则它将不可用;
核心指标流水线:kubelet、metrics-server、api-server提供的api组成,统计cpu累计使用率、内存实时使用率、Pod资源占用率及容器的磁盘占用率;
监控流水线:用于从系统收集各种指标数据并提供终端用户、存储系统及HPA,它们包含核心指标及许多非核心指标。非核心指标本身不能被k8s所解析;
我部署metrics-server参考的官方站点
使用for循环下载
[root@node1 metrics]# ll
total 24
-rw-r--r-- 1 root root 398 Feb 28 03:30 auth-delegator.yaml
-rw-r--r-- 1 root root 419 Feb 28 03:30 auth-reader.yaml
-rw-r--r-- 1 root root 388 Feb 28 03:30 metrics-apiservice.yaml
-rw-r--r-- 1 root root 3252 Feb 28 03:30 metrics-server-deployment.yaml
-rw-r--r-- 1 root root 336 Feb 28 03:30 metrics-server-service.yaml
-rw-r--r-- 1 root root 795 Feb 28 03:30 resource-reader.yaml
[root@node1 metrics]#
修改容器当中的自定义变量资源限制,不然无法running;
command: //此处修改
- /metrics-server
- --metric-resolution=30s
# These are needed for GKE, which doesn‘t support secure communication yet.
# Remove these lines for non-GKE clusters, and when GKE supports token-based auth.
- --kubelet-port=10250
#- --deprecated-kubelet-completely-insecure=true
- --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP
command: //此处修改
- /pod_nanny
- --config-dir=/etc/config
- --cpu=5m
- --extra-cpu=0.5m
- --memory=80Mi
- --extra-memory=8Mi
- --threshold=5
- --deployment=metrics-server-v0.3.6
- --container=metrics-server
- --poll-period=300000
- --estimator=exponential
# Specifies the smallest cluster (defined in number of nodes)
# resources will be scaled to.
#- --minClusterSize={{ metrics_server_min_cluster_size }}
添加nodes/statsrules:
- apiGroups:
- ""
resources:
- pods
- nodes
- namespaces
- nodes/stats
参考脚本[root@node2 ~]# cat pull-metrics.sh
#!/bin/bash
#
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/addon-resizer:1.8.7
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6 k8s.gcr.io/metrics-server-amd64:v0.3.6
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/addon-resizer:1.8.7 k8s.gcr.io/addon-resizer:1.8.7
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/addon-resizer:1.8.7
[root@node2 ~]#
[root@node1 metrics]# 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.6 created
service/metrics-server created
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created
[root@node1 metrics]#
[root@node1 ~]# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
metrics-server-v0.3.6-cf56dfd4-mj7p2 2/2 Running 0 22s
[root@node1 ~]# kubectl top nodes
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
node1 146m 7% 992Mi 65%
node2 20m 2% 333Mi 19%
node3 23m 2% 351Mi 28%
[root@node1 ~]#
[root@node1 metrics]# kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes" | jq | less
[root@node1 metrics]# kubectl get --raw "/apis/metrics.k8s.io/v1beta1/pods" | jq | less
github kubernetes-sigs
上一篇:http协议详解
下一篇:node 上传图片到七牛
文章标题:Kubernetes 监控日志排错之 Metrics Server
文章链接:http://soscw.com/index.php/essay/75497.html