在 Kubernetes 中,监控和日志属于生态的一部分,它并不是核心组件,因此大部分的能力依赖上层的云厂商的适配。Kubernetes 定义了介入的接口标准和规范,任何符合接口标准的组件都可以快速集成。
日志:排查问题的重要途径。 监控:及时暴露问题,防止进一步恶化。
在 K8s 中可以分成四个不同的类型:
Zend Engine
,通过一些常见的 Hook 机制,拿到类似像 jvm 里面的 GC 的次数,各种内存代的一个分布以及网络连接数的一些指标。
1.10 以前的 K8s 版本,大家会使用 Heapster 这样的组件来去进行监控的采集。
基于这两点原因,K8s 把 Heapster 进行了 break 掉,然后做了一个精简版的监控采集组件,叫做 metrics-server。
在 K8s 里面针对于监控,有三种不同的接口标准。它将监控的数据消费能力进行了标准化和解耦。
比较常见的是 Docker 的一些日志,排查类似像删除一些 Pod Hang 这一系列的问题。
etcd、API server、kube-scheduler、controller-manger、kubelet等组件的日志。网络中间件 Ingress 的日志可以观测到接入层的流量
比较推荐的是使用 Fluentd 的一个采集方案,Fluentd 是在每一个节点上面都会起相应的 agent,然后这个 agent 会把数据汇集到一个 Fluentd 的一个 server,这个 server 里面可以将数据离线到相应的类似像 elasticsearch,然后再通过 kibana 做展现;或者是离线到 influxdb,然后通过 Grafana 做展现。
--dry-run=client
参数来预览而不真正提交
kubectl create xxx --dry-run=client -o yaml
生成指定资源的编排文件
ab
命令对服务进行压测
ab -n 20000 -c 1000 "http://jd.com/"
其中参数-n:请求数;-c:并发数