$ oc get pods -n openshift-run-once-duration-override-operator
您可以使用 Run Once Duration Override 运算符来指定 run-once Pod 的最大活动时间限制。通过在命名空间上启用 run-once 时长覆盖,在该命名空间中创建或更新的所有未来的 run-once Pod 的 `activeDeadlineSeconds` 字段都将设置为 Run Once Duration Override 运算符指定的值。
如果 run-once Pod 和 Run Once Duration Override 运算符都设置了 `activeDeadlineSeconds` 值,则使用两者中较小的值。 |
您可以使用 Web 控制台安装 Run Once Duration Override 运算符。
您可以使用 `cluster-admin` 权限访问集群。
您可以访问 OpenShift Container Platform Web 控制台。
登录到 OpenShift Container Platform Web 控制台。
为 Run Once Duration Override 运算符创建所需的命名空间。
导航到 **管理** → **命名空间** 并单击 **创建命名空间**。
在 **名称** 字段中输入 `openshift-run-once-duration-override-operator` 并单击 **创建**。
安装 Run Once Duration Override 运算符。
导航到 **运算符** → **OperatorHub**。
在过滤器框中输入 **Run Once Duration Override Operator**。
选择 **Run Once Duration Override Operator** 并单击 **安装**。
在 **安装运算符** 页面上
**更新通道** 设置为 **稳定**,这将安装 Run Once Duration Override 运算符的最新稳定版本。
选择 **集群上的特定命名空间**。
从 **已安装命名空间** 下的下拉菜单中选择 **openshift-run-once-duration-override-operator**。
选择 **更新批准** 策略。
**自动** 策略允许运算符生命周期管理器 (OLM) 在有新版本可用时自动更新运算符。
**手动** 策略需要具有相应凭据的用户批准运算符更新。
单击 **安装**。
创建RunOnceDurationOverride
实例。
在**操作符** → **已安装的操作符**页面,点击**Run Once Duration Override 操作符**。
选择**Run Once Duration Override**选项卡,然后点击**创建 RunOnceDurationOverride**。
根据需要编辑设置。
在runOnceDurationOverride
部分,您可以根据需要更新spec.activeDeadlineSeconds
的值。预设值为3600
秒,即1小时。
点击**创建**。
登录OpenShift CLI。
验证所有Pod是否已创建并正常运行。
$ oc get pods -n openshift-run-once-duration-override-operator
NAME READY STATUS RESTARTS AGE
run-once-duration-override-operator-7b88c676f6-lcxgc 1/1 Running 0 7m46s
runoncedurationoverride-62blp 1/1 Running 0 41s
runoncedurationoverride-h8h8b 1/1 Running 0 41s
runoncedurationoverride-tdsqk 1/1 Running 0 41s
要将Run Once Duration Override操作符的运行一次持续时间覆盖应用于运行一次Pod,必须在每个适用的命名空间中启用它。
Run Once Duration Override 操作符已安装。
登录OpenShift CLI。
添加标签以将运行一次持续时间覆盖启用到您的命名空间
$ oc label namespace <namespace> \ (1)
runoncedurationoverrides.admission.runoncedurationoverride.openshift.io/enabled=true
1 | 指定要启用运行一次持续时间覆盖的命名空间。 |
在启用此命名空间的运行一次持续时间覆盖后,在此命名空间中创建的未来运行一次Pod的activeDeadlineSeconds
字段将设置为Run Once Duration Override操作符中的覆盖值。此命名空间中现有的Pod在下次更新时也将设置其activeDeadlineSeconds
值。
在您已启用运行一次持续时间覆盖的命名空间中创建一个测试运行一次Pod
apiVersion: v1
kind: Pod
metadata:
name: example
namespace: <namespace> (1)
spec:
restartPolicy: Never (2)
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
containers:
- name: busybox
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop: [ALL]
image: busybox:1.25
command:
- /bin/sh
- -ec
- |
while sleep 5; do date; done
1 | 将<namespace> 替换为您的命名空间名称。 |
2 | 要成为运行一次Pod,restartPolicy 必须为Never 或OnFailure 。 |
验证Pod是否已设置其activeDeadlineSeconds
字段
$ oc get pods -n <namespace> -o yaml | grep activeDeadlineSeconds
activeDeadlineSeconds: 3600
您可以自定义Run Once Duration Override操作符应用于运行一次Pod的覆盖值。预设值为3600
秒,即1小时。
您可以使用 `cluster-admin` 权限访问集群。
您已安装Run Once Duration Override操作符。
登录OpenShift CLI。
编辑RunOnceDurationOverride
资源
$ oc edit runoncedurationoverride cluster
更新activeDeadlineSeconds
字段
apiVersion: operator.openshift.io/v1
kind: RunOnceDurationOverride
metadata:
# ...
spec:
runOnceDurationOverride:
spec:
activeDeadlineSeconds: 1800 (1)
# ...
1 | 将activeDeadlineSeconds 字段设置为所需的秒数值。 |
保存文件以应用更改。
在已启用运行一次持续时间覆盖的命名空间中创建的任何未来运行一次Pod都将将其activeDeadlineSeconds
字段设置为此新值。这些命名空间中现有的运行一次Pod将在更新时收到此新值。