首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在专用pod上运行Kubernetes cronjob

在专用pod上运行Kubernetes cronjob
EN

Stack Overflow用户
提问于 2021-04-26 00:14:48
回答 1查看 96关注 0票数 1

我有一个API作为Kubernetes服务,并且我需要每小时在API中运行一个端点。(统计计算繁重,大概需要3-5分钟)

目前,我正在使用curl直接调用端点:

代码语言:javascript
复制
containers:
- name: callout
    image: 'buildpack-deps:curl'
    args:
        - /bin/sh
        - '-ec'
        - 'curl http://api-service/v1/Stats/CalculateStats'

问题是任务被发送到服务,并最终在其中一个pod上结束。运行计算会使pod处于繁忙状态,而来自普通用户的其他请求则会通过前端减慢速度。

如何从CPU要求更高的同一个API镜像创建一个专用pod (以便运行速度更快),并在其上运行计算,然后移除pod并在下一次计划中重复该过程?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-04-26 00:38:39

这是我脑海中浮现的想法:

  1. 为您的cronjob任务创建单独的部署。此部署与生产部署基本相同,但CPU占用率更高,而且(重要的!)一个单独的标签。默认情况下将副本计数设置为0。每当更新生产部署时,都可以更新此部署,因此两个部署都运行相同版本的appplication.
  2. Create,这是一个单独的服务,它将所有pods绑定到1中新创建的标记。此服务不应向公众(即互联网)开放。

在cronjob中:

将1.中创建的部署向上扩展到1

  • Wait,使部署的pod变为ready

  • Execute

  • curl-command

  • Scale 1中创建的部署。返回0

这将确保仅在执行昂贵的请求时才消耗额外的资源。这种方法的一个缺点是,如果没有足够的资源可用,pod的部署可能会失败,因此我们应该监控集群,并保留一些资源,以便在扩展部署时做好准备。这可以通过AWS上的集群自动缩放器来完成。扩展可能需要一些时间,因此cronjob应该能够处理这种延迟。

顺便说一句:我还建议用“昂贵的操作”保护/隐藏端点,不让公众看到,这样用户就不能“意外”或出于恶意破坏生产部署。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67255582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档