由于 svc的IP只是一条 iptables 规则上的配置,并没有真正的网络设备,所以你 ping 这个地址,是不会有任何响应的
将重要操作放入内核态”是提高性能的重要手段。
kube-proxy 设置–proxy-mode=ipvs 来开启这个功能。它为 Kubernetes 集群规模带来的提升,还是非常巨大的。
对于指定了 clusterIP=None 的 Headless Service 来说,它的 A 记录的格式也是:…svc.cluster.local。但是,当你访问这条 A 记录的时候,它返回的是所有被代理的 Pod 的 IP 地址的集合。当然,如果你的客户端没办法解析这个集合的话,它可能会只会拿到第一个 Pod 的 IP 地址。
然后,再把这些数据保存在一个 TSDB (时间序列数据库,比如 OpenTSDB、InfluxDB 等)当中,以便后续可以按照时间进行检索。
最后,在具体的监控指标规划上,我建议你遵循业界通用的 USE 原则和 RED 原则。
其中,USE 原则指的是,按照如下三个维度来规划资源监控指标:
利用率(Utilization),资源被有效利用起来提供服务的平均时间占比;
饱和度(Saturation),资源拥挤的程度,比如工作队列的长度;
错误率(Errors),错误的数量。
而 RED 原则指的是,按照如下三个维度来规划服务监控指标:
每秒请求数量(Rate);
每秒错误数量(Errors);
服务响应时间(Duration)。
不难发现, USE 原则主要关注的是“资源”,比如节点和容器的资源使用情况,而 RED 原则主要关注的是“服务”,比如 kube-apiserver 或者某个应用的工作情况。这两种指标,在我今天为你讲解的 Kubernetes + Prometheus 组成的监控体系中,都是可以完全覆盖到的。
下一篇:mysql-锁