Kubernetes集群对接Ceph集群:搭建可供Kubernetes对接的Ceph实验环境

一、实验环境说明

1. 环境主旨说明

本文旨在使用ceph-deploy工具搭建一个可供Kubernetes集群对接使用的单点Ceph集群。更多有关多点Ceph集群搭建和使用的资料详见本文“参考资料”部分的链接。

2. 环境形态说明

多点部署环境形态:
ceph_deploy_architecture
其中admin-node、node1、node2和node3各代表一台Linux服务器,共有admin-node和node两种角色。

本文使用ceph-deploy工具搭建的单点Ceph集群,共使用了一台Linux服务器,同时扮演了admin-node和node两种角色。

二、实验环境版本信息

1. 操作系统的版本信息

CentOS Linux release 7.7.1908 (Core)

2. 核心组件的版本信息

Ceph Luminous 版本

三、搭建步骤

1. 准备基础的Linux服务器环境

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 更新系统
yum update -y

# 设置正确的时区和时间
yum install -y ntpdate
timedatectl set-timezone Asia/Shanghai
ntpdate cn.ntp.org.cn

# 关闭防火墙
systemctl disable firewalld.service
systemctl stop firewalld.service

# 关闭swap分区
swapoff -a
sed -i 's#/dev/mapper/cl-swap#\# /dev/mapper/cl-swap#' /etc/fstab

# 关闭selinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

# 设置节点的主机名
## 192.168.112.131
hostnamectl set-hostname node1

# 配置主机名和IP的映射
cat <<EOF >> /etc/hosts

# For Ceph Cluster
192.168.112.131 node1
EOF

2. 安装ceph-deploy的基础环境

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
yum install -y epel-release
yum makecache fast
yum install -y python-pip

cat <<EOM > /etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.163.com/ceph/keys/release.asc
EOM

yum makecache fast
yum install -y ceph-deploy

ceph-deploy --version

3. 配置从admin-node到node1的ssh免用户和免密登录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 创建ceph-deploy工具需要使用的node用户
useradd -d /home/node -m node
passwd node

echo "node ALL = (root) NOPASSWD:ALL" | tee /etc/sudoers.d/node
chmod 0440 /etc/sudoers.d/node

# 配置ssh免用户和免密登录
su node
cd ~

ssh-keygen

ssh-copy-id node@node1

cat <<EOM > ~/.ssh/config
Host node1
Hostname node1
User node
EOM

chmod 0600 ~/.ssh/config

3. 配置ceph-deploy工具使用国内源安装指定的ceph版本

1
2
3
4
5
6
7
8
cat <<EOF >> ~/.bash_profile

export CEPH_DEPLOY_REPO_URL=http://mirrors.163.com/ceph/rpm-luminous/el7
export CEPH_DEPLOY_GPG_URL=http://mirrors.163.com/ceph/keys/release.asc
EOF

source ~/.bash_profile
sudo yum install -y yum-plugin-priorities

4. 使用ceph-deploy工具安装ceph集群

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
mkdir my-cluster
cd my-cluster

ceph-deploy new node1
ceph-deploy install node1
ceph-deploy mon create-initial

ceph-deploy admin node1
ceph-deploy mgr create node1

ceph-deploy osd create --data /dev/sdb node1

sudo ceph health
sudo ceph -s

ceph-deploy mds create node1

# 安装rgw后,将集群状态调整为健康的
ceph-deploy rgw create node1

sudo ceph osd pool ls
sudo ceph osd pool set .rgw.root size 1
sudo ceph osd pool ls
sudo ceph osd pool set default.rgw.control size 1
sudo ceph osd pool ls
sudo ceph osd pool set default.rgw.meta size 1
sudo ceph osd pool ls
sudo ceph osd pool set default.rgw.log size 1
sudo ceph osd pool ls

sudo ceph -s

echo "hello rgw." > testfile.txt
sudo ceph osd pool create mytest 8 8
sudo ceph osd pool set mytest size 1
sudo rados put test-object-1 testfile.txt --pool=mytest
sudo rados -p mytest ls
sudo ceph osd map mytest test-object-1
sudo rados rm test-object-1 --pool=mytest
sudo ceph osd pool rm mytest

5. 配置ceph集群环境使其符合kubernetes环境的要求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# For ceph rbd
ceph osd pool create kube 8 8
ceph osd pool set kube size 1

## For kubernetes ceph-admin-secret
ceph auth get-key client.admin | base64

## For kubernetes ceph-user-secret
ceph auth add client.kube mon 'allow r' osd 'allow rwx pool=kube'
ceph auth get-key client.kube | base64

# For ceph fs
ceph osd pool create cephfs_data 8 8
ceph osd pool set cephfs_data size 1
ceph osd pool create cephfs_metadata 8 8
ceph osd pool set cephfs_metadata size 1
ceph fs new fs cephfs_metadata cephfs_data
ceph osd pool application enable kube fs

四、参考资料

1. 官方文档资料(可以带领用户快速掌握从搭建到基本使用)

https://docs.ceph.com/docs/luminous/start/
https://docs.ceph.com/docs/luminous/start/quick-ceph-deploy/
https://docs.ceph.com/docs/master/start/quick-ceph-deploy/
https://docs.ceph.com/docs/luminous/start/quick-rbd/
https://docs.ceph.com/docs/luminous/start/quick-cephfs/
https://docs.ceph.com/docs/luminous/start/quick-rgw/

2. 网络上经典的错误排查资料

https://my.oschina.net/xiaozhublog/blog/664560
https://blog.51cto.com/wangzhijian/2159701