集装箱平台行动的特殊情况
本主题介绍某些类型的容器平台工作负载的操作处理机制。
对有拓扑扩展限制的 pod 禁用移动操作
目前,Turbonomic 不支持使用 DoNotSchedule 为 whenUnsatisfiable 设置的 拓扑扩展约束移动 pod。 这些 pod 应用了容器平台中自动生成的策略,该策略禁止 pod 移动操作。
在提供支持之前,Turbonomic 阻止以下列方式自动执行 pod 移动操作。
Turbonomic 将每个群集中受影响的 pod 添加到名为
TopologySpreadConstraint Pods的组中。 该组应用名为TopologySpreadConstraint Pods Move Disabled的 Turbonomic 只读策略,该策略将 pod 移动操作的操作接受模式设置为 Disabled 。对于受影响 pod 运行的节点,Turbonomic 会将这些节点添加到名为
TopologySpreadConstraint Nodes的组中。 该组应用名为TopologySpreadConstraint Nodes Suspend Disabled的 Turbonomic 只读策略,该策略将节点暂停操作的操作接受模式设置为 Disabled 。
对某些受控 pod 只推荐移动操作
要使受控 pod(非裸 pod)可移动,必须使用以下用于管理工作负载的内置 API 对其进行控制:
DeploymentDeploymentConfigReplicaSetReplicationController
对于以其他方式控制的 pod,Turbonomic会将每个群集中受影响的 pod 添加到名为 "Unmovable ContainerPods的组中。 该组应用名为 Unmovable
ContainerPods Move Recommend Only 的 Turbonomic 只读策略,该策略将 pod 移动操作的操作接受模式设置为 Recommend 。 这意味着您只能在 Turbonomic 之外执行 pod 移动操作。
只推荐StatefulSetpod 的移动操作
目前,Turbonomic不支持移动StatefulSetpod。 这些 pod 应用容器平台中自动生成的策略,该策略将 pod 移动操作的操作接受模式设置为仅推荐。
在提供支持之前,Turbonomic 通过将每个群集中受影响的 pod 添加到名为 StatefulSet/All Pods 的组中,防止自动执行 pod 移动操作。 该组应用名为 StatefulSet Pods Move Recommended Only 的 Turbonomic 只读策略,该策略将 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 进行控制:
DaemonSetDeploymentDeploymentConfigReplicaSetReplicationControllerStatefulSet
对于由其他 API 控制的容器规范(例如由 "CronJob或 "Job"控制),Turbonomic会将每个群集中受影响的容器规范添加到名为 "Unresizable
ContainerSpecs的组中。 该组应用名为 "Unresizable ContainerSpecs Resize Recommend Only的Turbonomic只读策略,它将容器规范调整大小操作的操作接受模式设置为 "建议"。 这意味着只能在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)。
编辑
kubeturbo-release。kubectl edit kubeturbo kubeturbo-release在里面
exclusionDetectors部分中,使用以下一个或两个参数来排除工作负载:operatorControlledWorkloadsPatterns– 指定工作负载名称模式。operatorControlledNamespacePatterns– 指定命名空间名称模式。
spec: exclusionDetectors: operatorControlledWorkloadsPatterns: - turbon.* - testing-.* operatorControlledNamespacePatterns: - turbonomic - gke-.*验证
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)。
编辑
kubeturbo-release。kubectl edit kubeturbo kubeturbo-release在里面
namespacePatterns部分,添加命名空间的名称模式。spec: systemWorkloadDetectors: namespacePatterns: - kube-.* - openshift-.* - cattle.*对于匹配的命名空间, Turbonomic将所有发现的工作负载添加到
System Namespaced ContainerSpecs团体。验证
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。
编辑
kubeturbo-release。oc edit kubeturbo kubeturbo-release在里面
nodePoolSize部分中,更新值,如下例所示。 您可指定最小值 0。spec: nodePoolSize: max: 100 min: 2验证
configmap已更新。oc get configmap turbo-config-kubeturbo-release -o yaml在输出中,
turbo-autoreload.config部分显示更新。data: turbo-autoreload.config: |- { "nodePoolSize": { "min": 2, "max": 100