从头开始搭建 K8S 集群并使用 Ceph 存储

随着云计算技术的发展,Kubernetes(简称 K8S)作为一个用于自动化部署、扩展和管理容器化应用的开源平台,成为管理容器化应用的首选方案。而 Ceph 是一个分布式存储系统,提供了高性能、高可靠性和可扩展性的存储解决方案。本文将介绍如何在 K8S 上搭建一个具备 Ceph 存储的集群。

整体流程如下:
1. 准备硬件和网络环境
2. 安装和配置 Ceph
3. 部署 Kubernetes 集群
4. 集成 Ceph 存储

接下来,我们将逐步介绍每一步的具体操作。

### 1. 准备硬件和网络环境

在开始之前,确保你有以下硬件和网络环境:
- 至少3个具有一定计算和存储能力的机器,用于创建 Ceph 集群。这些机器最好是物理机,而不是虚拟机。
- 一台用于部署 Kubernetes 集群的机器。
- 所有机器之间的网络互通。

### 2. 安装和配置 Ceph

在这一步中,我们将安装和配置 Ceph 集群。具体操作如下:
1. 在每个节点上安装 Ceph 软件包:
```shell
$ sudo apt-get install ceph ceph-deploy
```
2. 使用 ceph-deploy 工具创建一个新的 Ceph 集群。假设我们有三个节点:node1、node2 和 node3,分别作为 monitor、osd 和 mds。
```shell
$ mkdir ceph-cluster
$ cd ceph-cluster
$ ceph-deploy new node1 node2 node3
```
3. 修改生成的 ceph.conf 文件,设置 monitor 的 IP 地址和其他配置参数:
```shell
$ vim ceph.conf
```
4. 在所有节点上进行初始化操作:
```shell
$ ceph-deploy install node1 node2 node3
$ ceph-deploy mon create-initial
```
5. 在 OSD 节点上创建 OSD,并启动守护进程:
```shell
$ ceph-deploy osd create --data /dev/sdb node2
$ ceph-deploy osd create --data /dev/sdb node3
$ ceph-deploy admin node1 node2 node3
$ sudo chmod +r /etc/ceph/ceph.client.admin.keyring
```

至此,我们已经完成了 Ceph 集群的部署和配置。

### 3. 部署 Kubernetes 集群

在这一步中,我们将使用 kubeadm 工具部署 Kubernetes 集群。具体操作如下:
1. 在每个节点上安装 Docker 和 kubeadm:
```shell
$ sudo apt-get install docker.io
$ sudo systemctl enable docker
$ sudo apt-get install kubeadm kubelet kubectl
$ sudo systemctl enable kubelet
```
2. 在其中一个节点上初始化 Kubernetes 控制平面(master):
```shell
$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16
```
3. 将产生的 join 命令保存下来,用于将其他节点加入集群:
```shell
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
```
4. 在其他节点上运行 join 命令,将其加入集群:
```shell
$ kubeadm join : --token --discovery-token-ca-cert-hash
```

完成以上操作后,我们已经完成了 Kubernetes 集群的部署。

### 4. 集成 Ceph 存储

在这一步中,我们将使用 Rook 这个 Kubernetes Operator 来集成 Ceph 存储。具体操作如下:
1. 部署 Rook Operator:
```shell
$ kubectl create -f https://raw.githubusercontent.com/rook/rook/release-1.5/cluster/examples/kubernetes/ceph/operator.yaml
```
2. 创建 Rook Ceph Cluster:
```shell
$ kubectl create -f https://raw.githubusercontent.com/rook/rook/release-1.5/cluster/examples/kubernetes/ceph/cluster.yaml
```
3. 创建 Rook Block Storage:
```shell
$ kubectl create -f https://raw.githubusercontent.com/rook/rook/release-1.5/cluster/examples/kubernetes/ceph/block.yaml
```
4. 创建 Rook File System:
```shell
$ kubectl create -f https://raw.githubusercontent.com/rook/rook/release-1.5/cluster/examples/kubernetes/ceph/filesystem.yaml
```

至此,我们已经成功集成了 Ceph 存储。

总结:

本文介绍了如何在 Kubernetes 上搭建一个带有 Ceph 存储的集群。具体步骤包括准备硬件和网络环境、安装和配置 Ceph、部署 Kubernetes 集群以及集成 Ceph 存储。希望这篇文章能够帮助刚入行的小白了解如何实现关键词 K8S 和 Ceph 集群的搭建和使用。

(以上为示例代码,实际操作中可能需要根据具体环境进行相应的修改和调整)