【问题标题】:Using Kubernetes javascript client inside a deployment to create a job在部署中使用 Kubernetes javascript 客户端创建作业
【发布时间】:2019-11-01 07:14:37
【问题描述】:

您好,我创建了一个节点应用程序,它使用 kubernetes-client 库创建了一个 k8s 作业。然后,该作业应用程序通过对我的节点应用程序的 HTTP 调用进行响应。为了减少网络延迟和时间,我必须把所有东西都放在一个集群中。这可以在部署中创建作业吗?

参考:https://github.com/kubernetes-client

   apiVersion: batch/v1
   kind: Job
   metadata:
     name: job
   spec:
     ttlSecondsAfterFinished: 10
     template:
       spec:
         containers:
         - name: samplejob
           image: gcr.io/hjgfjfhgffghfght
           command: ["node",  "index.js", '{api_url":"apienpoint"}']
           resources:
             limits:
               memory: "128Mi"
               cpu: "100m"
             requests:
               memory: "128Mi"
               cpu: "100m"
         restartPolicy: Never
     backoffLimit: 1

【问题讨论】:

  • 你想实现什么?部署可能会保持 pod 运行(提供以这种方式编写的逻辑)并且编写作业/cronjobs 以在特定时间点执行任务。
  • 我想在我的节点应用程序中创建一个作业,并且该节点应用程序也应该在同一个集群中运行
  • 如果您正在寻找一个选项来创建运行多个需要协同工作的容器的 Pod,那么您可能需要参考 this 帮助中心文章。我不确定这是否能满足您的需求,但值得一试。

标签: kubernetes google-kubernetes-engine kubernetes-pod


【解决方案1】:

这绝对是可能的。这完全取决于您如何创建 node.js 容器映像。您的应用程序可以作为集群中的部署运行。有些东西会导致应用程序触发一个事件。该事件将向 k8s master 发送 API 调用,以请求创建作业。

您可以使用client libraries 之一与k8s master 进行交互。 node.js 库由社区维护。

【讨论】:

    【解决方案2】:

    您可以为您的代码构建 docker 映像,就像您可以使用一样

    node server.js 
    

    要触发您的主应用程序并将相同的图像放置在 Kubernetes 作业中,请将其保存在其他目录中并使用

    command 
    

    job/cronjob的yaml模板中的选项。

    这将为您排序

    【讨论】:

    • 不,我的问题是我想从 pod 创建一个作业
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-16
    • 2020-08-22
    • 1970-01-01
    • 2023-03-13
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多