2.11. Run Once Duration Override Operator
2.11.1. Run Once Duration Override Operator 概述
您可以使用 Run Once Duration Override Operator 指定运行一次 pod 的最大时间限制。
2.11.1.1. 关于 Run Once Duration Override Operator
OpenShift Container Platform 依赖于运行一次 pod 来执行诸如部署 pod 或执行构建等任务。Run-once pod 是带有 RestartPolicy
为 Never
或 OnFailure
的 pod。
集群管理员可以使用 Run Once Duration Override Operator 来强制限制这些运行一次 pod 处于活跃状态的时间。时间限制过期后,集群将尝试主动终止这些 pod。具有此类限制的主要原因是防止构建等任务运行过长的时间。
要将 Run Once Duration Override Operator 中的运行一次持续时间覆盖应用到运行一次的 pod,您必须在每个适用的命名空间中启用它。
如果运行一次的 pod 和 Run Once Duration Override Operator 都设置了其 activeDeadlineSeconds
值,则会使用这两个值中的低值。
2.11.2. Run Once Duration Override Operator 发行注记
集群管理员可以使用 Run Once Duration Override Operator 来强制对运行一次 pod 处于活跃状态的时间强制限制。时间限制过期后,集群会尝试终止运行一次的 pod。具有此类限制的主要原因是防止构建等任务运行过长的时间。
要将 Run Once Duration Override Operator 中的运行一次持续时间覆盖应用到运行一次的 pod,您必须在每个适用的命名空间中启用它。
本发行注记介绍了为 OpenShift Container Platform 的 Run Once Duration Override Operator 的开发。
有关 Run Once Duration Override Operator 的概述,请参阅关于 Run Once Duration Override Operator。
2.11.2.1. Run Once Duration Override Operator 1.0.2
发布日期:24 年 11 月 26 日
以下公告可用于 Run Once Duration Override Operator 1.0.2:
2.11.2.1.1. 程序错误修复
- 此 Run Once Duration Override Operator 发行版本解决了几个常见漏洞和暴露 (CVE)。
2.11.2.2. Run Once Duration Override Operator 1.0.1
发布日期:2023 年 10 月 26 日
以下公告可用于 Run Once Duration Override Operator 1.0.1:
2.11.2.2.1. 程序错误修复
- 此 Run Once Duration Override Operator 发行版本解决了几个常见漏洞和暴露 (CVE)。
2.11.2.3. Run Once Duration Override Operator 1.0.0
发布日期:2023 年 5 月 18 日
以下公告可用于 Run Once Duration Override Operator 1.0.0:
2.11.2.3.1. 新功能及功能增强
- 这是 Run Once Duration Override Operator 的初始可用发行版本。有关安装信息,请参阅安装 Run Once Duration Override Operator。
2.11.3. 覆盖运行一次 pod 的活动期限
您可以使用 Run Once Duration Override Operator 指定运行一次 pod 的最大时间限制。通过在命名空间上启用运行一次持续时间覆盖,以后在该命名空间中创建或更新的所有运行一次 pod 将其 activeDeadlineSeconds
字段设置为 Run Once Duration Override Operator 指定的值。
如果运行一次的 pod 和 Run Once Duration Override Operator 都设置了其 activeDeadlineSeconds
值,则会使用这两个值中的低值。
2.11.3.1. 安装 Run Once Duration Override Operator
您可以使用 Web 控制台安装 Run Once Duration Override Operator。
先决条件
-
您可以使用
cluster-admin
权限访问集群。 - 访问 OpenShift Container Platform web 控制台。
流程
- 登陆到 OpenShift Container Platform Web 控制台。
为 Run Once Duration Override Operator 创建所需的命名空间。
-
进行 Administration
Namespaces,点 Create Namespace。 -
在 Name 字段中输入
openshift-run-once-duration-override-operator
,然后点 Create。
-
进行 Administration
安装 Run Once Duration Override Operator。
-
导航至 Operators
OperatorHub。 - 在过滤器框中输入 Run Once Duration Override Operator。
- 选择 Run Once Duration Override Operator 并点 Install。
在 Install Operator 页面中:
- Update channel 设置为 stable,它会安装 Run Once Duration Override Operator 的最新稳定版本。
- 选择 A specific namespace on the cluster。
- 从 Installed namespace 下的下拉菜单中选择 openshift-run-once-duration-override-operator。
选择一个 更新批准策略。
- Automatic 策略允许 Operator Lifecycle Manager(OLM)在有新版本可用时自动更新 Operator。
- Manual 策略需要拥有适当凭证的用户批准 Operator 更新。
- 点 Install。
-
导航至 Operators
创建
RunOnceDurationOverride
实例。-
在 Operators
Installed Operators 页面中,点 Run Once Duration Override Operator。 - 选择 Run Once Duration Override 选项卡,然后点 Create RunOnceDurationOverride。
根据需要编辑设置。
在
runOnceDurationOverride
部分下,您可以更新spec.activeDeadlineSeconds
值(如果需要)。预定义的值为3600
秒,或 1 小时。- 点 Create。
-
在 Operators
验证
- 登录到 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
2.11.3.2. 在命名空间中启用运行一次持续时间覆盖
要将 Run Once Duration Override Operator 中的运行一次持续时间覆盖应用到运行一次的 pod,您必须在每个适用的命名空间中启用它。
先决条件
- 已安装 Run Once Duration Override Operator。
流程
- 登录到 OpenShift CLI。
添加标签,为命名空间启用运行一次持续时间覆盖:
$ oc label namespace <namespace> \ 1 runoncedurationoverrides.admission.runoncedurationoverride.openshift.io/enabled=true
- 1
- 指定要启用运行一次持续时间覆盖的命名空间。
在此命名空间中启用运行一次持续时间覆盖后,在此命名空间中未来创建的运行一次的 pod 会将其 activeDeadlineSeconds
字段设置为 Run Once Duration Override Operator 的覆盖值。此命名空间中的现有 pod 也会在下一次更新时将设置其 activeDeadlineSeconds
值。
验证
在启用了运行一次持续时间覆盖的命名空间中创建一个测试运行一次 pod:
apiVersion: v1 kind: Pod metadata: name: example namespace: <namespace> 1 spec: restartPolicy: Never 2 containers: - name: busybox securityContext: allowPrivilegeEscalation: false capabilities: drop: ["ALL"] runAsNonRoot: true seccompProfile: type: "RuntimeDefault" image: busybox:1.25 command: - /bin/sh - -ec - | while sleep 5; do date; done
验证 pod 是否已设置其
activeDeadlineSeconds
字段:$ oc get pods -n <namespace> -o yaml | grep activeDeadlineSeconds
输出示例
activeDeadlineSeconds: 3600
2.11.3.3. 更新运行一次活跃截止时间覆盖值
您可以自定义 Run Once Duration Override Operator 适用于运行一次的 pod 的覆盖值。预定义的值为 3600
秒,或 1 小时。
先决条件
-
您可以使用
cluster-admin
权限访问集群。 - 已安装 Run Once Duration Override Operator。
流程
- 登录到 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 会在更新时收到这个新值。
2.11.4. 卸载 Run Once Duration Override Operator
您可以通过卸载 Operator 并删除其相关资源,从 OpenShift Container Platform 中删除 Run Once Duration Override Operator。
2.11.4.1. 卸载 Run Once Duration Override Operator
您可以使用 Web 控制台卸载 Run Once Duration Override Operator。卸载 Run Once Duration Override Operator 不会取消设置运行一次的 pod 的 activeDeadlineSeconds
字段,但它不再将覆盖值应用到将来的运行一次 Pod。
先决条件
-
您可以使用
cluster-admin
权限访问集群。 - 访问 OpenShift Container Platform web 控制台。
- 已安装 Run Once Duration Override Operator。
流程
- 登陆到 OpenShift Container Platform Web 控制台。
-
导航到 Operators
Installed Operators。 -
从 Project 下拉列表中选择
openshift-run-once-duration-override-operator
。 删除
RunOnceDurationOverride
实例。- 点 Run Once Duration Override Operator 并选择 Run Once Duration Override 选项卡。
- 点 集群 条目旁的 Options 菜单 并选择 Delete RunOnceDurationOverride。
- 在确认对话框中,点 Delete。
卸载 Run Once Duration Override Operator Operator。
-
导航到 Operators
Installed Operators。 - 点 Run Once Duration Override Operator 条目旁边的 Options 菜单 ,并点 Uninstall Operator。
- 在确认对话框中,点 Uninstall。
-
导航到 Operators
2.11.4.2. 卸载 Run Once Duration Override Operator 资源
另外,在卸载 Run Once Duration Override Operator 后,您可以从集群中删除其相关资源。
先决条件
-
您可以使用
cluster-admin
权限访问集群。 - 访问 OpenShift Container Platform web 控制台。
- 您已卸载了 Run Once Duration Override Operator。
流程
- 登陆到 OpenShift Container Platform Web 控制台。
删除安装 Run Once Duration Override Operator 时创建的 CRD:
-
进入到 Administration
CustomResourceDefinitions。 -
在 Name 字段中输入
RunOnceDurationOverride
来过滤 CRD。 - 点 RunOnceDurationOverride CRD 旁边的选项菜单 ,选择 Delete CustomResourceDefinition。
- 在确认对话框中,点 Delete。
-
进入到 Administration
删除
openshift-run-once-duration-override-operator
命名空间。-
导航至 Administration
Namespaces。 -
在过滤器框中输入
openshift-run-once-duration-override-operator
。 - 点 openshift-run-once-duration-override-operator 条目旁的 Options 菜单 并选择 Delete Namespace。
-
在确认对话框中,输入
openshift-run-once-duration-override-operator
并点 Delete。
-
导航至 Administration
从启用的命名空间中删除运行一次持续时间覆盖标签。
-
导航至 Administration
Namespaces。 - 选择您的命名空间。
- 点 Labels 字段旁的 Edit。
- 删除 runoncedurationoverrides.admission.runoncedurationoverride.openshift.io/enabled=true 标签,然后点 Save。
-
导航至 Administration