This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.12.2. 使用污点和容限来控制日志记录 pod 放置
通过污点和容限,节点可以控制哪些 pod 应该(或不应该)调度到节点上。
12.2.1. 了解污点和容限
通过使用污点(taint),节点可以拒绝调度 pod,除非 pod 具有匹配的容限(toleration)。
					您可以通过节点规格(NodeSpec)将污点应用到节点,并通过 Pod 规格(PodSpec)将容限应用到 pod。当您应用污点时,调度程序无法将 pod 放置到该节点上,除非 pod 可以容限该污点。
				
节点规格中的污点示例
Pod 规格中的容限示例
污点与容限由 key、value 和 effect 组成。
| 参数 | 描述 | ||||||
|---|---|---|---|---|---|---|---|
| 
									 | 
									 | ||||||
| 
									 | 
									 | ||||||
| 
									 | effect 的值包括: 
 | ||||||
| 
									 | 
 | 
- 如果向 control plane 节点添加了一个 - NoSchedule污点,节点必须具有- node-role.kubernetes.io/master=:NoSchedule污点,这默认会添加。- 例如: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
容限与污点匹配:
- 如果 - operator参数设为- Equal:- 
									key参数相同;
- 
									value参数相同;
- 
									effect参数相同。
 
- 
									
- 如果 - operator参数设为- Exists:- 
									key参数相同;
- 
									effect参数相同。
 
- 
									
OpenShift Container Platform 中内置了以下污点:
- 
							node.kubernetes.io/not-ready:节点未就绪。这与节点状况Ready=False对应。
- 
							node.kubernetes.io/unreachable:节点无法从节点控制器访问。这与节点状况Ready=Unknown对应。
- 
							node.kubernetes.io/memory-pressure:节点存在内存压力问题。这与节点状况MemoryPressure=True对应。
- 
							node.kubernetes.io/disk-pressure:节点存在磁盘压力问题。这与节点状况DiskPressure=True对应。
- 
							node.kubernetes.io/network-unavailable:节点网络不可用。
- 
							node.kubernetes.io/unschedulable:节点不可调度。
- 
							node.cloudprovider.kubernetes.io/uninitialized:当节点控制器通过外部云提供商启动时,在节点上设置这个污点来将其标记为不可用。在云控制器管理器中的某个控制器初始化这个节点后,kubelet 会移除此污点。
- node.kubernetes.io/pid-pressure:节点具有 pid 压力。这与节点状况- PIDPressure=True对应。重要- OpenShift Container Platform 不设置默认的 pid.available - evictionHard。
12.2.2. 使用容忍度来控制日志存储 pod 放置
默认情况下,日志存储 pod 具有以下容限配置:
Elasticsearch 日志存储 pod 默认容限
LokiStack 日志存储 pod 默认容限
					您可以通过添加污点,然后在 ClusterLogging 自定义资源 (CR) 中修改 tolerations 语法,为日志存储 pod 配置容限。
				
先决条件
- 已安装 Red Hat OpenShift Logging Operator。
- 
							已安装 OpenShift CLI(oc)。
- 您已部署了内部日志存储,可以是 Elasticsearch 或 LokiStack。
流程
- 运行以下命令,将污点添加到要在其上调度日志记录 pod 的节点: - oc adm taint nodes <node_name> <key>=<value>:<effect> - $ oc adm taint nodes <node_name> <key>=<value>:<effect>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 示例命令 - oc adm taint nodes node1 lokistack=node:NoExecute - $ oc adm taint nodes node1 lokistack=node:NoExecute- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 本例在 - node1上放置一个键为- lokistack的污点,值为- node,污点效果是- NoExecute。具有- NoExecute效果的节点仅调度与污点匹配的 Pod,并删除不匹配的现有 pod。
- 编辑 - ClusterLoggingCR 的- logstore部分,以配置日志存储 pod 的容忍度:- ClusterLoggingCR 示例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
					此容忍度与 oc adm taint 命令创建的污点匹配。具有此容忍度的 pod 可以调度到 node1 上。
				
12.2.3. 使用容忍度来控制日志可视化 pod 放置
您可以使用不在其他 Pod 上的特定键/值对来确保只有 Kibana Pod 可以在指定节点上运行。
先决条件
- 
							已安装 Red Hat OpenShift Logging Operator、OpenShift Elasticsearch Operator 和 OpenShift CLI (oc)。
流程
- 运行以下命令,将污点添加到要在其上调度日志可视化 pod 的节点: - oc adm taint nodes <node_name> <key>=<value>:<effect> - $ oc adm taint nodes <node_name> <key>=<value>:<effect>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 示例命令 - oc adm taint nodes node1 kibana=node:NoExecute - $ oc adm taint nodes node1 kibana=node:NoExecute- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 本例在 - node1上放置一个键为- kibana且值为- node的污点,污点效果是- NoExecute。您必须使用- NoExecute污点设置。- NoExecute仅调度与污点匹配的 pod,并删除不匹配的现有 pod。
- 编辑 - ClusterLoggingCR 的- visualization部分,以配置 Kibana pod 的容忍度:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
					此容忍度与 oc adm taint 命令创建的污点匹配。具有此容限的 pod 可以调度到 node1 上。
				
12.2.4. 使用容忍度来控制日志收集器 pod 放置
					默认情况下,日志收集器 pod 具有以下 tolerations 配置:
				
先决条件
- 
							已安装 Red Hat OpenShift Logging Operator 和 OpenShift CLI (oc)。
流程
- 运行以下命令,将污点添加到要在其上调度日志记录收集器 pod 的节点: - oc adm taint nodes <node_name> <key>=<value>:<effect> - $ oc adm taint nodes <node_name> <key>=<value>:<effect>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 示例命令 - oc adm taint nodes node1 collector=node:NoExecute - $ oc adm taint nodes node1 collector=node:NoExecute- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 本例在 - node1上放置一个键为- collector且值为- node的污点,污点效果是- NoExecute。您必须使用- NoExecute污点设置。- NoExecute仅调度与污点匹配的 pod,并删除不匹配的现有 pod。
- 编辑 - ClusterLogging自定义资源(CR)的- collection小节,以配置日志记录收集器 Pod 的容忍度:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
					此容忍度与 oc adm taint 命令创建的污点匹配。具有此容忍度的 pod 可以调度到 node1 上。