【问题标题】:Pod scheduling in Openshift/KubernetesOpenshift/Kubernetes 中的 Pod 调度
【发布时间】:2020-03-03 13:37:48
【问题描述】:

我想为一个 pod 应用每日时间表,以便它在上午 9 点创建并在晚上 9 点销毁。

我相信这可以通过使用两个几乎相同的 CronJobs 集和适当的时间表来实现。

Jobs 创建一个 pod,分别在早上和晚上运行以下命令:

...
command: ["oc scale dc my-dc",  "--replicas=1"] # The command to execute in the pod
...
...
command: ["oc scale dc my-dc",  "--replicas=0"] # The command to execute in the pod
...

为了执行这些命令,我​​计划使用这个镜像,因为它安装了 Openshift CLI:https://hub.docker.com/r/ebits/openshift-client

任何人都可以提出任何建议来执行这项任务吗? 有没有我没有考虑到的方面?

谢谢

【问题讨论】:

  • 我认为您的问题的答案可以在这里找到:docs.openshift.com/container-platform/3.9/dev_guide/… 这描述了如何创建在集群中运行的 cronjob 资源
  • 谢谢,但我已经知道如何编写 CronJob。我知道我必须在容器中运行 oc 命令,我正在寻找有关如何执行此操作的建议。

标签: cron openshift schedule kubernetes-pod


【解决方案1】:

我会分享对我有用的方法。

我写的 CronJob 基于 this 镜像创建了一个容器(记得使用正确的标签指定 Openshift 版本)并运行典型的 oc 命令来登录和扩展上述 DC。

对我来说棘手的部分是理解正确的语法在创建后执行容器中的命令。

不管怎样,下面我包含了我在 CronJob yaml 文件中指定的容器定义:

...
spec:
  containers:
    - name: oc-cli
      image: 'registry.access.redhat.com/openshift3/ose-cli:v3.11.153' # <===== SPECIFY YOUR OPENSHIFT VERSION
      command:
        - /bin/sh
        - '-c'
        - >-
          oc login https://<LOGIN URL>/
          --insecure-skip-tls-verify -u <LOGIN USERNAME> -p <LOGIN PASSWORD> ; oc scale
          dc/example --replicas=1 -n cronjob-test ;
...

显式编写密码可能是个问题,所以我添加了一个 Secret 并在同一个 CronJob 中对其进行了引用,以便秘密数据成为环境变量的一部分:

...
spec:
  containers:
    - name: oc-cli
      image: 'registry.access.redhat.com/openshift3/ose-cli:v3.11.153' # <===== SPECIFY YOUR OPENSHIFT VERSION
      command:
        - /bin/sh
        - '-c'
        - >-
          oc login $OC_URL --insecure-skip-tls-verify -u $OC_USER -p
          $OC_PASSWORD ; oc scale dc/example --replicas=5 -n
          cronjob-test ;
      env:
        - name: OC_USER
          valueFrom:
            secretKeyRef:
              name: oc-login-credentials
              key: username
        - name: OC_PASSWORD
          valueFrom:
            secretKeyRef:
              name: oc-login-credentials
              key: password
        - name: OC_URL
          valueFrom:
            secretKeyRef:
              name: oc-login-credentials
              key: url
...

不幸的是,Red Hat 关于此事的文档并不是很有帮助,因为它只提供了一个示例。

Kubernetes' 文档反而更有用。

【讨论】:

    猜你喜欢
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 2016-10-20
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多