Kubernetes Ceph 安装


Ceph Install

环境说明

IP 服务 主机名 备注
192.168.60.28 Ceph、Ceph-deploy、Mon admin-node mon节点又称为master节点
192.168.60.29 Ceph ceph01 osd
192.168.60.31 Ceph Ceph02 osd

Ceph 版本 10.2.11 Ceph-deploy 版本 1.5.39 系统版本 7.4.1708 内核版本 3.10.0-693.el7.x86_64

1.环境准备 三台服务器共同操作

1.关闭selinux && iptables

 systemctl stop firewalld
 systemctl disable firewalld
 setenforce 0
 sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
 setenforce 0

 2.设置时间同步
yum -y install ntp
systemctl enable ntpd
systemctl start ntpd
ntpdate -u cn.pool.ntp.org
hwclock --systohc
timedatectl set-timezone Asia/Shanghai


3.修改主机名 && host
hostnamectl set-hostname [ admin-node | ceph1 | ceph2 ]

hostnamectl set-hostname admin-node
hostnamectl set-hostname ceph1 
hostnamectl set-hostname ceph2

echo "192.168.60.28 admin-node" >>/etc/hosts
echo "192.168.60.29 ceph1" >>/etc/hosts
echo "192.168.60.31 ceph2" >>/etc/hosts
bash

4.设置Yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all && yum makecache

Ceph相关设置

安装openssh

yum install openssh-server -y

设置ceph yum源

cat > /etc/yum.repos.d/ceph.repo <<EOF 
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
gpgcheck=0
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/
gpgcheck=0
EOF

#all-缓存yum源
yum clean all && yum makecache

配置ceph-deploy部署的无密码登录每个ceph节点 正因为 ceph-deploy 不支持输入密码,你必须在管理节点上生成 SSH 密钥并把其公钥分发到各 Ceph 节点。 ceph-deploy 会尝试给初始 monitors 生成 SSH 密钥对。

在每个Ceph节点上安装一个SSH服务器

yum install openssh-server -y

配置master管理节点与每个Ceph节点无密码的SSH访问。

不会SSH请点击这里

复制admin-node节点的秘钥到每个ceph节点
ssh-keygen
ssh-copy-id root@admin-node
ssh-copy-id root@ceph1
ssh-copy-id root@ceph2

##测试每台ceph节点不用密码是否可以登录

修改 ceph-deploy 管理节点上的 ~/.ssh/config 文件,这样 ceph-deploy 就能用你所建的用户名登录 Ceph 节点了,而无需每次执行 ceph-deploy 都要指定 --username {username}。这样做同时也简化了 ssh 和 scp 的用法。把 {username}替换成你创建的用户名。

[root@admin-node ~]# vim ~/.ssh/config
### 这里我们不使用普通用户###

[root@admin-node ~]# cat ~/.ssh/config
Host admin-node
   Hostname admin-node
   User root
Host ceph1
   Hostname ceph1
   User root
Host ceph2
   Hostname ceph2
   User root

#填写主机名和用户

设置Yum源,前面已经设置过,这里其实可以忽略

cat > /etc/yum.repos.d/ceph.repo <<EOF 
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
gpgcheck=0
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/
gpgcheck=0
EOF

用ceph-deploy工具部署ceph集群 在master节点上新建一个ceph集群 ceph-deploy用来管理三个节点

yum install -y ceph ceph-deploy

在ceph1节点 & ceph2节点 安装ceph

yum install ceph -y

需要在k8s环境中的master和node节点中安装ceph,用于资源调用存储,只需要安装Ceph,不需要进行认证~

yum install ceph -y

后期如果想使用storageclass模式,需要在K8S中的master节点安装ceph-common,否则会报错

测试ceph是否安装完成

[root@admin-node ~]# ceph --version
ceph version 10.2.11 (e4b061b47f07f583c92a050d9e84b1813a35671e)

[root@ceph2 ~]# ceph --version
ceph version 10.2.11 (e4b061b47f07f583c92a050d9e84b1813a35671e)

[root@admin-node ~]# ceph-deploy --version
1.5.39

在master节点创建monitor

# cd /etc/ceph/
$ ceph-deploy new admin-node 
(执行这条命令后admin-node作为了monitor节点,如果想多个mon节点可以实现互备,需要加上其他节点并且节点需要安装ceph-deploy)

ceph-deploy install ceph01 ceph02 --repo-url=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/ 自动部署node节点,不执行这个的话,后面k8s无法调用rbd模块,注意这里,如果上面已经通过yum安装过ceph的,可以不用执行这个-------------

