Kubernetes/Helm/Helm部署Rook-Ceph.md
offends 7a2f41e7d6
All checks were successful
continuous-integration/drone Build is passing
synchronization
2024-08-07 18:54:39 +08:00

208 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

> 本文作者:丁辉
# Helm部署Rook-Ceph
## 介绍
**Rook-Ceph 是一个开源的云原生存储编排器,旨在简化 Ceph 存储集群在 Kubernetes 环境中的部署和管理**。Rook-Ceph 将复杂的 Ceph 部署流程简化为易于在 Kubernetes 上实施的操作,使得 Ceph 集群能够无缝地与云原生环境集成。它利用 Kubernetes 的资源管理和调度能力,提供了一种高效且可扩展的方式来部署和管理存储解决方案。
## 基础准备
[Rook官方主页](https://rook.io/)
| 节点名称 | IP | 存储盘 |
| :---------: | :----------: | :------: |
| ceph-node-1 | 192.168.1.10 | /dev/sdb |
| ceph-node-2 | 192.168.1.20 | /dev/sdb |
| ceph-node-3 | 192.168.1.30 | /dev/sdb |
> 添加仓库
```bash
helm repo add rook-release https://charts.rook.io/release
helm repo update
```
## 部署Rook-Ceph-Operator
1. 配置 values.yaml 文件
```bash
vi rook-ceph-operator-values.yaml
```
内容如下
```yaml
# 配置镜像加速
csi:
cephcsi:
repository: quay.dockerproxy.com/cephcsi/cephcsi
registrar:
repository: registry.aliyuncs.com/google_containers/csi-node-driver-registrar
provisioner:
repository: registry.aliyuncs.com/google_containers/csi-provisioner
snapshotter:
repository: registry.aliyuncs.com/google_containers/csi-snapshotter
attacher:
repository: registry.aliyuncs.com/google_containers/csi-attacher
resizer:
repository: registry.aliyuncs.com/google_containers/csi-resizer
```
2. 部署
```bash
helm install rook-ceph rook-release/rook-ceph \
--namespace rook-ceph --create-namespace \
-f rook-ceph-operator-values.yaml
```
## 部署 Rook-Ceph-Cluster
1. 配置 values.yaml 文件
```bash
vi rook-ceph-cluster-values.yaml
```
内容如下
```yaml
operatorNamespace: rook-ceph
toolbox:
enabled: true
cephClusterSpec:
storage:
useAllNodes: false # 关闭使用所有Node
useAllDevices: false # 关闭使用所有设备
# 指定存储节点和磁盘
nodes:
- name: "192.168.1.10"
devices:
- name: "sdb"
- name: "192.168.1.20"
devices:
- name: "sdb"
- name: "192.168.1.20"
devices:
- name: "sdb"
#- name: "192.168.1.100"
#deviceFilter: "^sd." # 过滤以 "sd." 开头的设备
#- name: "nvme0"
#config:
#osdsPerDevice: "5" # 创建多个 OSD
#- name: "/dev/disk/XXXX-XXXX" # 指定实际设备文件的路径
# 开启监控面板
dashboard:
enabled: true
ssl: false
# 配置调度策略
placement:
all:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: role
operator: In
values:
- storage-node
podAffinity:
podAntiAffinity:
topologySpreadConstraints:
tolerations:
- key: storage-node
operator: Exists
```
2. Ceph节点添加标签
```bash
kubectl label nodes {ceph-node-1,ceph-node-2,ceph-node-3} role=storage-node
```
3. 部署
```bash
helm install rook-ceph-cluster rook-release/rook-ceph-cluster \
--namespace rook-ceph --create-namespace \
-f rook-ceph-cluster-values.yaml
```
4. 查看状态
```bash
kubectl -n rook-ceph exec -it $(kubectl get pod -l app=rook-ceph-tools -n rook-ceph | awk '{print $1}' | grep -v NAME) bash
```
进入容器后查看 ceph 状态
```bash
ceph -s
```
> health: HEALTH_OK
5. 查看密码登录 Dashboard
```bash
kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo
```
> 账户admin
## 卸载
[集群清理文档](https://rook.io/docs/rook/latest-release/Storage-Configuration/ceph-teardown/#removing-the-cluster-crd-finalizer)
1. 卸载 Rook-Ceph-Cluster
```bash
helm uninstall rook-ceph-cluster -n rook-ceph
```
2. 卸载 Rook-Ceph-Operator
```bash
helm uninstall rook-ceph -n rook-ceph
```
3. 删除 CRD 资源
```bash
for CRD in $(kubectl get crd -n rook-ceph | awk '/ceph.rook.io/ {print $1}'); do
kubectl get -n rook-ceph "$CRD" -o name | \
xargs -I {} kubectl patch -n rook-ceph {} --type merge -p '{"metadata":{"finalizers": []}}'
done
```
4. 删除配置资源
```bash
kubectl -n rook-ceph patch configmap rook-ceph-mon-endpoints --type merge -p '{"metadata":{"finalizers": []}}'
kubectl -n rook-ceph patch secrets rook-ceph-mon --type merge -p '{"metadata":{"finalizers": []}}'
```
5. 删除命名空间
```bash
kubectl delete ns rook-ceph
```
6. 删除持久化目录
```bash
rm -rf /var/lib/rook
```