k8s对接ceph存储

前提条件:已经部署好ceph集群

本次实验由于环境有限,ceph集群是部署在k8s的master节点上的

一、创建ceph存储池

在ceph集群的mon节点上执行以下命令:

ceph osd pool create k8s-volumes 64 64

查看下副本数

[root@master ceph]# ceph osd pool get k8s-volumes size
size: 3

pg的设置参照以下公式:

Total PGs = ((Total_number_of_OSD * 100) / max_replication_count) / pool_count

结算的结果往上取靠近2的N次方的值。比如总共OSD数量是2,复制份数3,pool数量也是1,那么按上述公式计算出的结果是66.66。取跟它接近的2的N次方是64,那么每个pool分配的PG数量就是64。

二、在k8s的所有节点上安装ceph-common

1、配置国内 yum源地址、ceph源地址

cp -r /etc/yum.repos.d/ /etc/yum-repos-d-bak
yum install -y wget
rm -rf  /etc/yum.repos.d/*
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache
cat <<EOF > /etc/yum.repos.d/ceph.repo
[ceph]
name=Ceph packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/
enabled=1
gpgcheck=1
priority=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

[ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch
enabled=1
gpgcheck=1
priority=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
enabled=0
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
EOF

2、安装ceph-common

yum -y install ceph-common

3、将ceph的mon节点的配置文件/etc/ceph/ceph.conf 放到所有k8s节点的/etc/ceph目录下

4、将ceph的mon节点的文件 /etc/ceph/ceph.client.admin.keyring 放到所有k8s节点的/etc/ceph目录下

5、在k8s的master节点获取秘钥

[root@master ~]# grep key /etc/ceph/ceph.client.admin.keyring |awk ‘{printf "%s", $NF}‘|base64
QVFDQmRvbGNxSHlaQmhBQW45WllIbCtVd2JrTnlPV0xseGQ4RUE9PQ==

6、在k8s的master节点创建ceph的secret

cat <<EOF > /root/ceph-secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: ceph-secret
type: "kubernetes.io/rbd"
data:
  key: QVFDQmRvbGNxSHlaQmhBQW45WllIbCtVd2JrTnlPV0xseGQ4RUE9PQ==
EOF
kubectl apply -f ceph-secret.yaml

7、由于是用kubeadm部署的k8s集群,kube-controller-manager是以容器方式运行的,里面并没有ceph-common,所以采用 扩展存储卷插件 的方式来实现

7、创建存储类

cat <<EOF > /root/ceph-storageclass.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
   name: ceph-storage-class
provisioner: kubernetes.io/rbd
parameters:
  monitors: 192.168.137:6789
  adminId: admin
  adminSecretName: ceph-secret
  adminSecretNamespace: default
  pool: k8s-volumes
  userId: admin
  userSecretName: ceph-secret
EOF
kubectl apply -f ceph-secret.yaml

8、

原文地址:https://www.cnblogs.com/boshen-hzb/p/10548895.html

时间: 2024-08-30 11:46:48

k8s对接ceph存储的相关文章

k8s 基于ceph存储动态卷的使用

kubernetes 使用Ceph RBD进行动态卷配置 1. 实验环境简述:   本实验主要演示了将现有Ceph集群用作k8s 动态创建持久性存储(pv)的示例.假设您的环境已经建立了一个工作的Ceph集群. 2. 配置步骤: 1. k8s所有节点安装ceph-common软件包 yum install -y ceph-common # 在每一台k8s节点安装ceph-common软件包,无论是master节点还是node节点 如果k8s节点比较多,可以使用ansible安装 ansible

k8s 对接glusterfs存储

service 与 endpoint 是通过namespace相同,name相同,相互关联的 创建endpoint [[email protected] glusterfs]# cat glusterfs-ep.yaml apiVersion: v1 kind: Endpoints metadata: name: glusterfs namespace: tomcat subsets: - addresses: - ip: 10.0.0.11 - ip: 10.0.0.12 - ip: 10.0

Ceph 14.2.5-K8S 使用Ceph存储实战 -- &lt;6&gt;

K8S 使用Ceph存储 PV.PVC概述 管理存储是管理计算的一个明显问题.PersistentVolume子系统为用户和管理员提供了一个API,用于抽象如何根据消费方式提供存储的详细信息.于是引入了两个新的API资源:PersistentVolume和PersistentVolumeClaim PersistentVolume(PV)是集群中已由管理员配置的一段网络存储. 集群中的资源就像一个节点是一个集群资源. PV是诸如卷之类的卷插件,但是具有独立于使用PV的任何单个pod的生命周期.

k8s实践17:kubernetes对接nfs存储实现pvc动态按需创建分配绑定pv

1.开始前的想法.前面测试pv&&pvc的部署和简单配置应用,实现pod应用数据存储到pvc并且和pod解耦的目的.前面操作是全手动操作,手动创建pv,手动创建pvc,如果集群pod少,这样操作可以.假如集群有1000个以上的pod,每个pod都需要使用pvc存储数据,如果只能手动去一个个创建pv,pvc,工作量不可想像.如果可以创建pod的时候,创建pod的用户定义pvc,然后集群能够根据用户的pvc需求创建pv,实现动态的pv&&pvc创建分配.kubernetes支持

Ceph持久化存储为k8s应用提供存储方案(3)

一.CephFs介绍二.CephFS架构三.配置CephFS MDS1.创建一个Ceph文件系统1.1.以kernel client 形式挂载CephFS1.2.以FUSE client 形式挂载CephFS四.MDS主备与主主切换1.配置主主模式2.还原单主MDS 一.CephFs介绍 Ceph File System (CephFS) 是与 POSIX 标准兼容的文件系统, 能够提供对 Ceph 存储集群上的文件访问. Jewel 版本 (10.2.0) 是第一个包含稳定 CephFS 的

OpenStack Liberty Cinder对接商业存储华为S2600Tv1_FC

本文目录: 背景描述 架构参考 准备工作 控制节点 计算节点 功能测试 参考链接 ----------------------正文------------------------- 背景描述: 由于OpenStack的被接受程度越来越高,部署使用OpenStack的企业也越来越多,那承载虚机的存储使用什么成为企业考虑的重点因素,如果放在计算节点本地则无法实现快速的迁移等特性,对于宕机后的数据恢复也是挑战,所以企业数据基本都是放在共享存储上的. 传统的虚拟化例如VMware基本都是存储在商业存储上

K8S与Ceph RBD集成-多主与主从数据库示例

参考文章: https://ieevee.com/tech/2018/05/16/k8s-rbd.html https://zhangchenchen.github.io/2017/11/17/kubernetes-integrate-with-ceph/https://docs.openshift.com/container-platform/3.5/install_config/storage_examples/ceph_rbd_dynamic_example.htmlhttps://jim

解析CEPH: 存储引擎实现之一 filestore

Ceph作为一个高可用和强一致性的软件定义存储实现,去使用它非常重要的就是了解其内部的IO路径和存储实现.这篇文章主要介绍在IO路径中最底层的ObjectStore的实现之一FileStore. ObjectStore ObjectStore是Ceph OSD中最重要的概念之一,它封装了所有对底层存储的IO操作.从上图中可以看到所有IO请求在Clieng端发出,在Message层统一解析后会被OSD层分发到各个PG,每个PG都拥有一个队列,一个线程池会对每个队列进行处理. 当一个在PG队列里的I

ceph存储之ceph客户端

CEPH客户端: 大多数Ceph用户不会直接往Ceph存储集群里存储对象,他们通常会选择Ceph块设备.Ceph文件系统.Ceph对象存储之中的一个或多个: 块设备: 要实践本手册,你必须先完成存储集群入门 ,并确保 Ceph 存储集群处于 active + clean 状态,这样才能使用 Ceph 块设备. 1.在ceph-client安装ceph,在管理节点上,通过ceph-deploy把Ceph安装到ceph-client节点: ceph-deploy  install ceph-clie