在 Kubernetes Infra 节点上隔离日志组件
本指南说明如何通过标签、污点和节点选择器,将与日志相关的基础设施组件隔离到专用的 Kubernetes infra 节点上。
目录
目标前提条件检查 Local PV 和 nodeAffinity将 Kafka/ZooKeeper 节点加入 infra 节点将日志组件迁移到 Infra 节点ElasticsearchKafkaZooKeeperClickHouselanayarazor其他日志组件驱逐已在 infra 节点上运行的非 infra 工作负载故障排除目标
- 隔离资源:防止与业务工作负载发生资源争用。
- 保证稳定性:减少驱逐和调度冲突。
- 简化管理:通过一致的调度规则集中管理基础设施组件。
前提条件
- 已配置好指向目标集群的 kubectl。
- 基础设施组件未通过 local-PV nodeAffinity 绑定到节点,或者您已考虑到这些节点(见下文)。
- 参考 Cluster Node Planning 规划基础设施节点。
检查 Local PV 和 nodeAffinity
如果您的组件使用本地存储(例如 TopoLVM、本地 PV),请确认 PV 是否具有 spec.nodeAffinity。如果有,则需要:
- 将所有由
pv.spec.nodeAffinity引用的节点加入 infra 节点组,或者 - 重新部署使用无节点亲和性的存储类的组件(例如 Ceph/RBD)。
示例(Elasticsearch):
如果 PV 显示:
则表示 Elasticsearch 数据被固定在节点 192.168.135.243。请确保该节点属于 infra 节点组,或迁移存储。
将 Kafka/ZooKeeper 节点加入 infra 节点
由于历史原因,请确保 Kafka 和 ZooKeeper 节点也被标记/污点为 infra:
将日志组件迁移到 Infra 节点
ACP 日志组件默认容忍 infra 污点。使用 nodeSelector 将工作负载固定到 infra 节点。
Elasticsearch
Kafka
ZooKeeper
ClickHouse
lanaya
razor
其他日志组件
驱逐已在 infra 节点上运行的非 infra 工作负载
如果有非 infra Pod 仍在 infra 节点上运行,可通过更新这些工作负载(例如修改注解)或添加选择器以排除 infra 节点,触发重新调度。
故障排除
常见问题及解决方案:
示例错误:
解决方法:给工作负载添加匹配的容忍。