背景
PersistentVolume(PV)是集群中已由管理员配置的一段网络存储。 集群中的资源就像一个节点是一个集群资源。 PV是诸如卷之类的卷插件,但是具有独立于使用PV的任何单个pod的生命周期。 该API对象包含存储的实现细节,即NFS,iSCSI或云提供商特定的存储系统。
PersistentVolumeClaim(PVC)是用户存储的请求。 它类似于pod。Pod消耗节点资源,PVC消耗存储资源。 pod可以请求特定级别的资源(CPU和内存)。 权限要求可以请求特定的大小和访问模式。
我们使用3个Centos 7系统 ,关闭防火墙,搭建一套ceph系统为k8s提供存储平台。
master: 192.168.80.198
node01: 192.168.80.199
node02: 192.168.80.200
Ceph安装
新建磁盘
给虚拟机新增一块硬盘sdb,需要硬盘目录不存在数据
主机ip映射
设置主机名
1
2
3
4
5
6# 在master上执行
hostnamectl set-hostname master
# 下面在 node01 执行
hostnamectl set-hostname node01
# 下面在 node02 执行
hostnamectl set-hostname node02增加映射
1
2
3
4
5
6
7
8
9# master 中执行命令
cat >> /etc/hosts << EOF
192.168.80.198 master
192.168.80.199 node01
192.168.80.200 node02
EOF
# 将hosts文件拷贝到node01 和 node02中,注意在这两个命令中按照提示输入密码
scp /etc/hosts root@node01:/etc
scp /etc/hosts root@node02:/etc
配置yum源
1 | vim /etc/yum.repos.d/ceph.repo |
创建普通用户并设置sudo免密
1 | groupadd -g 3000 ceph |
新建的用户创建ssh免密登录
在master节点执行:
1 | su - ceph |
安装软件
1 | sudo su - root # master要从ceph用户切换到root用户下 |
Tips:安装时间同步服务的目的是为了防止后续集群因为时间不同步导致健康状态从OK转变为WARN。
创建集群
在master节点执行:
1 | su - ceph |
查看状态:
1 | ceph -s |
配置mgr服务
master上执行:
1 | ceph-deploy mgr create master node01 node02 |
配置osd服务
master上执行:
1 | ceph-deploy osd create --data /dev/sdb master |
解决异常
ceph -s
查看状态:
1 | cluster: |
解决异常:
1 | su - ceph |
配置dashboard
master上执行:
1 | yum -y install ceph-mgr-dashboard # 三个节点都要执行安装操作 |
配置账户名密码:
1 | ceph dashboard set-login-credentials admin ceph123 |
K8S部署ceph
POD使用CephFS做为持久数据卷
Ceph端创建CephFS pool
如下操作在ceph的mon或者admin节点 CephFS需要使用两个Pool来分别存储数据和元数据
1 | 1、如下操作在ceph的mon或者admin节点CephFS需要使用两个Pool来分别存储数据和元数据 |
部署cephfs-provisioner
使用社区提供的cephfs-provisioner
1 | # cat >external-storage-cephfs-provisioner.yaml<<EOF |
配置secret
1 | 查看key 在ceph的mon或者admin节点 |
配置 StorageClass
1 | # vim storageclass-cephfs.yaml |
创建pvc测试
1 | # cat >cephfs-pvc-test.yaml<<EOF |
创建 nginx pod 挂载测试
1 | # cat >nginx-pod.yaml<<EOF |