K8S集群实践之九: Ceph

Rook is an open source cloud-native storage orchestrator, providing the platform, framework, and support for Ceph storage to natively integrate with cloud-native environments.1. 说明

因香橙派和树莓派资源所限,转移到基于VirtualBox建立的VMs继续实践。

虚拟机环境列表:

|----------------|----------|-------------------------------------------------|-----|
| Host Name | IP | 配置 | 备注 |
| k8s-c0-master0 | 10.0.3.6 | Ubuntu 22.04.3 LTS 8核32G, 200G(sda) + 100G(sdb) | 虚拟机 |
| k8s-c0-node0 | 10.0.3.7 | Ubuntu 22.04.3 LTS 4核8G, 200G(sda) + 100G(sdb) | ... |
| k8s-c0-node1 | 10.0.3.8 | Ubuntu 22.04.3 LTS 4核8G, 200G(sda) + 100G(sdb) | ... |

2. 准备工作

  • 下载 ubuntu-22.04.2-live-server-amd64.iso,并映射到启动光盘

  • 虚拟机设置双网卡,1作桥接(同网访问),1作NAT网络(K8s内网)

  • 安装时选择镜像(重要)https://mirrors.aliyun.com/ubuntu

  • 初始化K8s环境

  • 为避免CTR拉取镜像失败,设置容器代理,编辑 /lib/systemd/system/containerd.service

    复制代码
    [Service]
    Environment="HTTP_PROXY=http://192.168.0.108:1081"
    Environment="HTTPS_PROXY=http://192.168.0.108:1081"
    Environment="NO_PROXY=aliyun.com,aliyuncs.com,huaweicloud.com,k8s-master-0,k8s-master-1,k8s-worker-0,localhost,127.0.0.1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16"
    
    systemctl daemon-reload && systemctl restart containerd

3. 方案及安装步骤

3.1 Rook

Rook is an open source cloud-native storage orchestrator, providing the platform, framework, and support for Ceph storage to natively integrate with cloud-native environments.

3.2 安装要求

  • Raw devices (no partitions or formatted filesystems)
  • Raw partitions (no formatted filesystem)
  • LVM Logical Volumes (no formatted filesystem)
  • Persistent Volumes available from a storage class in block mode

一句话:有个裸盘 (100G /dev/sdb)

3.3 安装步骤

  1. 获取rook仓库到安装路径,如:/k8s_apps/rook

    git clone --single-branch --branch v1.12.6 https://github.com/rook/rook.git

  2. 编写安装脚本,/k8s_apps/scripts/k8s-rook-ceph.sh

    #!/bin/bash

    kubectl apply -f /k8s_apps/rook/deploy/examples/crds.yaml
    kubectl apply -f /k8s_apps/rook/deploy/examples/common.yaml
    kubectl apply -f /k8s_apps/rook/deploy/examples/operator.yaml

    kubectl -n rook-ceph get pod

    kubectl apply -f /k8s_apps/rook/deploy/examples/cluster.yaml

  3. 编写删除脚本,/k8s_apps/scripts/rook-ceph-delete.sh

    #!/bin/bash

    kubectl delete -f /k8s_apps/rook/deploy/examples/wordpress.yaml
    kubectl delete -f /k8s_apps/rook/deploy/examples/mysql.yaml
    kubectl delete -n rook-ceph cephblockpool replicapool
    kubectl delete storageclass rook-ceph-block
    kubectl delete -f /k8s_apps/rook/deploy/examples/csi/cephfs/kube-registry.yaml
    kubectl delete storageclass csi-cephfs

    kubectl -n rook-ceph patch cephcluster rook-ceph --type merge -p '{"spec":{"cleanupPolicy":{"confirmation":"yes-really-destroy-data"}}}'

    kubectl -n rook-ceph delete cephcluster rook-ceph

    kubectl -n rook-ceph get cephcluster

    kubectl delete -f /k8s_apps/rook/deploy/examples/operator.yaml
    kubectl delete -f /k8s_apps/rook/deploy/examples/common.yaml
    kubectl delete -f /k8s_apps/rook/deploy/examples/crds.yaml

  4. 执行安装,一切正常的话,如下图,不正常的话,执行删除脚本,排除问题后重来。

4. 参考

相关推荐
晨陌y4 小时前
Flare自托管导航页教程:Docker部署、多用户、API与公网访问
运维·docker·容器
无言听风雨丶4 小时前
Kubernetes GitOps 持续交付实战:用 Argo CD 让 Git 成为集群事实源
git·elasticsearch·kubernetes
无言听风雨丶13 小时前
Kubernetes 控制平面深度剖析:从 kubectl apply 到 etcd 写入的全链路
平面·kubernetes·etcd
openFuyao15 小时前
openFuyao x 复旦大学软件工程实验室 Panel 回顾:Agentic时代,集群调度技术体系将如何演进?
kubernetes·openfuyao
螺蛳粉 螺蛳粉15 小时前
第 05 篇:etcd 深入:Raft 共识、watch 机制与快照备份恢复实战(底座认知 05)
docker·云原生·容器·kubernetes·etcd·分布式存储·kube-apiserver
相思难忘成疾18 小时前
从零搭建 Kubernetes 1.30 集群:kubeadm 部署一主多从实战(RHEL 9.3 + Docker + flannel)
linux·运维·kubernetes
PellyKoo18 小时前
【docker】cifs卷改smb密码后容器起不来的解决方法
运维·docker·容器
weirong19 小时前
给 K8s 加一个自动值班员:分级故障自愈引擎
kubernetes
云和数据.ChenGuang19 小时前
Python 闭包详解:从原理到实战
linux·开发语言·人工智能·python·kubernetes
阿标在干嘛20 小时前
容器编排的“场景适配”:我们为什么在部分服务中回归了Docker Compose?
运维·docker·容器