内容简介:Kubernetes 1.8关于资源使用情况的metrics(例如容器的CPU和内存),可以通过Metrics API获取到。 前面在做Kubernetes 1.11的升级工作时,Kubernetes 1.11已经废弃heapster那套监控的东东。因此是时候了解一下Kubernetes的Metrics API和Metrics Server了。这里使用Heml来部署metrics-server,chat模板的值文件metrics-server.yaml如下:将其安装到Kubernetes的kube-sys
Kubernetes 1.8关于资源使用情况的metrics(例如容器的CPU和内存),可以通过Metrics API获取到。 前面在做Kubernetes 1.11的升级工作时,Kubernetes 1.11已经废弃heapster那套监控的东东。因此是时候了解一下Kubernetes的Metrics API和Metrics Server了。
Metrics Server的安装
这里使用Heml来部署metrics-server,chat模板的值文件metrics-server.yaml如下:
args: - --logtostderr - --kubelet-insecure-tls
将其安装到Kubernetes的kube-system名字空间:
helm install stable/metrics-server \ -n metrics-server \ --namespace kube-system \ -f metrics-server.yaml
部署完成后使用下面的命令查看node相关的指标:
kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes"
{"kind":"NodeMetricsList","apiVersion":"metrics.k8s.io/v1beta1","metadata":{"selfLink":"/apis/metrics.k8s.io/v1beta1/nodes"},"items":[]}
没有获取到信息,此时查看metric-server容器的日志,有下面的错误:
E1003 05:46:13.757009 1 manager.go:102] unable to fully collect metrics: [unable to fully scrape metrics from source kubelet_summary:node1: unable to fetch metrics from Kubelet node1 (node1): Get https://node1:10250/stats/summary/: dial tcp: lookup node1 on 10.96.0.10:53: no such host, unable to fully scrape metrics from source kubelet_summary:node2: unable to fetch metrics from Kubelet node2 (node2): Get https://node2:10250/stats/summary/: dial tcp: lookup node2 on 10.96.0.10:53: read udp 10.244.1.6:45288->10.96.0.10:53: i/o timeout]
可以看到metrics-server在从kubelet的10250端口获取信息时,使用的是hostname,而因为node1和node2是一个独立的Kubernetes演示环境,只是修改了这两个节点系统的/etc/hosts文件,而并没有内网的DNS服务器,所以metrics-server中不认识node1和node2的名字。这里我们可以直接修改Kubernetes集群中的coredns的configmap,修改Corefile加入hostnames插件,将Kubernetes的各个节点的主机名加入到hostnames中,这样Kubernetes集群中的所有Pod都可以从CoreDNS中解析各个节点的名字。
kubectl edit configmap coredns -n kube-system
apiVersion: v1
data:
Corefile: |
.:53 {
errors
health
hosts {
192.168.61.11 node1
192.168.61.12 node2
fallthrough
}
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
upstream
fallthrough in-addr.arpa ip6.arpa
}
prometheus :9153
proxy . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}
kind: ConfigMap
配置修改完毕后重启集群中coredns和metrics-server,确认metrics-server不再有错误日志。
kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes"
Metrics API
Metrics Server从Kubernetes集群中每个Node上kubelet的API收集metrics数据。通过Metrics API可以获取Kubernetes资源的Metrics指标,Metrics API挂载 /apis/metrics.k8s.io/
下。 可以使用 kubectl top
命令访问Metrics API,例如:
kubectl top node NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% node1 140m 14% 1285Mi 73% node2 37m 3% 458Mi 26%
kubectl top pod --all-namespaces NAMESPACE NAME CPU(cores) MEMORY(bytes) ingress-nginx nginx-ingress-controller-77fc55d6dd-hmlmt 3m 90Mi ingress-nginx nginx-ingress-controller-77fc55d6dd-htms6 2m 84Mi ingress-nginx nginx-ingress-default-backend-684f76869d-pxlmz 1m 1Mi kube-system coredns-576cbf47c7-mlfcd 2m 13Mi kube-system coredns-576cbf47c7-xgqdd 2m 10Mi kube-system etcd-node1 13m 86Mi kube-system kube-apiserver-node1 23m 514Mi kube-system kube-controller-manager-node1 26m 54Mi kube-system kube-flannel-ds-amd64-8rcq4 1m 18Mi kube-system kube-flannel-ds-amd64-mhx9t 2m 14Mi kube-system kube-proxy-nljs8 2m 30Mi kube-system kube-proxy-pjdsj 2m 19Mi kube-system kube-scheduler-node1 10m 18Mi kube-system kubernetes-dashboard-5746dd4544-gtj65 1m 28Mi kube-system metrics-server-8854b78d9-nx9tx 1m 12Mi kube-system tiller-deploy-6f6fd74b68-mc2cw 1m 27Mi
参考
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web开发敏捷之道
Sam Ruby、Dave Thomas、David Heineme Hansson / 慕尼黑Isar工作组、骆古道 / 机械工业出版社 / 2012-3-15 / 59.00元
本书第1版曾荣获Jolt大奖“最佳技术图书”奖。在前3版的内容架构基础上,第4版增加了关于Rails中新特性和最佳实践的内容。本书从逐步创建一个真正的应用程序开始,然后介绍Rails的内置功能。全书分为3部分,第一部分介绍Rails的安装、应用程序验证、Rails框架的体系结构,以及Ruby语言的知识;第二部分用迭代方式创建应用程序,然后依据敏捷开发模式搭建测试案例,最终用Capistrano完成......一起来看看 《Web开发敏捷之道》 这本书的介绍吧!