Rook v1.11 版本[1] 已经发布!v1.11 是一个功能丰富的版本。主要更新如下:
Ceph-CSI v3.8
Ceph-CSI 驱动程序的 v3.8 版本[2]现在是 Rook 默认部署的版本。该驱动程序有许多重要更新,以添加更多可供客户端使用的存储功能。
RBD 读取亲和性
根据 CRUSH map 中定义的 OSD 位置和节点上的拓扑标签,RBD 卷能够从靠近客户端的 OSD 读取数据。这些卷利用 krbd 映射选项[3] 来允许提供与附近 OSD 亲和性的读取。
例如,一个集群将有三个数据副本分布在区域 A、B 和 C。如果一个 pod 在区域 A 中运行,则该 pod 现在将从区域 A 中的 OSD 读取数据,而不是选择随机读取来自其他区域。因此,可以减少跨区域的流量并降低成本。
fscrypt 支持
为 RBD 和 CephFS 卷、快照和克隆添加了 fscrypt 支持。
Shallow 卷
ROX 卷现在默认启用 Shallow 卷。这意味着 CephFS 子卷快照可以作为常规只读 PVC 公开。不会执行任何数据克隆,并且会在恒定时间内完成此类卷的配置。
Msgr2 协议
Ceph msgr2 是较新的协议,通过它可以加密或压缩网络上的数据。虽然 msgr2 已被 Rook 用于许多版本,但由于对内核有要求,我们仍未将其设为默认协议。现在我们提供了一个选项,允许集群独占启用 msgr2。这将允许在需要时配置集群以进行加密和压缩。我们建议所有具有 5.11 或更高版本内核的集群启用此功能,因为在这种情况下不再需要 msgr1 协议。
从以前版本的 Rook 升级的集群也可以启用 msgr2。升级后的集群只需要一个额外的步骤来禁用 msgr1。启用 msgr2 设置后,所有 mons 都需要进行故障转移[4] 才能开始使用 msgr2 支持,并且需要重新安装卷以获取更改。
Ceph Exporter
Ceph 引入了一个新的守护进程,用于在大型集群中收集指标的可扩展性。Ceph Exporter[5]是一个守护进程,运行在每个节点上,用于收集 Ceph 守护进程报告的性能计数器。然后,Prometheus 将为计数器抓取每个 Exporter 守护进程的指标。Ceph mgr 守护进程不再是报告指标的可扩展性瓶颈。
使用重叠网络进行镜像
在配置跨集群镜像[6]时,两个集群必须可以跨网络寻址。虽然最常见的解决方案是使用主机网络,但这并不总是需要的。现在,可以使用多集群服务 (MCS) API 跨具有重叠 CIDR 的集群配置镜像。使用全局 IP 从 Pod 到远程服务配置跨集群连接。我们已经使用Submariner Globalnet[7]测试了这个解决方案。
该解决方案需要为 mons 和 OSD 使用全局 IP,这将允许跨集群和集群内的 RADOS 操作进行通信。虽然 Rook v1.11 具有支持此配置所需的更改,但该功能将需要 Ceph 更改,该更改将与 Ceph v17.2.6 一起发布(希望很快)。
OSD 加密密钥轮换
我们一直期待增强 OSD 加密的一项功能是轮换加密密钥的能力。密钥轮换确保即使加密密钥被泄露,静态数据也不会被泄露,因为密钥经常轮换。轮换是在加密密钥上执行的,这意味着轮换时不需要重新加密数据。
在 v1.11 发布时,我们仍在对该功能进行最终审查和测试,敬请期待补丁发布!当轮换可用时,请参阅密钥管理系统[8]文档以了解使用情况。初始功能将仅支持存储在 K8s Secret 中的密钥的轮换。我们也将很快添加对 KMS 解决方案的轮换支持。
桶通知和主题
在 Rook v1.8 中,我们以实验模式发布了对象存储的Bucket 通知和主题[9]现在,在 v1.11 中,我们已将该功能声明为 stable。经社区反馈,通知和主题在生产中运行良好!
Ceph Mgr 就绪探针
Ceph Mgr 就绪探测是我们想要调用的内部改进。为了管理活动和备用 Ceph mgr 守护进程,我们之前在 mgr pod 上实现了一个 sidecar,以便在活动 Ceph mgr 发生变化时更新 mgr 服务。现在,通过在 mgr 上使用 readiness probe 简化了这一过程,这样 K8s 将自动处理保持服务与活动 mgr 的更新,不需要 sidecar 了。
Krew 插件
Rook Krew 插件[10]是我们去年创建的一个工具,用于帮助对集群进行故障排除和维护。我们希望您发现此工具有用,并期待您的反馈!最新的 Krew 插件 v0.4 版本[11] 添加了一个命令,用于帮助从多个 mon 丢失的灾难中恢复,并从单个 mon 恢复 mon quorum。
请继续关注插件的更多更新。我们正在添加更多故障排除命令,并为即将发布的新版本重新设计一些内部结构!
Kubernetes v1.21
Kubernetes v1.21 现在是 Rook 支持的最低版本,这意味着我们针对 v1.21 和更新的版本运行了 CI 测试。如果您仍然需要运行旧的 K8s 版本,我们没有采取任何措施来阻止运行 Rook,我们只是没有对旧版本进行任何测试验证。
PSP 已禁用
随着 PSP 在 K8s 1.21 中的弃用和在 1.25 中的移除,我们决定是时候在 helm chart 中默认禁用 PSP 了。我们还删除了启用 PSP 的文档,因为我们不希望再使用它们。如果您仍然需要,请参考v1.10 Rook 文档[12]。
参考资料
[1]
v1.11 版本: https://github.com/rook/rook/releases/tag/v1.11.0
[2]
Ceph-CSI 驱动程序的 v3.8 版本: https://github.com/ceph/ceph-csi/releases/tag/v3.8.0
[3]
krbd 映射选项: https://docs.ceph.com/en/latest/man/8/rbd/#kernel-rbd-krbd-options
[4]
故障转移: https://rook.io/docs/rook/latest/Storage-Configuration/Advanced/ceph-mon-health/#failing-over-a-monitor
[5]
Exporter: https://github.com/rook/rook/blob/master/design/ceph/ceph-exporter.md
[6]
镜像: https://rook.github.io/docs/rook/v1.11/Storage-Configuration/Block-Storage-RBD/rbd-mirroring/
[7]
Submariner Globalnet: https://submariner.io/getting-started/architecture/globalnet/
[8]
密钥管理系统: https://rook.github.io/docs/rook/v1.11/Storage-Configuration/Advanced/key-management-system/
[9]
Bucket 通知和主题: https://rook.io/docs/rook/latest/Storage-Configuration/Object-Storage-RGW/ceph-object-bucket-notifications/
[10]
Rook Krew 插件: https://github.com/rook/kubectl-rook-ceph
[11]
v0.4 版本: https://github.com/rook/kubectl-rook-ceph/releases/tag/v0.4.0
[12]
v1.10 Rook 文档: https://rook.io/docs/rook/v1.10/Getting-Started/Prerequisites/pod-security-policies/
- END -