查看ceph.conf 当执行完创建后,会在当前目录下生产ceph.conf

[root@admin-node ceph]# cat ceph.conf 
[global]
fsid = 135dc368-9a2f-4943-8d5d-7eb6675808b1
mon_initial_members = ceph1, ceph2
mon_host = 192.168.60.28  #这里应该只有mon节点的IP
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd pool default size = 2
rbd_default_features = 1
osd journal size = 2000

### 添加后面3行,解释如下


ceph.conf配置文件修改
设置默认副本数为2份,有一个副本故障,其他3个副本的osd可正常提供读写服务,需要注意的是如果设置为副本数为2,osd总数量需要是2的倍数
# echo "osd pool default size = 2" >> ceph.conf

增加 rbd_default_features 配置可以永久的改变默认值。注意:这种方式设置是永久性的,要注意在集群各个 node 上都要修改。
增加配置默认 feature 为 layering 对应的bit码整数值 1
#echo "rbd_default_features = 1" >> ceph.conf


要设置Ceph的网络配置,您必须添加一个网络配置在配置文件在[global ]部分。我们5分钟的快速启动提供了一个简单的Ceph的配置文件,假设一个公网客户端和服务器上相同的网络和子网。 Ceph的功能仅对一个公共的网络起作用。然而, Ceph可以建立更具体的标准,其中包括多个IP网络和公共网络的子网。您也可以建立单独的集群网络处理OSD心跳,对象备份和故障恢复。不要混淆IP您在您的配置设置面向公众的IP地址的网络客户端的IP地址,可以使用它来访问您的服务。典型的内部IP网络往往是192.168.0.0 10.0.0.0  。
提示:如果您指定一个以上的IP地址和子网掩码,无论是公共或群集网络的子网内的网络必须能够路由到对方。此外,请确保您包括您的IP为他们必要的表和开放端口的每一个IP地址/子网。
注意:Ceph使用CIDR表示法的子网(例如, 10.0.0.0/24 ) 。
当你配置你的网络,你可能会重新启动您的群集或重新启动每个守护进程。 Ceph的守护程序动态绑定,所以你不必重新启动整个集群一次,如果你改变你的网络配置。

PUBLIC NETWORK
# echo "public network = 10.0.0.0/16" >>ceph.conf

OSD日志大小(MB) 
# echo "osd journal size = 2000 " >>ceph.conf

查看文件格式

df -T -h|grep -v var

注意,如果是ext4的文件格式需要执行下面两个命令,在创建集群之后

echo "osd max object name len = 256" >> ceph.conf
echo "osd max object namespace len = 64" >> ceph.conf

master节点初始化mon节点及收集密钥信息

# ceph-deploy mon create-initial

