【问题标题】:Openshift schedule deployment via ansible通过 ansible 进行 Openshift 调度部署
【发布时间】:2021-03-16 09:56:36
【问题描述】:

我有多个 openshift 应用程序部署配置为由 ansible 部署(由 Jenkins 触发)。一些应用程序需要按比例缩小以降低成本。

是否可以根据计划调整部署舵图以缩小和扩大规模?可以使用 openshift 调度器吗?

扩大和缩小是否等同于完全删除部署和关联的 PV 和图表?

现在计划删除一个 Jenkins 作业,然后重新创建部署。但它使每个应用程序都有相同的停机时间,这不是预期的结果。我不想为每个应用程序编写一个 Jenkins 管道。

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: test
  namespace: vini-test
spec:
  schedule: "*/2 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
            - name: partner-db
              image: some-image
              command:
              - /bin/sh
              - -c
              - date; echo $date > /tmp/cronjob.log
              - mkdir -p /tmp/openshift && cd /tmp/openshift && curl -L https://github.com/openshift/origin/releases/download/v3.11.0/openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz -o openshiftstuff.tar.gz && tar -xf openshiftstuff.tar.gz && mv openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit/oc /usr/bin -f && mv openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit/kubectl /usr/bin -f
              - oc get pods -n vini-test
              - oc scale deployment partner-db --replicas=0
          restartPolicy: OnFailure

【问题讨论】:

    标签: jenkins ansible cron jenkins-pipeline openshift


    【解决方案1】:

    是否可以根据计划调整部署舵图以缩小和扩大规模?可以使用 openshift 调度器吗?

    Helm 是用来部署应用程序的,所以我不认为你可以在运行时使用它来扩展应用程序,但我可能错了。

    您始终可以做的是部署一个额外的CronJob,它将使用oc scale 或类似的命令定期进行缩放。这也可以在单个 Jenkins 流水线中完成,该流水线将动态循环必要的项目并缩小它们(也许只对具有特定标签的项目这样做?)。

    扩大和缩小是否等同于完全删除部署和关联的 PV 和图表?

    使用oc scale / kubectl scale 进行扩展的方法是将Deployment spec 中的replicas 设置为另一个值,从而添加或删除Pod,而不是通过删除部署或类似的方式。

    【讨论】:

    • 感谢您的回答。我在 openshift 中检查了 cronjob 的示例,但我找不到任何可以运行一些命令来扩大和缩小规模的东西。 cron 作业也附加到 pod。因此,当我缩小 pod 时,它会被删除,如果 cron 作业是在 pod 中创建的,我该如何扩大它?还是我理解整个想法是错误的? access.redhat.com/documentation/en-us/…我提到的文档
    • CronJobs 只是定期运行某些 Pod。在 CronJob 中,您需要运行一个包含 oc 命令行的容器,然后在 Pod 中运行 oc scale 命令。希望对您有所帮助。
    • 我创建了一个 cronjob,但它创建了一个 pod 并自行终止。但是,如果我正确理解了您的陈述,则在该容器中,我必须安装 oc 并根据需要进行 oc 缩小/放大
    • 我已经用我用来缩小部署的 cronjob 更新了这个问题。我无法从 pod 中看到日志。而且规模缩小也没有发挥作用
    • 好的。我更新了 cron 作业,我得到了它的工作。使用官方的 openshift/origin-cli 映像并授予用户访问命名空间的权限
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 2016-07-11
    • 2016-03-29
    • 2015-12-08
    • 2015-12-08
    相关资源
    最近更新 更多