Cron Openshift/Kubernetes中的Pod调度

Cron Openshift/Kubernetes中的Pod调度,cron,openshift,schedule,kubernetes-pod,Cron,Openshift,Schedule,Kubernetes Pod,我想对pod应用一个每日时间表,以便它在上午9点创建,并在晚上9点销毁 我相信这是可能的使用两个几乎相同的cronjob设置适当的时间表 作业将创建一个pod,该pod将分别在早上和晚上运行以下命令: ... command: ["oc scale dc my-dc", "--replicas=1"] # The command to execute in the pod ... 要执行这些命令,我计划使用此映像,因为它随Openshift CLI一起安装: 有人能提出执行这项任务的建议吗?

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

我相信这是可能的使用两个几乎相同的cronjob设置适当的时间表

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

...
command: ["oc scale dc my-dc",  "--replicas=1"] # The command to execute in the pod
...
要执行这些命令,我计划使用此映像,因为它随Openshift CLI一起安装:

有人能提出执行这项任务的建议吗? 有哪些方面我没有考虑过?


谢谢

我将分享对我有效的方法

我编写的CronJob基于image创建了一个容器(记住使用右标记指定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 ;
...
。。。
规格:
容器:
-姓名:oc cli
图片:“registry.access.redhat.com/openshift3/ose cli:v3.11.153”-
oc登录https:///
--不安全跳过tls验证-u-p;oc标度
dc/示例——副本=1-n cronjob测试;
...
显式写入密码可能是个问题,因此我在同一个CronJob中添加了一个Secret并对其进行了引用,以便Secret数据成为环境变量的一部分:

...
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
...
。。。
规格:
容器:
-姓名:oc cli
图片:“registry.access.redhat.com/openshift3/ose cli:v3.11.153”-
oc login$oc_URL--不安全的跳过tls验证-u$oc_用户-p
$OC_密码;oc比例dc/示例--副本=5-n
cronjob测试;
环境:
-姓名:OC_用户
价值来源:
secretKeyRef:
名称:oc登录凭据
关键字:用户名
-姓名:OC_密码
价值来源:
secretKeyRef:
名称:oc登录凭据
密钥:密码
-名称:OC_URL
价值来源:
secretKeyRef:
名称:oc登录凭据
关键字:url
...
不幸的是,'的文件对这个问题不是很有帮助,因为它只提供了一个例子


'相反,文档更有用。

我认为您的问题的答案可以在这里找到:这描述了如何创建在集群中运行的cronjob资源谢谢,但我已经知道如何编写cronjob了。我知道我必须在一个容器中运行一个
oc
命令,我一直在寻找如何做到这一点的建议。
...
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
...