这篇文章上次修改于 684 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

前言

各位读者早上好!在前面的文章里,我们介绍了Ceph作为K8s的一种可靠的持久化存储系统的优势和部署:
《用 Ceph 实现 K8s 集群数据持久化 #1》
《用 Ceph 实现 K8s 集群数据持久化 #2》
在我着手编写Ceph这个系列的第三章的时候我就萌生了一个想法——如果要介绍到Ceph在K8s里的具体应用,可能在Ceph这个系列不是这么好接,所以当时就决定将Ceph的第三章——K8s部署Ceph-CSI组件放到K8s这边来介绍。不过因为学业原因这个系列也是咕了大半年了,最近刚好有一个新的集群要部署,所以就来填一下之前没填上的坑ww。
[tip type="red"]在开始本系列内容前,请读者注意: 本博客记载的所有内容均为笔者个人实践的总结,存在时效性和一定谬误。仅供您进行参考,请客观看待内容,切忌照搬照抄。[/tip]
与之前的文章的风格相同,本系列仍将致力于将实验室和纸面上的理论搬进服务器机房和实际生产,所以我们不会堆砌太多纸面数据证明方案,如果您对方案有自己的看法也可以尝试付诸实践。

正文

实操环境声明

由于不同操作系统和机器间存在配置差异,本文默认系统环境为Ubuntu 22.04 Server,机器详情如下:

 节点名(Host)              内网IP          公网访问          硬件配置
ap-zj-storage-0       192.168.100.12        NAT             6C/12G
ap-zj-storage-1       192.168.100.11        NAT             6C/12G
ap-zj-worker-0        192.168.100.7         NAT             20C/72G
ap-zj-worker-1        192.168.100.6         NAT             20C/72G
ap-zj-master-0        192.168.100.3      直连/NAT(默认)      4C/8G
ap-zj-master-1        192.168.100.4         NAT             4C/8G
ap-zj-master-2        192.168.100.5         NAT             4C/8G

方案策略设计

网络策略(集群内)

Kubernetes集群内的IP一共有两类: Pod IP与Service IP,所以在开始部署前,我们需要考虑这两种IP的选址,笔者使用了下列网段,各位可以根据实际情况调整:

Pod IP CIDR: 10.98.64.0/18
Service IP CIDR: 10.98.0.0/18

存储策略

Ceph是一种高性能的集群化存储方案,其在K8s持久化存储方面的应用的主要形式有CephRBD和CephFS。笔者所采用的存储方案为CephFS(CSI接入),此处选择CephFS主要是基于其兼容的挂载方式多样,能满足星河对集群多节点同时读写一个PVC的需求。

节点策略

由于笔者此处部署的是生产集群,所以采用了 主节点:计算节点:存储节点=3:2:2 的部署方案,其中存储节点上不部署Kubernetes,仅部署Ceph。