Openshift/Kubernetes 中的 Pod 调度

Pod scheduling in Openshift/Kubernetes

我想对一个 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

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

谢谢

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

我写的 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' 文档反而更有用。