1.CDN介绍
CDN 即内容分发网络,是一种通过在多个地理位置部署服务器,将内容存储在离用户更近的地方,从而提高内容访问速度和可用性的技术。云原生是一种构建和运行应用程序的方法,它充分利用了云计算的优势,以实现快速部署、弹性扩展和高可靠性。目前由于互联网流量存在明显的波动性,不同时间段占用的资源不同,这会导致CDN资源闲置的问题,而CDN存在大量的边缘节点,如何充分提高资源的利用率是降低CDN运营成本的重中之重。
2.云原生方式
基于云原生的方式进行闲时资源的任务调度可以将CDN部分闲置资源重新利用起来,充分发挥CDN节点的潜力。要充分利用闲时资源的前提是要能够精准识别闲时资源,需要对网络流量,服务器使用率(CPU/内存等)等指标进行监控,同时要最大程度上保证CDN服务的质量,减少闲时任务影响正常CDN服务。基于这种前提,运用 Kubernetes 的 Job 类型作为 CDN 闲时任务时,具有诸多优势,Kubernetes 的 Job 类型为 CDN 闲时任务提供了一种可靠的任务管理方式。它可以确保任务按照预定的计划执行,并且在任务失败时自动进行重试。例如,在闲时可以安排数据清理任务,Job 能够确保这些任务在指定的时间窗口内完成,不会影响到 CDN 在高峰时段的正常服务。同时,Kubernetes 强大的资源调度功能可以为 CDN 闲时任务分配适当的资源。由于 CDN 在不同时段的机器使用率存在较大差异,通过 Job 类型可以在闲时为特定任务分配所需的计算、存储和网络资源,而不会影响到正在运行的核心服务。同时,资源隔离机制确保闲时任务不会干扰到其他关键业务的运行。
3.job调用方式
闲时任务是基于Job类型对外提供接口调用,用户需要将数据协同/计算等单次执行的程序封装成镜像,并按照Pod模板的方式填写相关的参数,同时指定本次任务需要预占的资源信息(带宽、cpu、内存)和副本数(需要调度的节点个数),每个副本数为单独的一个Job任务,每个Job会调度到单个节点上面进行任务执行,对于数据协同任务在传输大数据时,可以将数据切片,多个Job共同并发执行。
任务类型不同,需要的资源类型也就不同。对于数据协同类的任务主要是利用闲时带宽资源,对于计算密集型的任务主要是利用闲时CPU和内存资源。
4.安全保护
对于闲时任务的基本要求是不能影响正常业务的运行,而CDN节点本身的业务服务经常会有流量突发等情况导致节点使用率升高,如果对应节点上恰好运行了闲时任务,需要对该节点上面的Pod进行驱逐,防止影响到正常的对外的业务服务。可以通过监控系统主动拉取边缘节点的资源使用情况,根据配置的告警规则,如果该节点的使用率超过阈值,则开始告警,主动停止闲时任务。