kubernetes挂载ceph rbd和cephfs的方法

[toc]

k8s挂载Ceph RBD

k8s挂载Ceph RBD有两种方式,一种是传统的PV&PVC的方式,也就是说需要管理员先预先创建好相关PV和PVC,然后对应的deployment或者replication来挂载PVC使用。而在k8s 1.4以后,kubernetes提供了一种更加方便的动态创建PV的方式,即StorageClass。使用StorageClass时无需预先创建固定大小的PV来等待使用者创建PVC使用,而是直接创建PVC即可使用。

需要说明的是,要想让k8s的node节点执行挂载ceph rbd的指令,需要在所有节点上安装ceph-common包。直接通过yum安装即可。

PV & PVC方式

创建secret

#获取管理key并进行64位编码
ceph auth get-key client.admin | base64

创建ceph-secret.yml文件,内容如下:

apiVersion: v1
kind: Secret
metadata:
  name: ceph-secret
data:
#Please note this value is base64 encoded.
# echo "keystring"|base64
  key: QVFDaWtERlpzODcwQWhBQTdxMWRGODBWOFZxMWNGNnZtNmJHVGc9PQo=

创建PV

创建test.pv.yml文件,内容如下:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: test-pv
spec:
  capacity:
    storage: 2Gi
  accessModes:
    - ReadWriteOnce
  rbd:
    #ceph的monitor节点
    monitors:
      - 10.5.10.117:6789
      - 10.5.10.236:6789
      - 10.5.10.227:6789
    #ceph的存储池名字
    pool: data
    #在存储池里创建的image的名字
    image: data
    user: admin
    secretRef:
      name: ceph-secret
    fsType: xfs
    readOnly: false
  persistentVolumeReclaimPolicy: Recycle
kubectl create -f test.pv.yml

创建PVC

创建test.pvc.yml文件,内容如下:

kind: PersistentVolumeClaim
apiVersion: extensions/v1beta1
metadata:
  name: test-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 2Gi
kubectl create -f test.pvc.yml

创建deployment挂载PVC

创建test.dm文件,内容如下:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: test
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: test
    spec:
      containers:
      - name: test
        image: dk-reg.op.douyuyuba.com/op-base/openresty:1.9.15
        ports:
        - containerPort: 80
        volumeMounts:
          - mountPath: "/data"
            name: data
      volumes:
        - name: data
          persistentVolumeClaim:
            claimName: test-pvc
kubectl create -f test.dm.yml

StorageClass方式

创建secret

由于StorageClass要求ceph的secret type必须为kubernetes.io/rbd,所以在上面PV & PVC方式中创建的secret无法使用,需要重新创建。如下:

# 其中key的部分为ceph原生的key,未使用base64重新编码
kubectl create secret generic ceph-secret --type="kubernetes.io/rbd" --from-literal=key=‘AQCikDFZs870AhAA7q1dF80V8Vq1cF6vm6bGTg==‘ --namespace=kube-system
kubectl create secret generic ceph-secret --type="kubernetes.io/rbd" --from-literal=key=‘AQCikDFZs870AhAA7q1dF80V8Vq1cF6vm6bGTg==‘ --namespace=default

创建StorageClass

创建test.sc.yml文件,内容如下:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: test-storageclass
provisioner: kubernetes.io/rbd
parameters:
  monitors: 192.168.1.11:6789,192.168.1.12:6789,192.168.1.13:6789
  # Ceph 客户端用户ID(非k8s的)
  adminId: admin
  adminSecretName: ceph-secret
  adminSecretNamespace: kube-system
  pool: data
  userId: admin
  userSecretName: ceph-secret

创建PVC

创建test.pvc.yml文件,内容如下:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: test-sc-pvc
  annotations:
    volume.beta.kubernetes.io/storage-class: test-storageclass
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 2Gi
kubectl create -f test.pvc.yml

至于挂载,与PV & PVC的方式一致,不再重复说明

k8s挂载Cephfs

上面大致说明了使用k8s挂载ceph rbd块设备的方法。这里简单说下k8s挂载ceph 文件系统的方法。

首先secret可以直接与上面复用,不用再单独创建。也不需要再创建pv和pvc。直接在deployment中挂载即可,方法如下:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: test
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: test
    spec:
      containers:
      - name: test
        image: dk-reg.op.douyuyuba.com/op-base/openresty:1.9.15
        ports:
        - containerPort: 80
        volumeMounts:
          - mountPath: "/data"
            name: data
      volumes:
        - name: data
          cephfs:
            monitors:
              - 10.5.10.117:6789
              - 10.5.10.236:6789
              - 10.5.10.227:6789
            path: /data
            user: admin
            secretRef:
              name: ceph-secret

