集装箱平台行动的特殊情况

本主题介绍某些类型的容器平台工作负载的操作处理机制。

对有拓扑扩展限制的 pod 禁用移动操作

目前,Turbonomic 不支持使用 DoNotSchedulewhenUnsatisfiable 设置的 拓扑扩展约束移动 pod。 这些 pod 应用了容器平台中自动生成的策略,该策略禁止 pod 移动操作。

在提供支持之前,Turbonomic 阻止以下列方式自动执行 pod 移动操作。

  • Turbonomic 将每个群集中受影响的 pod 添加到名为 TopologySpreadConstraint Pods 的组中。 该组应用名为 TopologySpreadConstraint Pods Move DisabledTurbonomic 只读策略,该策略将 pod 移动操作的操作接受模式设置为 Disabled

  • 对于受影响 pod 运行的节点,Turbonomic 会将这些节点添加到名为 TopologySpreadConstraint Nodes 的组中。 该组应用名为 TopologySpreadConstraint Nodes Suspend DisabledTurbonomic 只读策略,该策略将节点暂停操作的操作接受模式设置为 Disabled

对某些受控 pod 只推荐移动操作

要使受控 pod(非裸 pod)可移动,必须使用以下用于管理工作负载的内置 API 对其进行控制:

  • Deployment
  • DeploymentConfig
  • ReplicaSet
  • ReplicationController

对于以其他方式控制的 pod,Turbonomic会将每个群集中受影响的 pod 添加到名为 "Unmovable ContainerPods的组中。 该组应用名为 Unmovable ContainerPods Move Recommend OnlyTurbonomic 只读策略,该策略将 pod 移动操作的操作接受模式设置为 Recommend 。 这意味着您只能在 Turbonomic 之外执行 pod 移动操作。

只推荐StatefulSetpod 的移动操作

目前,Turbonomic不支持移动StatefulSetpod。 这些 pod 应用容器平台中自动生成的策略,该策略将 pod 移动操作的操作接受模式设置为仅推荐。

在提供支持之前,Turbonomic 通过将每个群集中受影响的 pod 添加到名为 StatefulSet/All Pods 的组中,防止自动执行 pod 移动操作。 该组应用名为 StatefulSet Pods Move Recommended OnlyTurbonomic 只读策略,该策略将 pod 移动操作的操作接受模式设置为 Recommend 。 这意味着您只能在 Turbonomic 之外执行 pod 移动操作。

只推荐调整侧载容器规格大小的操作

容器平台服务可能包括侧载容器规范,以便为运行中的 pod 提供额外服务,如安全或日志服务。 在 Pod 创建时注入的 Sidecar 无法从父工作负载控制器进行更新,因为限制或请求由另一个工作负载控制器控制。 由于不存在 sidecar 规范,调整大小操作失败。

为了防止在注入的 Sidecar 上执行调整大小的操作, Turbonomic将每个集群中的 Sidecar 添加到名为Injected Sidecars/All ContainerSpecs。 该组应用名为 Injected Sidecars/All ContainerSpecs Resize Recommend Only [cluster_name]Turbonomic 只读策略,该策略将调整大小的操作接受模式设置为 Recommend 。 这意味着您只能在 Turbonomic 之外执行大小调整。 父工作负载控制器将继续照常调整非 sidecar 容器规格的大小。

对于在Turbonomic中无法调整大小的容器规格,只推荐调整大小的操作

要在Turbonomic 中调整容器规格的大小,必须通过以下用于管理工作负载的内置 API 进行控制:

  • DaemonSet
  • Deployment
  • DeploymentConfig
  • ReplicaSet
  • ReplicationController
  • StatefulSet