[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /usr/bin/ceph-deploy mon create-initial
[ceph_deploy.cli][INFO  ] ceph-deploy options:
[ceph_deploy.cli][INFO  ]  username                      : None
[ceph_deploy.cli][INFO  ]  verbose                       : False
[ceph_deploy.cli][INFO  ]  overwrite_conf                : False
[ceph_deploy.cli][INFO  ]  subcommand                    : create-initial
[ceph_deploy.cli][INFO  ]  quiet                         : False
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0xbf7d40>
[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ceph_deploy.cli][INFO  ]  func                          : <function mon at 0xbf05f0>
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ceph_deploy.cli][INFO  ]  default_release               : False
[ceph_deploy.cli][INFO  ]  keyrings                      : None
[ceph_deploy.mon][DEBUG ] Deploying mon, cluster ceph hosts admin-node ceph1 ceph2
[ceph_deploy.mon][DEBUG ] detecting platform for host admin-node ...
[admin-node][DEBUG ] connected to host: admin-node 
#############省略部分
mon. --keyring=/var/lib/ceph/mon/ceph-admin-node/keyring auth get client.bootstrap-osd
[admin-node][INFO  ] Running command: /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-admin-node/keyring auth get client.bootstrap-rgw
[ceph_deploy.gatherkeys][INFO  ] keyring 'ceph.client.admin.keyring' already exists
[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-mds.keyring
[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-mgr.keyring
[ceph_deploy.gatherkeys][INFO  ] keyring 'ceph.mon.keyring' already exists
[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-osd.keyring
[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-rgw.keyring
[ceph_deploy.gatherkeys][INFO  ] Destroy temp directory /tmp/tmpHhcN8i

admin-node把配置文件和admin密钥分发到各个节点,仅仅需要分发给mon节点即可 ceph-deploy admin admin-node 我们的admin-node和mon在一起,我们就发送给admin-node(这步不操作也可以)

创建osd的目录并激活 osd上需要建立对应的目录-用户存储数据

mkdir -p /ceph && chown -R ceph.ceph /ceph/       
#这里的目录我们可以添加一块磁盘或者直接创建目录挂载

我们这里演示添加一块硬盘 ceph_vmw01 我们需要将三台服务器都添加一块40G的硬盘

[root@ceph1 ~]# ll /dev/sd*
brw-rw---- 1 root disk 8,  0 Aug 13 10:25 /dev/sda
brw-rw---- 1 root disk 8,  1 Aug 13 10:25 /dev/sda1
brw-rw---- 1 root disk 8,  2 Aug 13 10:25 /dev/sda2
brw-rw---- 1 root disk 8, 16 Aug 13 10:25 /dev/sdb

执行 fdisk /dev/sdb 对磁盘分区,需要依次输入 “n” ,"p","1",两次回车 "wq"


[root@ceph1 ~]# fdisk /dev/sdb 
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xb88b7dd5.

Command (m for help): p

Disk /dev/sdb: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xb88b7dd5

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-83886079, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-83886079, default 83886079): 
Using default value 83886079
Partition 1 of type Linux and of size 40 GiB is set

Command (m for help): wq
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

完毕后执行 fdisk -l 即可看到已经分区的磁盘,并记住盘符标识我们这里是/dev/sdb1

[root@ceph1 ~]#  fdisk -l 

Disk /dev/sdb: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xb88b7dd5

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    83886079    41942016   83  Linux

格式化分区
[root@ceph1 ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=2621376 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=10485504, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=5119, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0


添加到/etc/fstab
[root@ceph1 ~]# echo '/dev/sdb1 /ceph xfs defaults 0 0' >> /etc/fstab
[root@ceph1 ~]# mount -a
mount: mount point /ceph does not exist
[root@ceph1 ~]# mkdir /ceph
[root@ceph1 ~]# mount -a

其他服务器也按照相同的操作
[root@ceph1 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   17G  1.7G   16G  10% /
devtmpfs                 1.9G     0  1.9G   0% /dev
tmpfs                    1.9G     0  1.9G   0% /dev/shm
tmpfs                    1.9G  8.6M  1.9G   1% /run
tmpfs                    1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1               1014M  143M  872M  15% /boot
tmpfs                    378M     0  378M   0% /run/user/0
/dev/sdb1                 40G   33M   40G   1% /ceph

三台服务器同时执行
chown -R ceph.ceph /ceph/

在master节点创建osd:

cd /etc/ceph/

ceph-deploy osd prepare admin-node:/ceph ceph1:/ceph ceph2:/ceph

激活osd

ceph-deploy osd activate admin-node:/ceph ceph1:/ceph ceph2:/ceph

master创建mon节点-监控集群状态-同时管理集群及msd

ceph-deploy mon create admin-node

如果需要管理集群节点需要在node 节点安装ceph-deploy,因为ceph-deploy是管理ceph节点的工具

查看osd节点状态

[root@admin-node ceph]# ceph -s
    cluster 96a28dc8-9907-4f42-b15b-a22de899d14d
     health HEALTH_OK
     monmap e1: 3 mons at {admin-node=192.168.60.28:6789/0,ceph1=192.168.60.29:6789/0,ceph2=192.168.60.31:6789/0}
            election epoch 12, quorum 0,1,2 admin-node,ceph1,ceph2
     osdmap e15: 3 osds: 3 up, 3 in
            flags sortbitwise,require_jewel_osds
      pgmap v23: 64 pgs, 1 pools, 0 bytes data, 0 objects
            6321 MB used, 113 GB / 119 GB avail
                  64 active+clean

查看ceph集群磁盘

[root@admin-node ceph]# ceph df 
GLOBAL:
    SIZE     AVAIL     RAW USED     %RAW USED 
    119G      113G        6321M          5.15 
POOLS:
    NAME     ID     USED     %USED     MAX AVAIL     OBJECTS 
    rbd      0         0         0        55177M           0 
我们3台服务器每台硬盘40G组成的120G

#附加:添加其他的mon机器------------------------ ceph-deploy mon add 主机名

#查看osd的节点状态
ceph osd tree
ceph -s


#查看osd的状态-负责数据存放的位置
ceph-deploy osd list admin-node ceph1 ceph2


#查看集群mon选举状态
ceph quorum_status --format json-pretty

-w810

Ceph Delete配置

参考文章 https://www.cnblogs.com/breezey/p/8849501.html

Copyright © i4t.com 2019 all right reserved,powered by Gitbook该文件修订时间: 2020-02-25 08:23:01

results matching ""

    No results matching ""