Ceph集群搭建及Kubernetes上实现动态存储(StorageClass)
集群准备
ceph集群配置说明
| 节点名称 | IP地址 | 配置 | 作用 |
| ceph-moni-0 | 10.10.3.150 |
centos7.5 4C,16G,200Disk |
管理节点,监视器 monitor |
| ceph-moni-1 | 10.10.3.151 |
centos7.5 4C,16G,200Disk |
监视器 monitor |
| ceph-moni-2 | 10.10.3.152 |
centos7.5 4C,16G,200Disk |
监视器 monitor |
| ceph-osd-0 | 10.10.3.153 |
centos7.5 4C,16G,200Disk |
存储节点 osd |
| ceph-osd-1 | 10.10.3.154 |
centos7.5 4C,16G,200Disk |
存储节点 osd |
| ceph-osd-2 | 10.10.3.155 |
centos7.5 4C,16G,200Disk |
存储节点 osd |
本文使用ceph-deploy安装配置集群,以 6 个节点—3 个 monitor 节点,3 个 osd 节点。
Ceph 集群的安装配置
安装依赖包(所有节点)
sudo yum install -y yum-utils && sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && sudo yum install --nogpgcheck -y epel-release && sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && sudo rm /etc/yum.repos.d/dl.fedoraproject.org*
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
配置cephd的yum源(所有节点)
vim /etc/yum.repos.d/ceph.repo [ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-kraken/el7/noarch/
enabled=
gpgcheck=
type=rpm-md
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
priority= [ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-kraken/el7/$basearch
enabled=
gpgcheck=
type=rpm-md
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
priority= [ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-kraken/el7/SRPMS
enabled=
gpgcheck=
type=rpm-md
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
priority=
更新yum源(所有节点)
sudo yum update
添加集群hosts信息(所有节点)
cat >> /etc/hosts <<EOF
10.10.3.150 ceph-moni-
10.10.3.151 ceph-moni-
10.10.3.152 ceph-moni-
10.10.3.153 ceph-osd-
10.10.3.154 ceph-osd-
10.10.3.155 ceph-osd-
EOF
创建用户,赋予 root 权限 设置sudo免密(所有节点)
useradd -d /home/ceph -m ceph && echo | passwd --stdin ceph && echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph
在管理节点安装 ceph-deploy(管理节点)
sudo yum install ceph-deploy
配置 ssh 免密登录(管理节点)
su - ceph
ssh-keygen -t rsa
#传key到各节点
ssh-copy-id -i ~/.ssh/id_rsa.pub ceph@ceph-moni-
ssh-copy-id -i ~/.ssh/id_rsa.pub ceph@ceph-moni-
ssh-copy-id -i ~/.ssh/id_rsa.pub ceph@ceph-osd-
ssh-copy-id -i ~/.ssh/id_rsa.pub ceph@ceph-osd-
ssh-copy-id -i ~/.ssh/id_rsa.pub ceph@ceph-osd-
#管理节点上更改~/.ssh/config
Host ceph-moni-
Hostname ceph-moni-
User ceph
Host ceph-moni-
Hostname ceph-moni-
User ceph
Host ceph-osd-
Hostname cceph-osd-
User ceph
Host ceph-osd-
Hostname cceph-osd-
User ceph
Host ceph-osd-
Hostname cceph-osd-
User ceph
#更改权限
sudo chmod ~/.ssh/config
创建管理节点
su - ceph
mkdir ceph-cluster
cd ceph-cluster
ceph-deploy new {initial-monitor-node(s)}
例如
ceph-deploy new ceph-moni- ceph-moni- ceph-moni-
在管理节点上,更改生成的 ceph 配置文件,添加以下内容
vim ceph.conf
#更改 osd 个数
osd pool default size =
#允许 ceph 集群删除 pool
[mon]
mon_allow_pool_delete = true
在管理节点上给集群所有节点安装 ceph
ceph-deploy install {ceph-node} [{ceph-node} ...]
例如:
ceph-deploy install ceph-moni- ceph-moni- ceph-moni- ceph-osd- ceph-osd- ceph-osd2
配置初始 monitor(s)、并收集所有密钥
ceph-deploy mon create-initial
在管理节点上登录到每个 osd 节点,创建 osd 节点的数据存储目录(所有osd节点)
ssh ceph-osd-
sudo mkdir /var/local/osd0
sudo chmod 777 -R /var/local/osd0
exit
ssh ceph-osd-
sudo mkdir /var/local/osd1
sudo chmod 777 -R /var/local/osd1
exit
ssh ceph-osd-
sudo mkdir /var/local/osd2
sudo chmod 777 -R /var/local/osd2
exit
使每个 osd 就绪(管理节点执行)
ceph-deploy osd prepare ceph-osd-:/var/local/osd0 ceph-osd-:/var/local/osd1 ceph-osd-:/var/local/osd2
激活每个 osd 节点(管理节点执行)
ceph-deploy osd activate ceph-osd-:/var/local/osd0 ceph-osd-:/var/local/osd1 ceph-osd-:/var/local/osd2
在管理节点把配置文件和 admin 密钥拷贝到管理节点和 Ceph 节点,赋予 ceph.client.admin.keyring 有操作权限(所有节点)
ceph-deploy admin {manage-node} {ceph-node}
例如:
ceph-deploy admin ceph-moni- ceph-moni- ceph-moni- ceph-osd- ceph-osd- ceph-osd-
#所有节点执行
sudo chmod +r /etc/ceph/ceph.client.admin.keyring
部署完成。查看集群状态
$ eph health
HEALTH_OK
客户端配置
因为我的kubernetes的操作系统是Ubuntu操作系统,Kubernetes 集群中的每个节点要想使用 Ceph,需要按照 Ceph 客户端来安装配置 Ceph,所有我这里有两种操作系统的安装方式。
Centos
添加 ceph 源
vim /etc/yum.repos.d/ceph.repo [ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-kraken/el7/noarch/
enabled=
gpgcheck=
type=rpm-md
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
priority= [ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-kraken/el7/$basearch
enabled=
gpgcheck=
type=rpm-md
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
priority= [ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-kraken/el7/SRPMS
enabled=
gpgcheck=
type=rpm-md
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
priority=
安装 ceph client
yum update & yum install -y ceph
添加集群信息
cat >> /etc/hosts <<EOF
10.10.3.30 ceph-client01
10.10.3.150 ceph-moni-
10.10.3.151 ceph-moni-
10.10.3.152 ceph-moni-
10.10.3.153 ceph-osd-
10.10.3.154 ceph-osd-
10.10.3.155 ceph-osd-
EOF
拷贝集群配置信息和 admin 密钥
scp -r root@ceph-moni-:/etc/ceph/\{ceph.conf,ceph.client.admin.keyring\} /etc/ceph/
Ubuntu
配置源
wget -q -O- https://mirrors.aliyun.com/ceph/keys/release.asc | sudo apt-key add -; echo deb https://mirrors.aliyun.com/ceph/debian-kraken xenial main | sudo tee /etc/apt/sources.list.d/ceph.list
更新源
apt update && apt -y dist-upgrade && apt -y autoremove
安装 ceph client
apt-get install ceph
添加集群信息
cat >> /etc/hosts <<EOF
10.10.3.30 ceph-client01
10.10.3.150 ceph-moni-
10.10.3.151 ceph-moni-
10.10.3.152 ceph-moni-
10.10.3.153 ceph-osd-
10.10.3.154 ceph-osd-
10.10.3.155 ceph-osd-
EOF
拷贝集群配置信息和 admin 密钥
scp -r root@ceph-moni-:/etc/ceph/\{ceph.conf,ceph.client.admin.keyring\} /etc/ceph/
配置StorageClass
所有的k8s节点的node节点到要能访问到ceph的服务端,所以所有的node节点要安装客户端(ceph-common),我上面是直接安装ceph,也是可以的。
生成key文件
$ grep key /etc/ceph/ceph.client.admin.keyring |awk '{printf "%s", $NF}'|base64
QVFCWXB0RmIzK2dqTEJBQUtsYm4vaHU2NWZ2eHlaaGRnM2hwc1E9PQ==
配置访问ceph的secret
下面的key默认是default的Namespace,所有只能在default下使用,要想其他namespace下使用,需要在指定namespace下创建key,修改namespace即可。
$ vim ceph-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: ceph-secret
namespace: default
type: "kubernetes.io/rbd"
data:
key: QVFCWXB0RmIzK2dqTEJBQUtsYm4vaHU2NWZ2eHlaaGRnM2hwc1E9PQ==
$ kubectl apply -f ceph-secret.yaml
secret/ceph-secret created
$ kubectl get secret
NAME TYPE DATA AGE
ceph-secret kubernetes.io/rbd 4s
default-token-lplp6 kubernetes.io/service-account-token 50d
mysql-root-password Opaque 2d
配置ceph的存储类
$ vim ceph-storageclass.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: jax-ceph
provisioner: kubernetes.io/rbd
parameters:
monitors: 10.10.3.150:,10.10.3.151:,10.10.3.152:
adminId: admin
adminSecretName: ceph-secret
adminSecretNamespace: default
pool: rbd
userId: admin
userSecretName: ceph-secret
$ kubectl apply -f ceph-storageclass.yaml
storageclass.storage.k8s.io/jax-ceph created
$ kubectl get storageclass
NAME PROVISIONER AGE
jax-ceph kubernetes.io/rbd 1
到此动态存储创建完成
下面是一个在statefulset中的一个使用方法
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: myapp
spec:
serviceName: myapp-sts-svc
replicas:
selector:
matchLabels:
app: myapp-pod
template:
metadata:
labels:
app: myapp-pod
spec:
containers:
- name: myapp
image: ikubernetes/myapp:v1
ports:
- containerPort:
name: web
volumeMounts:
- name: myappdata
mountPath: /usr/share/nginx/html
volumeClaimTemplates:
- metadata:
name: myappdata
spec:
accessModes: ["ReadWriteOnce"]
storageClassName: "jax-ceph"
resources:
requests:
storage: 5Gi
Ceph集群搭建及Kubernetes上实现动态存储(StorageClass)的更多相关文章
- ceph集群搭建
CEPH 1.组成部分 1.1 monitor admin节点安装ceph-deploy工具 admin节点安装ceph-deploy 添加源信息 rm -f /etc/yum.repos.d/* w ...
- CEPH集群搭建(CentOS 7)
以包含四个节点的集群为例,其中包括一个 ceph-deploy 管理节点和一个三节点的Ceph存储集群. 下图中每个节点代表一台机器. 创建一个 Ceph 存储集群,它有一个 Monitor 和两个 ...
- Ceph 集群搭建
1.Ceph部署 1.1 Ceph 安装前准备,环境与拓扑图如下: 主机名 外网IP 内网IP 安装组件 磁盘块 c720181 172.22.69.84 192.168.20.181 ceph-de ...
- Ceph集群搭建记录
环境准备 基础环境 node00 192.168.247.144 node00 node01 192.168.247.135 node01 node02 192.168.247.143 node02 ...
- docker创建ceph集群
背景 Ceph官方现在提供两类镜像来创建集群,一种是常规的,每一种Ceph组件是单独的一个镜像,如ceph/daemon.ceph/radosgw.ceph/mon.ceph/osd等:另外一种是最新 ...
- ceph-deploy离线部署ceph集群及报错解决FAQ
ceph-deploy部署ceph集群 环境介绍 主机名 ip地址 操作系统 角色 备注 ceph-node1 10.153.204.13 Centos7.6 mon.osd.mds.mgr.rgw. ...
- zookeeper集群及kafka集群搭建
1.zookeeper集群搭建 1.1 上传安装包 官网推荐至少3个节点,我们这里也用三个节点192.169.2.18 192.169.1.82 192.169.1.95 准备好安装包,zooke ...
- K8s 上的分布式存储集群搭建(Rook/ceph)
转载自:https://mp.weixin.qq.com/s/CdLioTzU4oWI688lqYKXUQ 1 环境准备 1.1 基础环境 3台配置一致的虚拟机 虚拟机配置:4c 8g 虚拟机操作系统 ...
- 初试 Centos7 上 Ceph 存储集群搭建
转载自:https://cloud.tencent.com/developer/article/1010539 1.Ceph 介绍 Ceph 是一个开源的分布式存储系统,包括对象存储.块设备.文件系统 ...
随机推荐
- linux备份还原命令
使用范围:1.可以作为系统还原点,还原到备份时的状态 2.系统完全损坏后无法启动,通过引导盘恢复 一.备份还原系统命令 方法一: 备份:tar cvpzf backup.tgz --exclude=/ ...
- 英语背单词app
乐词 √ 真人发音 词根词缀 小组计划及时复习 真人例句 墨墨 单词量测试做的特别好 扇贝 哈哈哈,没用过 百词斩 同样25个单词,我在乐词中背了20分钟,在百词斩中需要60分钟. 原因在于 要记单词 ...
- 4.14Python数据处理篇之Matplotlib系列(十四)---动态图的绘制
目录 目录 前言 (一)需求分析 (二)随机数的动态图 1.思路分析: 2.源代码: 2.输出效果: 目录 前言 学习matplotlib已经到了尾声,没有必要再继续深究下去了,现今只是学了一些基础的 ...
- Windows server 2012 R2 部署WSUS补丁服务
一.WSUS 安装要求 1.硬件要求: 对于多达 13000 个客户端的服务器,建议使用以下硬件:* 4 Core E5-2609 2.1GHz 的处理器* 8 GB 的 RAM 2.软件要求: 要使 ...
- 理论铺垫:阻塞IO、非阻塞IO、IO多路复用/事件驱动IO(单线程高并发原理)、异步IO
完全来自:http://www.cnblogs.com/alex3714/articles/5876749.html 同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同 ...
- django自定义分页器
一 django 的分页器 1 批量创建数据 批量导入数据: Booklist=[] for i in range(100): Booklist.append(Book(title="boo ...
- centos7下git版本升级及gitlab安装
centos系统自带的git版本过低,当使用git拉取.推送.克隆的时候可能会报错,常见的错误: error: The requested URL returned error: 401 Unauth ...
- Java中的CAS原理
前言:在对AQS框架进行分析的过程中发现了很多CAS操作,因此有必要对CAS进行一个梳理,也便更清楚的了解其原理. 1.CAS是什么 CAS,是compare and swap的缩写,中文含义:比较交 ...
- Loj #3059. 「HNOI2019」序列
Loj #3059. 「HNOI2019」序列 给定一个长度为 \(n\) 的序列 \(A_1, \ldots , A_n\),以及 \(m\) 个操作,每个操作将一个 \(A_i\) 修改为 \(k ...
- MySQL之ORM框架SQLAlchemy
一 介绍 SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取 ...