## 部署 K8s
在部署 Ceph 之前,你首先需要搭建一个 K8s 集群。这里简要介绍 K8s 部署的步骤,更详细的步骤可以在 Kubernetes 官方文档中找到。
步骤|代码示例|说明
-|-|-
1|安装 Docker|```sudo apt-get install docker.io```
安装 Docker 引擎。
2|安装 kubeadm, kubelet 和 kubectl|```sudo apt-get install -y apt-transport-https curl```
```curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -```
```sudo bash -c 'echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list'```
```sudo apt-get update```
```sudo apt-get install -y kubelet kubeadm kubectl```
安装 K8s 的命令行工具和主要组件。
3|初始化 Master 节点|```sudo kubeadm init```
在 Master 节点上初始化 K8s 集群。
4|将 kubectl 配置文件复制到用户目录|```mkdir -p ~/.kube```
```sudo cp -i /etc/kubernetes/admin.conf ~/.kube/config```
```sudo chown $(id -u):$(id -g) ~/.kube/config```
将配置文件复制到当前用户目录。
5|安装网络插件|```kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml```
安装一个网络插件,以便容器之间可以相互通信。
6|加入其他节点|```kubeadm token create --print-join-command```
在其他节点上运行加入命令,将其加入到 K8s 集群中。
完成以上步骤后,你已经成功部署了一个 K8s 集群。
## 部署 Ceph
下面是在 K8s 上部署 Ceph 的步骤:
步骤|代码示例|说明
-|-|-
1|下载 Helm|```curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 > get_helm.sh```
```chmod 700 get_helm.sh```
```./get_helm.sh```
下载并安装 Helm,它是一个 Kubernetes 应用程序包管理工具。
2|添加 Ceph 存储库|```helm repo add ceph https://ceph.github.io/csi-cephfs```
```helm repo update```
添加 Ceph 存储库。
3|安装 Ceph 驱动|```kubectl create namespace ceph```
```helm install --namespace ceph csi-cephfs ceph/csi-cephfs```
创建一个命令空间并安装 Ceph 驱动。
4|创建 Ceph 存储类|```nano ceph-storageclass.yaml```
```apiVersion: storage.k8s.io/v1```
```kind: StorageClass```
```metadata:```
``` name: cephfs-retain```
```provisioner: csi-cephfsplugin```
```parameters:```
``` clusterID: mycluster```
``` fsName: myfs```
```reclaimPolicy: Retain```
``````
```kubectl apply -f ceph-storageclass.yaml```
创建一个 Ceph 存储类,用于定义持久卷的属性。
5|创建持久卷声明|```nano ceph-pvc.yaml```
```apiVersion: v1```
```kind: PersistentVolumeClaim```
```metadata:```
``` name: ceph-pvc```
```spec:```
``` accessModes:```
``` - ReadWriteMany```
``` storageClassName: cephfs-retain```
``` resources:```
``` requests:```
``` storage: 1Gi```
``````
```kubectl apply -f ceph-pvc.yaml```
创建一个持久卷声明,该声明将自动创建一个持久卷并与 Ceph 存储类关联。
6|创建 Pod|```nano ceph-pod.yaml```
```apiVersion: v1```
```kind: Pod```
```metadata:```
``` name: ceph-pod```
```spec:```
``` containers:```
``` - name: ceph-container```
``` image: nginx:latest```
``` volumeMounts:```
``` - name: ceph-volume```
``` mountPath: /var/www/html```
``` volumes:```
``` - name: ceph-volume```
``` persistentVolumeClaim:```
``` claimName: ceph-pvc```
``````
```kubectl apply -f ceph-pod.yaml```
创建一个 Pod,该 Pod 包含一个 Nginx 容器和一个与持久卷声明关联的持久卷。
通过以上步骤,你已经成功部署了 Ceph 并在 K8s 上创建了一个基于 Ceph 的持久化存储解决方案。
希望这篇文章对于想要实现 "k8s ceph部署" 的小白有所帮助。请注意,上述代码示例仅供参考,并且可能需要根据具体环境和需求进行修改。详细信息可以参考相关文档和官方指南。