原文地址:https://www.cnblogs.com/breezey/p/8849501.html

时间: 2024-10-22 00:38:55

kubernetes挂载ceph rbd和cephfs的方法的相关文章

kubernetes整合ceph rbd

一.有一个ceph cluster,假设已经准备好了,文档网上一大堆 二.开始集成ceph和kuberntes 2.1 禁用rbd features rbd image有4个 features,layering, exclusive-lock, object-map, fast-diff, deep-flatten因为目前内核仅支持layering,修改默认配置每个ceph node的/etc/ceph/ceph.conf 添加一行rbd_default_features = 1这样之后创建的i

ceph(rbd、cephfs)磁盘挂载详解

1:RBD方式挂载 2:cephfs 挂载 3:对象文件上传下载 ####################RBD方式挂载################################### 1:安装ceph软件包.同步集群配置文件和key Yum install ceph –y 2:新建一个ceph pool ceph osd pool create {pool-name} {pg-num} [{pgp-num}]   实例 ceph osd pool create rbdpool 100 1

CentOS7 Ceph RBD CephFS 存储

Ceph RBD  CephFS 存储 环境准备: (这里只做基础测试, ceph-manager , ceph-mon, ceph-osd 一共三台) 10.6.0.140 = ceph-manager 10.6.0.187 = ceph-mon-1 10.6.0.188 = ceph-osd-1 10.6.0.94 = node-94 注: ceph 对时间要求很严格, 一定要同步所有的服务器时间 一.在 manager 上面修改 /etc/hosts : 10.6.0.187 ceph-m

Ceph RBD CephFS 存储

Ceph RBD  CephFS 存储 环境准备: (这里只做基础测试, ceph-manager , ceph-mon, ceph-osd 一共三台) 10.6.0.140 = ceph-manager 10.6.0.187 = ceph-mon-1 10.6.0.188 = ceph-osd-1 10.6.0.94 = node-94 注: ceph 对时间要求很严格, 一定要同步所有的服务器时间 一.在 manager 上面修改 /etc/hosts : 10.6.0.187 ceph-m

理解 OpenStack + Ceph (3):Ceph RBD 接口和工具 [Ceph RBD API and Tools]

本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 与 OpenStack 集成的实现 (4)TBD Ceph 作为一个统一的分布式存储,其一大特色是提供了丰富的编程接口.我们来看看下面这张经典的图: 其中,librados 是 Ceph 的基础接口,其它的接口比如 RADOSGW, RBD 和 CephFS 都是基于 librados 实现的.本文试着分析下 Ceph 的各种接口库和常用的工具.

ceph(2)--Ceph RBD 接口和工具

本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 (5)Ceph 与 OpenStack 集成的实现 (6)QEMU-KVM 和 Ceph RBD 的 缓存机制总结 (7)Ceph 的基本操作和常见故障排除方法 (8)关于Ceph PGs Ceph 作为一个统一的分布式存储,其一大特色是提供了丰富的编程接口.我们来看看下面这张经典的图: 其中,li

几个 Ceph 性能优化的新方法和思路(2015 SH Ceph Day 参后感)

一周前,由 Intel 与 Redhat 在10月18日联合举办了 Shanghai Ceph Day.在这次会议上,多位专家做了十几场非常精彩的演讲.本文就这些演讲中提到的 Ceph性能优化方面的知识和方法,试着就自己的理解做个总结. 0. 常规的 Ceph 性能优化方法 (1). 硬件层面 硬件规划:CPU.内存.网络 SSD选择:使用 SSD 作为日志存储 BIOS设置:打开超线程(HT).关闭节能.关闭 NUMA 等 (2). 软件层面 Linux OS:MTU.read_ahead 等

Kubernetes持久化Ceph存储

一.依然简介 Kubernetes支持的卷类型详见:https://kubernetes.io/docs/concepts/storage/volumes/ Kubernetes使用Persistent Volume和Persistent Volume Claim两种API资源来管理存储. PersistentVolume(简称PV):由管理员设置的存储,它是集群的一部分.就像节点(Node)是集群中的资源一样,PV也是集群中的资源.它包含存储类型,存储大小和访问模式.它的生命周期独立于Pod,

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