华为云CCE Turbo:基于eBPF的用户自定义多粒度网络监控能力
【摘要】 华为云云容器引擎CCE Turbo容器服务,提供了基于eBPF技术的dolphin插件(即"CCE容器网络扩展指标"插件),实现多维度、多粒度的容器监控能力,大大增强了容器网络的可观测能力。
基于eBPF的容器监控的兴起
华为云云容器引擎CCE Turbo容器服务,提供了基于eBPF技术的dolphin插件(即"CCE容器网络扩展指标"插件),实现多维度、多粒度的容器监控能力,大大增强了容器网络的可观测能力。
dolphin基于eBPF的监控能力构建
apiVersion: crd.dolphin.io/v1
kind: MonitorPolicy
metadata:
name: example-task #监控任务名
namespace: kube-system #必填,namespace必须为kube-system
spec:
selector: #选填,配置dolphin插件监控的后端,形如labelSelector格式,默认将监控本节点所有容器
matchLabels:
app: nginx
matchExpressions:
- key: app
operator: In
values:
- nginx
podLabel: [app] #选填,用户标签
healthCheck: #选填,本地节点 Pod 健康检查任务中最近一次健康检查是否健康、健康检查总健康&不健康次数这三个指标开关,默认不开
enable: true # true false
failureThreshold: 3 #选填,健康检查不健康判定失败次数,默认1次健康检查失败即判定不健康
periodSeconds: 5 #选填,健康检查任务检查间隔时间,单位秒,默认60
command: "" #选填,健康检查任务检查命令,支持:ping、arping、curl,默认 ping
ipFamilies: [""] #选填,健康检查IP地址族,支持:ipv4,默认ipv4
port: 80 #选填,使用curl时必选,端口号
path: "" #选填,使用curl时必选,http api 路径
monitor:
ip:
ipReceive:
aggregateType: flow #选填,支持填写"pod"或"flow",分别表示pod粒度监控或流粒度监控
ipSend:
aggregateType: flow #选填,支持填写"pod"或"flow",分别表示pod粒度监控或流粒度监控
tcp:
tcpReceive:
aggregateType: flow #选填,支持填写"pod"或"flow",分别表示pod粒度监控或流粒度监控
tcpSend:
aggregateType: flow #选填,支持填写"pod"或"flow",分别表示pod粒度监控或流粒度监控
tcpRetrans:
aggregateType: flow #选填,支持填写"pod"或"flow",分别表示pod粒度监控或流粒度监控
tcpRtt:
aggregateType: flow #选填,支持填写"flow",表示流粒度监控,单位:微秒
tcpNewConnection:
aggregateType: pod #选填,支持填写"pod",表示pod粒度监控
-
用户自定义监控项。用户通过CR自选监控项,dolphin根据用户选择的监控项动态注入eBPF程序,不需要的内容不监控,最大程度减少对CPU、memory等资源的消耗。 -
用户自定义监控粒度。用户根据不同的监控诉求,可以选择pod或flow的监控粒度,dolphin根据不同的监控粒度注入不同的eBPF程序,既满足了用户的监控诉求,也尽量降低资源的销毁。pod粒度监控会按pod粒度聚合监控数据,用户通过pod粒度监控可以观测容器层面的网络运行情况。flow粒度监控会按pod内不同流聚合监控数据,用户通过flow粒度监控可以观测容器内不同流的网络运行情况,进一步感知不同pod之间的通信情况。 -
多任务并发。每个CR对应一个监控任务,可以多个任务并发监控,互不影响。用户可以根据需要定义多个监控任务进行不同层次、不同服务的监控。 -
selector选择监控范围。CR中的selector为标准的K8s pod label selector,用户可以通过selector选择需要监控的一组pod,灵活的定义监控范围。dolphin会根据用户定义的监控范围只监控选中的pod,大大降低资源消耗和监控结果输出。监控结果携带用户指定pod label。用户通过监控结果进行数据分析时,常常会用到pod上的label信息进行数据筛选、数据聚合、数据关联等动作,用户可以通过podLabel字段指定监控结果携带哪些pod上的label,dolphin输出监控结果时,会根据用户指定的label key获取pod的上的label value,并将label KV随监控结果输出,满足用户数据处理的诉求。 -
丰富的IP层和TCP层监控能力,vpc网络的健康检查能力。
具体的监控能力和使用方式,请参考华为云CCE容器网络扩展指标:
示 例
apiVersion: crd.dolphin.io/v1
kind: MonitorPolicy
metadata:
name: app1
namespace: kube-system
spec:
selector:
matchLabels:
app: app1
monitor:
ip:
ipReceive:
aggregateType: pod
ipSend:
aggregateType: pod
tcp:
tcpRetrans:
aggregateType: flow
tcpRtt:
aggregateType: flow
tcpNewConnection:
aggregateType: pod
后续演进
dolphin崭露头角,还在快速的成长过程中,后续会在如下几个方面继续演进增强。
-
更丰富的监控指标,比如支持错包计数、建链失败统计、丢包统计、udp报文统计等指标。 -
更强的用户自定义能力,用户可以定义监控的IP范围、端口范围、聚合方式等。 -
K8s service监控能力,让用户能感知client->service->endpoint全链路的网络运行情况。 -
更智能的诊断能力,帮助用户对网络问题的快速定位、定界。
云容器引擎CCE服务体验请访问
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)