对于由其他 API 控制的容器规范(例如由 "CronJob或 "Job"控制),Turbonomic会将每个群集中受影响的容器规范添加到名为 "Unresizable ContainerSpecs的组中。 该组应用名为 "Unresizable ContainerSpecs Resize Recommend OnlyTurbonomic只读策略,它将容器规范调整大小操作的操作接受模式设置为 "建议"。 这意味着只能在Turbonomic 外部执行调整大小的操作。

注:

有关由自定义资源(或操作符)控制的容器规范,请参阅下一节。

对于操作员控制的工作负载,只推荐调整大小的操作

对于集群中由操作员控制的工作负载,Kubeturbo 会自动创建一个名为Operator Controlled ContainerSpecs。 该组应用名为 Operator Controlled ContainerSpecs Resize Recommend Only [cluster_name]Turbonomic 只读策略,该策略将调整大小的操作接受模式设置为 Recommend 。 这意味着您只能在 Turbonomic 之外执行大小调整。

Turbonomic防止或阻止创建自动执行调整大小操作的冲突策略。

当部署 ORM 时, Turbonomic 不会阻止或阻止操作,您可以为这些工作负载执行调整大小操作。

通过在 configmap 中定义的排除列表中添加这些工作负载,您就可以从 Turbonomic 中对特定操作员控制的工作负载执行调整大小操作,具体步骤如下:

为了OperatorHub或 Kubeturbo 的操作员部署,更新kubeturbo-release自定义资源 (CR)。

  1. 编辑 kubeturbo-release

    kubectl edit kubeturbo kubeturbo-release
  2. 在里面exclusionDetectors部分中,使用以下一个或两个参数来排除工作负载:

    • operatorControlledWorkloadsPatterns– 指定工作负载名称模式。

    • operatorControlledNamespacePatterns– 指定命名空间名称模式。

    spec:
      exclusionDetectors:
        operatorControlledWorkloadsPatterns:
        - turbon.*
        - testing-.*
        operatorControlledNamespacePatterns:
        - turbonomic
        - gke-.*
  3. 验证configmap已更新。

    有两种方法可以验证更新。

    • 检查configmap

      kubectl get configmap turbo-config-kubeturbo-release -o yaml

      在输出中,turbo-autoreload.config部分显示更新。

      apiVersion: v1
      data:
        turbo-autoreload.config: |-
          {
           ...
            },
            "exclusionDetectors": {
              "operatorControlledWorkloadsPatterns": ["turbon.*","testing-.*"],
              "operatorControlledNamespacePatterns": ["turbonomic","gke-.*"]
            }
          }
    • 检查 Kubeturbo 日志。

      kubectl logs kubeturbo-release-7cb4b886c5-glv9b | grep exclusion

      日志条目显示更新。

      I1122 14:43:07.603989 dynamic_config.go:119] Operator controlled workload exclusion set to: []
      I1122 14:43:07.604013 dynamic_config.go:125] Operator controlled namespace exclusion set to: [turbonomic]
      I1122 19:14:52.314970 dynamic_config.go:119] Operator controlled workload exclusion set to: [turbon.* testing-.*]
      I1122 19:14:52.315096 dynamic_config.go:125] Operator controlled namespace exclusion set to: [turbonomic gke-.*]

禁用系统命名空间工作负载的调整大小操作

Turbonomic禁用对知名系统命名空间中的工作负载进行调整大小的操作,例如以kube-.*openshift-.* , 或者cattle.*。 Kubeturbo 中的设置configmap自动创建一个名为System Namespaced ContainerSpecs在每个集群中。 该组应用名为 System Namespaced ContainerSpecs Resize Disabled [cluster_name]Turbonomic 只读策略,该策略将调整大小的操作接受模式设置为 Disabled

为了OperatorHub或 Kubeturbo 的操作员部署,更新kubeturbo-release自定义资源 (CR)。

  1. 编辑 kubeturbo-release

    kubectl edit kubeturbo kubeturbo-release
  2. 在里面namespacePatterns部分,添加命名空间的名称模式。

    spec:
      systemWorkloadDetectors:
        namespacePatterns:
        - kube-.*
        - openshift-.*
        - cattle.*

    对于匹配的命名空间, Turbonomic将所有发现的工作负载添加到System Namespaced ContainerSpecs团体。

  3. 验证configmap已更新。

    有两种方法可以验证更新。

    • 检查configmap

      kubectl get configmap turbo-config-kubeturbo-release -o yaml

      在输出中,turbo-autoreload.config部分显示更新。

      apiVersion: v1
      data:
        turbo-autoreload.config: |-
          {
           ...
            },
            "systemWorkloadDetectors": {
              "namespacePatterns": ["kube-.*","openshift-.*","cattle.*"]
            }
          }
    • 检查 Kubeturbo 日志。

      kubectl logs kubeturbo-release-7cb4b886c5-glv9b | grep -i "namespace det"

      日志条目显示更新。

      I1122 14:43:07.603966 dynamic_config.go:113] System Namespace detectors set to: [kube-.*]
      I1122 19:14:52.314883 dynamic_config.go:113] System Namespace detectors set to: [kube-.* openshift-.* cattle.*]

节点池和MachineSets最小和最大节点数

Turbonomic根据不断变化的需求管理集群资源,并提出建议条款并暂停节点池中的节点。 这些操作的默认最小节点数为 1,最大节点数为 100,如configmap

data:
  turbo-autoreload.config: |-
    {
      "nodePoolSize": {
        "min": 1,
        "max": 1000

您可以调整所有发现的默认节点数Red Hat OpenShiftMachineSets在里面Red Hat OpenShift簇。

注:

Turbonomic不会从 0 开始增加节点数,并假设你有办法创建MachineSet。

  1. 编辑 kubeturbo-release

    oc edit kubeturbo kubeturbo-release
  2. 在里面nodePoolSize部分中,更新值,如下例所示。 您可指定最小值 0。

    spec:
      nodePoolSize:
        max: 100
        min: 2
  3. 验证configmap已更新。

    oc get configmap turbo-config-kubeturbo-release -o yaml

    在输出中,turbo-autoreload.config部分显示更新。

    data:
      turbo-autoreload.config: |-
        {
          "nodePoolSize": {
            "min": 2,
            "max": 100