在 Kubernetes 基础设施节点上隔离日志组件
本指南说明如何使用 label、taint 和 node selector,将日志相关的基础设施组件隔离到专用的 Kubernetes 基础设施节点上。
目录
目标前提条件检查 Local PV 和 nodeAffinity将 Kafka/ZooKeeper 节点加入基础设施节点将日志组件迁移到基础设施节点ElasticsearchKafkaZooKeeperClickHouselanayarazor其他任何日志组件驱逐已经运行在基础设施节点上的非基础设施工作负载故障排查目标
- 隔离资源:避免与业务工作负载发生资源争用。
- 增强稳定性:减少驱逐和调度冲突。
- 简化管理:使用一致的调度规则集中管理基础设施组件。
前提条件
- kubectl 已针对目标集群完成配置。
- 基础设施组件没有通过 local-PV nodeAffinity 绑定到节点,或者你已经考虑了这些节点(见下文)。
- 通过参考 集群节点规划 来规划基础设施节点。
在 Alauda OS 节点上,本地存储路径位于 /var/cpaas 下,例如 /var/cpaas/data/clickhouse 或 /var/cpaas/data/elasticsearch。这些节点是不可变的,传统操作系统的 /cpaas 目录在这些节点上不可写。规划基础设施节点时,应确保 /var/cpaas 路径由可在节点重新预配后仍然保留的数据盘提供支持,并且这些节点上的 pv.spec.local.path 应引用 /var/cpaas 路径,而不是下文示例中显示的 /cpaas 路径。关于各插件字段,请参见 Installation。
检查 Local PV 和 nodeAffinity
如果你的组件使用本地存储(例如 TopoLVM、local PV),请确认 PV 是否设置了 spec.nodeAffinity。如果设置了,则需要:
- 将
pv.spec.nodeAffinity中引用的所有节点都加入基础设施节点组,或者 - 使用不带 node affinity 的 storage class 重新部署组件(例如 Ceph/RBD)。
示例(Elasticsearch):
如果 PV 显示:
则表示 Elasticsearch 数据固定在节点 192.168.135.243 上。请确保该节点属于基础设施节点组,或者迁移存储。
将 Kafka/ZooKeeper 节点加入基础设施节点
由于历史原因,请确保 Kafka 和 ZooKeeper 节点也被标记/taint 为 infra:
将日志组件迁移到基础设施节点
ACP 日志组件默认容忍 infra taint。使用 nodeSelector 将工作负载固定到基础设施节点上。
Elasticsearch
Kafka
ZooKeeper
ClickHouse
lanaya
razor
其他任何日志组件
驱逐已经运行在基础设施节点上的非基础设施工作负载
如果某些非基础设施 Pod 仍在基础设施节点上运行,可通过更新这些工作负载(例如修改 annotation)触发重新调度,或者添加/调整 selector 以排除基础设施节点。
故障排查
常见问题与修复方法:
错误示例:
修复方法:为该工作负载添加匹配的 toleration。