搜索

2.12. Run Once Duration Override Operator

download PDF

2.12.1. Run Once Duration Override Operator 概述

您可以使用 Run Once Duration Override Operator 指定运行一次 pod 的最大时间限制。

重要

目前,OpenShift Container Platform 4.16 不提供 Run Once Duration Override Operator。计划在不久的将来发布 Operator。

2.12.1.1. 关于 Run Once Duration Override Operator

OpenShift Container Platform 依赖于运行一次 pod 来执行诸如部署 pod 或执行构建等任务。Run-once pod 是带有 RestartPolicyNeverOnFailure 的 pod。

集群管理员可以使用 Run Once Duration Override Operator 来强制限制这些运行一次 pod 处于活跃状态的时间。时间限制过期后,集群将尝试主动终止这些 pod。具有此类限制的主要原因是防止构建等任务运行过长的时间。

要将 Run Once Duration Override Operator 中的运行一次持续时间覆盖应用到运行一次的 pod,您必须在每个适用的命名空间中启用它。

如果运行一次的 pod 和 Run Once Duration Override Operator 都设置了其 activeDeadlineSeconds 值,则会使用这两个值中的低值。

2.12.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.12.2.1. Run Once Duration Override Operator 1.1.1

发布日期: 2024 年 7 月 1 日

以下公告可用于 Run Once Duration Override Operator 1.1.1: RHSA-2024:1616

2.12.2.1.1. 新功能及功能增强
  • 您可以在以 FIPS 模式运行的 OpenShift Container Platform 集群中安装和使用 Run Once Duration Override Operator。

    重要

    要为集群启用 FIPS 模式,您必须从配置为以 FIPS 模式操作的 Red Hat Enterprise Linux (RHEL) 计算机运行安装程序。有关在 RHEL 中配置 FIPS 模式的更多信息,请参阅 将 RHEL 切换到 FIPS 模式

    当以 FIPS 模式运行 Red Hat Enterprise Linux (RHEL) 或 Red Hat Enterprise Linux CoreOS (RHCOS)时,OpenShift Container Platform 核心组件使用 RHEL 加密库,在 x86_64、ppc64le 和 s390x 架构上提交到 NIST FIPS 140-2/140-3 Validation。

2.12.2.1.2. 程序错误修复
  • 此 Run Once Duration Override Operator 发行版本解决了几个常见漏洞和暴露 (CVE)。

2.12.3. 覆盖运行一次 pod 的活动期限

您可以使用 Run Once Duration Override Operator 指定运行一次 pod 的最大时间限制。通过在命名空间上启用运行一次持续时间覆盖,以后在该命名空间中创建或更新的所有运行一次 pod 将其 activeDeadlineSeconds 字段设置为 Run Once Duration Override Operator 指定的值。

重要

目前,OpenShift Container Platform 4.16 不提供 Run Once Duration Override Operator。计划在不久的将来发布 Operator。

2.12.3.1. 安装 Run Once Duration Override Operator

您可以使用 Web 控制台安装 Run Once Duration Override Operator。

先决条件

  • 您可以使用 cluster-admin 权限访问集群。
  • 访问 OpenShift Container Platform web 控制台。

流程

  1. 登陆到 OpenShift Container Platform Web 控制台。
  2. 为 Run Once Duration Override Operator 创建所需的命名空间。

    1. 进行 Administration Namespaces,点 Create Namespace
    2. Name 字段中输入 openshift-run-once-duration-override-operator,然后点 Create
  3. 安装 Run Once Duration Override Operator。

    1. 导航至 Operators OperatorHub
    2. 在过滤器框中输入 Run Once Duration Override Operator
    3. 选择 Run Once Duration Override Operator 并点 Install
    4. Install Operator 页面中:

      1. Update channel 设置为 stable,它会安装 Run Once Duration Override Operator 的最新稳定版本。
      2. 选择 A specific namespace on the cluster
      3. Installed namespace 下的下拉菜单中选择 openshift-run-once-duration-override-operator
      4. 选择一个 更新批准策略

        • Automatic 策略允许 Operator Lifecycle Manager(OLM)在有新版本可用时自动更新 Operator。
        • Manual 策略需要拥有适当凭证的用户批准 Operator 更新。
      5. Install
  4. 创建 RunOnceDurationOverride 实例。

    1. Operators Installed Operators 页面中,点 Run Once Duration Override Operator
    2. 选择 Run Once Duration Override 选项卡,然后点 Create RunOnceDurationOverride
    3. 根据需要编辑设置。

      runOnceDurationOverride 部分下,您可以更新 spec.activeDeadlineSeconds 值(如果需要)。预定义的值为 3600 秒,或 1 小时。

    4. Create

验证

  1. 登录到 OpenShift CLI。
  2. 验证所有 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.12.3.2. 在命名空间中启用运行一次持续时间覆盖

要将 Run Once Duration Override Operator 中的运行一次持续时间覆盖应用到运行一次的 pod,您必须在每个适用的命名空间中启用它。

