ceph部署

集群时间同步

我们在之前的kubeasz部署高可用kubernetes1.17.2 并实现traefik2.1.2部署篇已经实现了基于chrony的时间同步

bs-k8s-ceph 节点和bs-k8s-gitlab节点

[root@bs-k8s-master01 ~]# scp /etc/chrony.conf 20.0.0.208:/etc/chrony.conf     
[root@bs-k8s-master01 ~]# scp /etc/chrony.conf 20.0.0.209:/etc/chrony.conf 

# systemctl restart chronyd.service
# chronyc sources -v             
===============================================================================
^* 20.0.0.202                    3   6    17     9  +2890ns[  -24us] +/-   21ms

免密钥认证

bs-k8s-ceph

# cat /service/scripts/ssh-key.sh
##########################################################################
#Author:                     zisefeizhu
#QQ:                         2********0
#Date:                       2020-03-17
#FileName:                   /service/scripts/ssh-key.sh
#URL:                        https://www.cnblogs.com/zisefeizhu/
#Description:                The test script
#Copyright (C):              2020 All rights reserved
##########################################################################
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
export $PATH
#目标主机列表
IP="
20.0.0.209
bs-k8s-ceph
20.0.0.207
bs-k8s-harbor
20.0.0.208
bs-k8s-gitlab
"
for node in ${IP};do
  sshpass -p 1 ssh-copy-id  ${node}  -o StrictHostKeyChecking=no
  if [ $? -eq 0 ];then
    echo "${node} 秘钥copy完成"
  else
    echo "${node} 秘钥copy失败"
  fi
done
# yum install -y sshpass
# ssh-keygen -t rsa
# sh -x /service/scripts/ssh-key.sh 

注:上述步骤需要注意hosts解析对应正确

准备数据盘

# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0    1G  0 part [SWAP]
└─sda3   8:3    0   18G  0 part /
sdb      8:16   0   10G  0 disk 
sdc      8:32   0   20G  0 disk 
sdd      8:48   0   20G  0 disk 
sr0     11:0    1  918M  0 rom  

在每个节点上为Journal磁盘分区, 分别为 sdb1, sdb2, 各自对应本机的2个OSD,  journal磁盘对应osd的大小为25%
使用 parted 命令进行创建分区操作
# parted /dev/sdb
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt            
(parted) mkpart primary xfs  0% 50%             
(parted) mkpart primary xfs  50% 100%            
(parted) q        
信息: You may need to update /etc/fstab.

# lsblk                                            
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0    1G  0 part [SWAP]
└─sda3   8:3    0   18G  0 part /
sdb      8:16   0   10G  0 disk 
├─sdb1   8:17   0    5G  0 part 
└─sdb2   8:18   0    5G  0 part 
sdc      8:32   0   20G  0 disk 
sdd      8:48   0   20G  0 disk 
sr0     11:0    1  918M  0 rom  

配置源

[root@bs-ceph-ceph ~]# cat /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
 
[Ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
 
[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
# scp /etc/yum.repos.d/ceph.repo 20.0.0.207:/etc/yum.repos.d/ceph.repo
ceph.repo                                                                                          100%  558   166.9KB/s   00:00    
[root@bs-ceph-ceph01 ~]# scp /etc/yum.repos.d/ceph.repo 20.0.0.208:/etc/yum.repos.d/ceph.repo
ceph.repo                                                                                          100%  558   167.2KB/s   00:00   

建立元数据
# yum clean all && yum makecache
安装必要库
# yum install snappy  leveldb gdisk python-argparse gperftools-libs  -y

部署ceph

无特殊说明都在bs-k8s-ceph节点操作

# yum install -y ceph-deploy python-pip
# ceph-deploy --version
2.0.1
# mkdir /etc/ceph
# cd /etc/ceph
# ceph-deploy new bs-k8s-ceph bs-k8s-harbor bs-k8s-gitlab
# ls
ceph.conf  ceph-deploy-ceph.log  ceph.mon.keyring
# cp ceph.conf ceph.conf-`date +%F`   //改配置文件之前一定要先备份
# vim ceph.conf
# diff ceph.conf ceph.conf-2020-03-17 
8,9d7
< public network = 20.0.0.0/24
< cluster network = 20.0.0.0/24

所有节点安装ceph组件
# yum install -y ceph
bs-k8s-ceph 初始monitor 并收集密钥
# ceph-deploy  mon create-initial 
分发密钥给bs-k8s-harbor、bs-k8s-gitlab节点
# ceph-deploy admin bs-k8s-ceph bs-k8s-harbor bs-k8s-gitlab
配置OSD
#  ceph-deploy osd create bs-k8s-ceph --data /dev/sdc --journal /dev/sdb1
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (2.0.1): /usr/bin/ceph-deploy osd create bs-k8s-ceph --data /dev/sdc --journal /dev/sdb1
[ceph_deploy.cli][INFO  ] ceph-deploy options:
[ceph_deploy.cli][INFO  ]  verbose                       : False
[ceph_deploy.cli][INFO  ]  bluestore                     : None
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x7fe10c1bb8c0>
[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ceph_deploy.cli][INFO  ]  fs_type                       : xfs
[ceph_deploy.cli][INFO  ]  block_wal                     : None
[ceph_deploy.cli][INFO  ]  default_release               : False
[ceph_deploy.cli][INFO  ]  username                      : None
[ceph_deploy.cli][INFO  ]  journal                       : /dev/sdb1
[ceph_deploy.cli][INFO  ]  subcommand                    : create
[ceph_deploy.cli][INFO  ]  host                          : bs-k8s-ceph
[ceph_deploy.cli][INFO  ]  filestore                     : None
[ceph_deploy.cli][INFO  ]  func                          : <function osd at 0x7fe10c4058c0>
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ceph_deploy.cli][INFO  ]  zap_disk                      : False
[ceph_deploy.cli][INFO  ]  data                          : /dev/sdc
[ceph_deploy.cli][INFO  ]  block_db                      : None
[ceph_deploy.cli][INFO  ]  dmcrypt                       : False
[ceph_deploy.cli][INFO  ]  overwrite_conf                : False
[ceph_deploy.cli][INFO  ]  dmcrypt_key_dir               : /etc/ceph/dmcrypt-keys
[ceph_deploy.cli][INFO  ]  quiet                         : False
[ceph_deploy.cli][INFO  ]  debug                         : False
[ceph_deploy.osd][DEBUG ] Creating OSD on cluster ceph with data device /dev/sdc
[bs-k8s-ceph][DEBUG ] connected to host: bs-k8s-ceph 
[bs-k8s-ceph][DEBUG ] detect platform information from remote host
[bs-k8s-ceph][DEBUG ] detect machine type
[bs-k8s-ceph][DEBUG ] find the location of an executable
[ceph_deploy.osd][INFO  ] Distro info: CentOS Linux 7.6.1810 Core
[ceph_deploy.osd][DEBUG ] Deploying osd to bs-k8s-ceph
[bs-k8s-ceph][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
[bs-k8s-ceph][WARNIN] osd keyring does not exist yet, creating one
[bs-k8s-ceph][DEBUG ] create a keyring file
[bs-k8s-ceph][DEBUG ] find the location of an executable
[bs-k8s-ceph][INFO  ] Running command: /usr/sbin/ceph-volume --cluster ceph lvm create --bluestore --data /dev/sdc
[bs-k8s-ceph][WARNIN] Running command: /bin/ceph-authtool --gen-print-key
[bs-k8s-ceph][WARNIN] Running command: /bin/ceph --cluster ceph --name client.bootstrap-osd --keyring /var/lib/ceph/bootstrap-osd/ceph.keyring -i - osd new dacac7e3-82b8-4d9d-a3dd-47c109f2b2fe
[bs-k8s-ceph][WARNIN] Running command: /usr/sbin/vgcreate -s 1G --force --yes ceph-7e353b38-0fe1-4b7c-b70f-72ab945c4470 /dev/sdc
[bs-k8s-ceph][WARNIN]  stdout: Physical volume "/dev/sdc" successfully created.
[bs-k8s-ceph][WARNIN]  stdout: Volume group "ceph-7e353b38-0fe1-4b7c-b70f-72ab945c4470" successfully created
[bs-k8s-ceph][WARNIN] Running command: /usr/sbin/lvcreate --yes -l 100%FREE -n osd-block-dacac7e3-82b8-4d9d-a3dd-47c109f2b2fe ceph-7e353b38-0fe1-4b7c-b70f-72ab945c4470
[bs-k8s-ceph][WARNIN]  stdout: Logical volume "osd-block-dacac7e3-82b8-4d9d-a3dd-47c109f2b2fe" created.
[bs-k8s-ceph][WARNIN] Running command: /bin/ceph-authtool --gen-print-key
[bs-k8s-ceph][WARNIN] Running command: /bin/mount -t tmpfs tmpfs /var/lib/ceph/osd/ceph-0
[bs-k8s-ceph][WARNIN] Running command: /usr/sbin/restorecon /var/lib/ceph/osd/ceph-0
[bs-k8s-ceph][WARNIN] Running command: /bin/chown -h ceph:ceph /dev/ceph-7e353b38-0fe1-4b7c-b70f-72ab945c4470/osd-block-dacac7e3-82b8-4d9d-a3dd-47c109f2b2fe
[bs-k8s-ceph][WARNIN] Running command: /bin/chown -R ceph:ceph /dev/dm-0
[bs-k8s-ceph][WARNIN] Running command: /bin/ln -s /dev/ceph-7e353b38-0fe1-4b7c-b70f-72ab945c4470/osd-block-dacac7e3-82b8-4d9d-a3dd-47c109f2b2fe /var/lib/ceph/osd/ceph-0/block
[bs-k8s-ceph][WARNIN] Running command: /bin/ceph --cluster ceph --name client.bootstrap-osd --keyring /var/lib/ceph/bootstrap-osd/ceph.keyring mon getmap -o /var/lib/ceph/osd/ceph-0/activate.monmap
[bs-k8s-ceph][WARNIN]  stderr: got monmap epoch 1
[bs-k8s-ceph][WARNIN] Running command: /bin/ceph-authtool /var/lib/ceph/osd/ceph-0/keyring --create-keyring --name osd.0 --add-key AQB5mHBeloJpKBAAfwSp+ooYl7IYgghhVNzIYw==
[bs-k8s-ceph][WARNIN]  stdout: creating /var/lib/ceph/osd/ceph-0/keyring
[bs-k8s-ceph][WARNIN] added entity osd.0 auth auth(auid = 18446744073709551615 key=AQB5mHBeloJpKBAAfwSp+ooYl7IYgghhVNzIYw== with 0 caps)
[bs-k8s-ceph][WARNIN] Running command: /bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0/keyring
[bs-k8s-ceph][WARNIN] Running command: /bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0/
[bs-k8s-ceph][WARNIN] Running command: /bin/ceph-osd --cluster ceph --osd-objectstore bluestore --mkfs -i 0 --monmap /var/lib/ceph/osd/ceph-0/activate.monmap --keyfile - --osd-data /var/lib/ceph/osd/ceph-0/ --osd-uuid dacac7e3-82b8-4d9d-a3dd-47c109f2b2fe --setuser ceph --setgroup ceph
[bs-k8s-ceph][WARNIN] --> ceph-volume lvm prepare successful for: /dev/sdc
[bs-k8s-ceph][WARNIN] Running command: /bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0
[bs-k8s-ceph][WARNIN] Running command: /bin/ceph-bluestore-tool --cluster=ceph prime-osd-dir --dev /dev/ceph-7e353b38-0fe1-4b7c-b70f-72ab945c4470/osd-block-dacac7e3-82b8-4d9d-a3dd-47c109f2b2fe --path /var/lib/ceph/osd/ceph-0 --no-mon-config
[bs-k8s-ceph][WARNIN] Running command: /bin/ln -snf /dev/ceph-7e353b38-0fe1-4b7c-b70f-72ab945c4470/osd-block-dacac7e3-82b8-4d9d-a3dd-47c109f2b2fe /var/lib/ceph/osd/ceph-0/block
[bs-k8s-ceph][WARNIN] Running command: /bin/chown -h ceph:ceph /var/lib/ceph/osd/ceph-0/block
[bs-k8s-ceph][WARNIN] Running command: /bin/chown -R ceph:ceph /dev/dm-0
[bs-k8s-ceph][WARNIN] Running command: /bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0
[bs-k8s-ceph][WARNIN] Running command: /bin/systemctl enable ceph-volume@lvm-0-dacac7e3-82b8-4d9d-a3dd-47c109f2b2fe
[bs-k8s-ceph][WARNIN]  stderr: Created symlink from /etc/systemd/system/multi-user.target.wants/ceph-volume@lvm-0-dacac7e3-82b8-4d9d-a3dd-47c109f2b2fe.service to /usr/lib/systemd/system/ceph-volume@.service.
[bs-k8s-ceph][WARNIN] Running command: /bin/systemctl enable --runtime ceph-osd@0
[bs-k8s-ceph][WARNIN]  stderr: Created symlink from /run/systemd/system/ceph-osd.target.wants/ceph-osd@0.service to /usr/lib/systemd/system/ceph-osd@.service.
[bs-k8s-ceph][WARNIN] Running command: /bin/systemctl start ceph-osd@0
[bs-k8s-ceph][WARNIN] --> ceph-volume lvm activate successful for osd ID: 0
[bs-k8s-ceph][WARNIN] --> ceph-volume lvm create successful for: /dev/sdc
[bs-k8s-ceph][INFO  ] checking OSD status...
[bs-k8s-ceph][DEBUG ] find the location of an executable
[bs-k8s-ceph][INFO  ] Running command: /bin/ceph --cluster=ceph osd stat --format=json
[ceph_deploy.osd][DEBUG ] Host bs-k8s-ceph is now ready for osd use.

# ceph-deploy osd create bs-k8s-ceph --data /dev/sdd --journal /dev/sdb2
# ceph-deploy osd create bs-k8s-harbor --data /dev/sdc --journal /dev/sdb1
# ceph-deploy osd create bs-k8s-harbor --data /dev/sdd --journal /dev/sdb2
# ceph-deploy osd create bs-k8s-gitlab --data /dev/sdc --journal /dev/sdb1
# ceph-deploy osd create bs-k8s-gitlab --data /dev/sdd --journal /dev/sdb2

# ceph -s
  cluster:
    id:     ed4d59da-c861-4da0-bbe2-8dfdea5be796
    health: HEALTH_WARN
            no active mgr    //没有部署mgr
 
  services:
    mon: 3 daemons, quorum bs-k8s-harbor,bs-k8s-gitlab,bs-k8s-ceph
    mgr: no daemons active
    osd: 6 osds: 6 up, 6 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:     
 
# ceph osd tree
ID CLASS WEIGHT  TYPE NAME              STATUS REWEIGHT PRI-AFF 
-1       0.11151 root default                                   
-3       0.03717     host bs-k8s-ceph                           
 0   hdd 0.01859         osd.0              up  1.00000 1.00000 
 1   hdd 0.01859         osd.1              up  1.00000 1.00000 
-7       0.03717     host bs-k8s-gitlab                         
 4   hdd 0.01859         osd.4              up  1.00000 1.00000 
 5   hdd 0.01859         osd.5              up  1.00000 1.00000 
-5       0.03717     host bs-k8s-harbor                         
 2   hdd 0.01859         osd.2              up  1.00000 1.00000 
 3   hdd 0.01859         osd.3              up  1.00000 1.00000 

# ll
总用量 164
-rw------- 1 root root   113 3月  17 17:28 ceph.bootstrap-mds.keyring
-rw------- 1 root root   113 3月  17 17:28 ceph.bootstrap-mgr.keyring
-rw------- 1 root root   113 3月  17 17:28 ceph.bootstrap-osd.keyring
-rw------- 1 root root   113 3月  17 17:28 ceph.bootstrap-rgw.keyring
-rw------- 1 root root   151 3月  17 17:28 ceph.client.admin.keyring
-rw-r--r-- 1 root root   310 3月  17 17:30 ceph.conf
-rw-r--r-- 1 root root   251 3月  17 17:24 ceph.conf-2020-03-17
-rw-r--r-- 1 root root 90684 3月  17 17:32 ceph-deploy-ceph.log
-rw------- 1 root root    73 3月  17 17:24 ceph.mon.keyring
-rw-r--r-- 1 root root    92 12月 13 06:01 rbdmap
# chmod +r ceph.client.admin.keyring
# ceph-deploy mgr create bs-k8s-ceph bs-k8s-harbor bs-k8s-gitlab

# ceph -s
  cluster:
    id:     ed4d59da-c861-4da0-bbe2-8dfdea5be796
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum bs-k8s-harbor,bs-k8s-gitlab,bs-k8s-ceph
    mgr: bs-k8s-ceph(active), standbys: bs-k8s-harbor, bs-k8s-gitlab
    osd: 6 osds: 6 up, 6 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   6.0 GiB used, 108 GiB / 114 GiB avail
    pgs:     

开启dashboard

# vim ceph.conf
[mgr]
mgr_modules = dashboard

# ceph mgr module enable dashboard
# ceph dashboard create-self-signed-cert
Self-signed certificate created

自签证书
# openssl req -new -nodes -x509   -subj "/O=IT/CN=ceph-mgr-dashboard" -days 3650   -keyout dashboard.key -out dashboard.crt -extensions v3_ca
Generating a 2048 bit RSA private key
...............................................+++
.................+++
writing new private key to 'dashboard.key'
-----

配置服务地址、端口,默认的端口是8443,这里改为7000
# ceph config set mgr mgr/dashboard/server_addr 0.0.0.0
# ceph config set mgr mgr/dashboard/server_port 7000
# ceph dashboard set-login-credentials admin zisefeizhu
Username and password updated
# ceph mgr services
{
    "dashboard": "https://bs-k8s-ceph:8443/"
}

同步集群ceph配置文件
# ceph-deploy --overwrite-conf config push bs-k8s-ceph bs-k8s-gitlab bs-k8s-harbor
# systemctl restart ceph-mgr@bs-k8s-ceph.service
# ceph -s
  cluster:
    id:     ed4d59da-c861-4da0-bbe2-8dfdea5be796
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum bs-k8s-harbor,bs-k8s-gitlab,bs-k8s-ceph
    mgr: bs-k8s-ceph(active), standbys: bs-k8s-harbor, bs-k8s-gitlab
    osd: 6 osds: 6 up, 6 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   6.0 GiB used, 108 GiB / 114 GiB avail
    pgs:     
 
# ceph mgr services
{
    "dashboard": "https://0.0.0.0:7000/"
}

注:上述部署失败的主要原因是主机名不对,时间同步不对。web访问已经改成了任意节点都可以,及哪个节点mgr处于active就使用该节点IP访问。

至此ceph部署完成。

优化ceph配置

因为我对于ceph的认知是真的不足,所以我只做适当优化。加油啊 ,不能太弱了。

因为我的集群内核是4.4,而map待映射机器内核太低不支 feature flag 400000000000000,需要kernel>=4.5的机器成功。所以做一下优化
三个节点
#  ceph osd crush tunables hammer
adjusted tunables profile to hammer

允许 ceph 集群删除 pool
# cat ceph.conf
[global]
fsid = ed4d59da-c861-4da0-bbe2-8dfdea5be796
mon_initial_members = bs-k8s-ceph, bs-k8s-harbor, bs-k8s-gitlab
mon_host = 20.0.0.209,20.0.0.207,20.0.0.208
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

public network = 20.0.0.0/24
cluster network = 20.0.0.0/24

[mgr]
mgr_modules = dashboard

[mon]
mon_allow_pool_delete = true

同步配置文件
#ceph-deploy --overwrite-conf config push bs-k8s-ceph bs-k8s-gitlab bs-k8s-harbor

测试
#systemctl restart ceph-mon.target
#ceph osd pool create rbd 128
#ceph osd pool rm rbd rbd --yes-i-really-really-mean-it
pool 'rbd' created

完成部署

原文地址:https://www.cnblogs.com/zisefeizhu/p/12512377.html