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' 文档反而更有用。
我想对一个 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' 文档反而更有用。