Longhorn v2 Data Engine 使用实践

Longhorn 除了提供传统的 v1 Data Engine 外,还支持基于 SPDK(Storage Performance Development Kit)的 v2 Data Engine。v2 Data Engine 已在 Longhorn v1.12.0 版本中正式 GA(General Availability)。

v1 与 v2 Data Engine 的主要区别如下:

对比项 Data Engine v1 Data Engine v2
数据路径 在 Instance Manager 中运行各 Volume 的 Engine 和 Replica 进程,通常通过 iSCSI 向主机提供块设备 基于 SPDK,Replica 存储在原始块设备上的逻辑卷中,常规 blockdev 前端通过 NVMe/TCP 向主机提供块设备
节点磁盘 使用 filesystem 类型的磁盘,需要先格式化为 ext4/XFS 文件系统并挂载 使用 block 类型的磁盘,由 Longhorn 直接管理未格式化的原始块设备,优先推荐本地 NVMe
节点资源 主要根据工作负载和 Replica 数量规划资源 额外需要为 SPDK 分配内存和专用 CPU,默认预留 2 GiB HugePages
快照删除 删除 volume-head 的直接父快照后,可能先将其标记为移除,随后通过 Purge 操作清理 支持在线合并,删除操作完成后快照即被移除
功能差异 支持 strict-local 数据本地性 不支持 strict-local,但支持 v1 不具备的快速 Volume 克隆和 QoS
RWO / RWX RWO 使用块设备,普通 RWX 通过 Share Manager 提供 NFS 服务 同样支持 RWO 和普通 RWX,RWX 仍然依赖 NFS Client

本文基于 Longhorn v2 Data Engine 进行实践。

Read more

NeuVector 获取触发 SQL Injection 告警的 SQL 语句

NeuVector 内置了 SQL Injection 检测规则。当 SQL 语句匹配相应规则时,会触发 SQL Injection 告警。

可以在 Notifications -> Security Events 中查看 SQL Injection 告警:

但是,告警详情中不会直接显示触发告警的完整 SQL 语句。如果需要获取对应的 SQL 语句,以判断是否存在误报,可以通过以下方式进行排查。

Read more

Rancher Monitoring Kubernetes Dashboard 显示 No Data 排查记录

在 local 集群中安装 Rancher Monitoring 后,Grafana 中查看 Kubernetes 下的 Dashboard 显示 No data:

  • Kubernetes / Compute Resources / Pod
  • Kubernetes / Compute Resources / Cluster
  • Kubernetes / Compute Resources / Workload

与此同时,Rancher 下的 Pod、Node 等 Dashboard 能正常显示数据。

Read more

Longhorn v1 Data Engine 使用实践

Longhorn 是一款专为 Kubernetes 设计的云原生分布式存储系统,提供简单易用且高可靠的持久化存储能力。

本文基于 Longhorn v1 Data Engine 进行实践。

Read more

RKE2 + Cilium + kubeProxyReplacement + NodeLocalDNS + LRP 使用注意事项

在使用以下配置组合时,不同 RKE2 版本可能会遇到不同问题,本文对已知问题进行总结:

  • RKE2 使用 Cilium CNI
  • Cilium 启用 kubeProxyReplacement
  • 使用 RKE2 CoreDNS 的 nodelocal.enabled 配置开启 NodeLocalDNS
  • 使用 RKE2 CoreDNS 的 nodelocal.use_cilium_lrp 配置创建 Cilium LocalRedirectPolicy(LRP),将集群 DNS 的流量重定向至本节点的 node-local-dns Pod

在 Cilium 完全替代 kube-proxy 后,ClusterIP 流量由 eBPF 在进入 Pod 网络栈前处理,传统 NodeLocalDNS 依赖的 iptables 截获方式不再适用,因此需要使用 LRP。

Read more

通过 ManagedOSImage 升级 Rancher Elemental 节点

ManagedOSImage 资源用于定义需要应用到一组目标集群中各节点的操作系统镜像或镜像版本。

可以使用其来对 Elemental 节点进行 OS 升级,以及升级过程中新配置的下发。

Read more

Rancher Monitoring Node Exporter with Kube RBAC Proxy

通过 Rancher Monitoring 部署的 Node Exporter,默认会监听节点的 9796 端口。

通常情况下,任何能够访问节点 9796 端口的客户端,都可能读取 Node Exporter 暴露的指标数据,这在很多环境中不符合安全要求。

可以通过启用 Kube RBAC Proxy,将 Node Exporter 收口到 127.0.0.1:8100,对外的 9796 端口使用 HTTPS,并通过 Kubernetes TokenReview 和 SubjectAccessReview 进行身份验证与 RBAC 授权。

Read more

Rancher 收集 Profile 文件

Rancher 通过匿名导入 Go 标准库 net/http/pprof,并使用默认 HTTP mux 监听 127.0.0.1:6060。

Profile 文件可用于性能分析。当 Rancher 出现性能问题时,例如 CPU 使用率异常高、内存持续上涨、Goroutine 数量异常增加等,可以通过以下方式收集 Profile 文件进行分析。

Read more