我有一个API作为Kubernetes服务,并且我需要每小时在API中运行一个端点。(统计计算繁重,大概需要3-5分钟)
目前,我正在使用curl直接调用端点:
containers:
- name: callout
image: 'buildpack-deps:curl'
args:
- /bin/sh
- '-ec'
- 'curl http://api-service/v1/Stats/CalculateStats'问题是任务被发送到服务,并最终在其中一个pod上结束。运行计算会使pod处于繁忙状态,而来自普通用户的其他请求则会通过前端减慢速度。
如何从CPU要求更高的同一个API镜像创建一个专用pod (以便运行速度更快),并在其上运行计算,然后移除pod并在下一次计划中重复该过程?
谢谢
发布于 2021-04-26 00:38:39
这是我脑海中浮现的想法:
0。每当更新生产部署时,都可以更新此部署,因此两个部署都运行相同版本的appplication.在cronjob中:
将1.中创建的部署向上扩展到1
curl-command
0这将确保仅在执行昂贵的请求时才消耗额外的资源。这种方法的一个缺点是,如果没有足够的资源可用,pod的部署可能会失败,因此我们应该监控集群,并保留一些资源,以便在扩展部署时做好准备。这可以通过AWS上的集群自动缩放器来完成。扩展可能需要一些时间,因此cronjob应该能够处理这种延迟。
顺便说一句:我还建议用“昂贵的操作”保护/隐藏端点,不让公众看到,这样用户就不能“意外”或出于恶意破坏生产部署。
https://stackoverflow.com/questions/67255582
复制相似问题