先决条件

  • 已安装 Run Once Duration Override Operator。

流程

  1. 登录到 OpenShift CLI。
  2. 添加标签,为命名空间启用运行一次持续时间覆盖:

    $ oc label namespace <namespace> \ 1
        runoncedurationoverrides.admission.runoncedurationoverride.openshift.io/enabled=true
    1
    指定要启用运行一次持续时间覆盖的命名空间。

在此命名空间中启用运行一次持续时间覆盖后,在此命名空间中未来创建的运行一次的 pod 会将其 activeDeadlineSeconds 字段设置为 Run Once Duration Override Operator 的覆盖值。此命名空间中的现有 pod 也会在下一次更新时将设置其 activeDeadlineSeconds 值。

验证

  1. 在启用了运行一次持续时间覆盖的命名空间中创建一个测试运行一次 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
    restartPolicy 必须是 NeverOnFailure,才能是一个运行一次的 pod。
  2. 验证 pod 是否已设置其 activeDeadlineSeconds 字段:

    $ oc get pods -n <namespace> -o yaml | grep activeDeadlineSeconds

    输出示例

        activeDeadlineSeconds: 3600

2.12.3.3. 更新运行一次活跃截止时间覆盖值

您可以自定义 Run Once Duration Override Operator 适用于运行一次的 pod 的覆盖值。预定义的值为 3600 秒,或 1 小时。

先决条件

  • 您可以使用 cluster-admin 权限访问集群。
  • 已安装 Run Once Duration Override Operator。

流程

  1. 登录到 OpenShift CLI。
  2. 编辑 RunOnceDurationOverride 资源:

    $ oc edit runoncedurationoverride cluster
  3. 更新 activeDeadlineSeconds 字段:

    apiVersion: operator.openshift.io/v1
    kind: RunOnceDurationOverride
    metadata:
    # ...
    spec:
      runOnceDurationOverride:
        spec:
          activeDeadlineSeconds: 1800 1
    # ...
    1
    activeDeadlineSeconds 字段设置为所需的值,以秒为单位。
  4. 保存文件以使改变生效。

在启用了运行一次持续时间覆盖的命名空间中创建的任何运行后 pod 都会将其 activeDeadlineSeconds 字段设置为这个新值。这些命名空间中的现有运行一次 pod 会在更新时收到这个新值。

2.12.4. 卸载 Run Once Duration Override Operator

您可以通过卸载 Operator 并删除其相关资源,从 OpenShift Container Platform 中删除 Run Once Duration Override Operator。

重要

目前,OpenShift Container Platform 4.16 不提供 Run Once Duration Override Operator。计划在不久的将来发布 Operator。

2.12.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。

流程

  1. 登陆到 OpenShift Container Platform Web 控制台。
  2. 导航到 Operators Installed Operators
  3. Project 下拉列表中选择 openshift-run-once-duration-override-operator
  4. 删除 RunOnceDurationOverride 实例。

    1. Run Once Duration Override Operator 并选择 Run Once Duration Override 选项卡。
    2. 集群 条目旁的 Options 菜单 kebab 并选择 Delete RunOnceDurationOverride
    3. 在确认对话框中,点 Delete
  5. 卸载 Run Once Duration Override Operator Operator。

    1. 导航到 Operators Installed Operators
    2. Run Once Duration Override Operator 条目旁边的 Options 菜单 kebab ,并点 Uninstall Operator
    3. 在确认对话框中,点 Uninstall

2.12.4.2. 卸载 Run Once Duration Override Operator 资源

另外,在卸载 Run Once Duration Override Operator 后,您可以从集群中删除其相关资源。

先决条件

  • 您可以使用 cluster-admin 权限访问集群。
  • 访问 OpenShift Container Platform web 控制台。
  • 您已卸载了 Run Once Duration Override Operator。

流程

  1. 登陆到 OpenShift Container Platform Web 控制台。
  2. 删除安装 Run Once Duration Override Operator 时创建的 CRD:

    1. 进入到 Administration CustomResourceDefinitions
    2. Name 字段中输入 RunOnceDurationOverride 来过滤 CRD。
    3. RunOnceDurationOverride CRD 旁边的选项菜单 kebab ,选择 Delete CustomResourceDefinition
    4. 在确认对话框中,点 Delete
  3. 删除 openshift-run-once-duration-override-operator 命名空间。

    1. 导航至 Administration Namespaces
    2. 在过滤器框中输入 openshift-run-once-duration-override-operator
    3. openshift-run-once-duration-override-operator 条目旁的 Options 菜单 kebab 并选择 Delete Namespace
    4. 在确认对话框中,输入 openshift-run-once-duration-override-operator 并点 Delete
  4. 从启用的命名空间中删除运行一次持续时间覆盖标签。

    1. 导航至 Administration Namespaces
    2. 选择您的命名空间。
    3. Labels 字段旁的 Edit
    4. 删除 runoncedurationoverrides.admission.runoncedurationoverride.openshift.io/enabled=true 标签,然后点 Save
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.