kubernetes 数据持久化 使用ceph存储-RBD

一: PV、PVC概述

 

PersistentVolume(PV)是集群中已由管理员配置的一段网络存储。集群中的资源就像一个节点是一个集群资源。 PV是诸如卷之类的卷插件,但是具有独立于使用PV的任何单个pod的生命周期。 该API对象包含存储的实现细节,即NFS,iSCSI或云提供商特定的存储系统。

PersistentVolumeClaim(PVC)是用户存储的请求 。 可以请求特定的大小和访问模式。

虽然PersistentVolumeClaims允许用户使用抽象存储资源,但是常见的是,用户需要具有不同属性(如性能)的PersistentVolumes,用于不同的问题。 管理员需要能够提供多种不同于PersistentVolumes,而不仅仅是大小和访问模式,而不会使用户了解这些卷的实现细节。 对于这些需求,存在StorageClass资源。

 

StorageClass为集群提供了一种描述他们提供的存储的“类”的方法 。 不同的类可能映射到服务质量级别,或备份策略,或者由群集管理员确定的任意策略。 Kubernetes本身对于什么类别代表是不言而喻的。 这个概念有时在其他存储系统中称为“配置文件”

POD动态供给

动态供给主要是能够自动帮你创建pv,需要多大的空间就创建多大的pv。

如果是存储静态供给的话,会需要我们手动去创建pv。而动态供给主要的一个实现就是StorageClass存储对象,其实它就是声明你使用哪个存储,然后帮你去连接,再帮你去自动创建pv。

 

二: 使用RBD做为持久数据卷

 

配置storageclass

 

# cat ceph-rbd-storageclass-1.yaml

kind: StorageClass

apiVersion: storage.k8s.io/v1

metadata:

  name: dynamic-ceph-rbd

provisioner: ceph.com/rbd

parameters:

  monitors: 100.100.100.100:6789,100.100.100.101:6789,100.100.100.102:6789

  adminId: admin

  adminSecretName: ceph-secret

  adminSecretNamespace: default

  pool: rbd

  userId: admin

  userSecretName: ceph-secret

  fsType: ext4

  imageFormat: "2"

  imageFeatures: "layering"

 

#

 

 

使sc生效

# kubectl apply -f ceph-rbd-storageclass-1.yaml

storageclass.storage.k8s.io/dynamic-ceph-rbd created

#

#

查看sc

#

# kubectl get sc

NAME                  PROVISIONER      AGE

dynamic-ceph-rbd      ceph.com/rbd     18s

managed-nfs-storage   fuseim.pri/ifs   28d

nginx.storageclass    ceph.com/rbd     29d

#

整个测试过程

创建pvc测试

# vim  ceph-rbd-pvc-2.yaml

 

kind: PersistentVolumeClaim

apiVersion: v1

metadata:

  name: ceph-rbd-claim

spec:

  accessModes:

    - ReadWriteOnce

  storageClassName: dynamic-ceph-rbd

  resources:

    requests:

      storage: 10Gi

 

~

~

 

#

# kubectl apply -f ceph-rbd-pvc-2.yaml

persistentvolumeclaim/ceph-rbd-claim created

#

#

 

 

查看

#

# kubectl get sc

NAME                  PROVISIONER      AGE

dynamic-ceph-rbd      ceph.com/rbd     18s

# kubectl get pvc

NAME             STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS          AGE

ceph-rbd-claim   Bound    pvc-cfd0d3b9-2e72-42e5-9990-452ab574c7e5   10240    RWO            dynamic-ceph-rbd      14s

 

# kubectl get pv

NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                                      STORAGECLASS          REASON   AGE

pvc-cfd0d3b9-2e72-42e5-9990-452ab574c7e5   1536Mi     RWO            Delete           Bound       default/ceph-rbd-claim                     dynamic-ceph-rbd               31s

 

#

 

 

创建 nginx pod 挂载测试

#

# cat ceph-rbd-deployment-3.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

  name: nginx-rbd

spec:

  selector:

    matchLabels:

           app: nginx-rbd

  replicas: 2

  template:

    metadata:

      labels:

        app: nginx-rbd

    spec:

      containers:

      - name: nginx-rbd

        image: nginx

        ports:

        - containerPort: 80

        volumeMounts:

          - mountPath: "/usr/share/nginx/html"

            name: ceph-rbd

      volumes:

        - name: ceph-rbd

          persistentVolumeClaim:

            claimName: ceph-rbd-claim

 

#

 

# kubectl apply -f ceph-rbd-deployment-3.yaml

deployment.apps/nginx-rbd created

#

#

#

 

查看

#

# kubectl get pod |grep nginx-rbd

nginx-rbd-6594b46c9f-2sqlk                0/1     ContainerCreating   0          28s

nginx-rbd-6594b46c9f-jq5zh                0/1     ContainerCreating   0          28s

#

 

#

# kubectl get pod |grep nginx-rbd

nginx-rbd-6594b46c9f-2sqlk                0/1     ContainerCreating   0          83s

nginx-rbd-6594b46c9f-jq5zh                1/1     Running             0          83s

#

 

 

 

#

# kubectl get pod -o wide|grep nginx-rbd

nginx-rbd-6594b46c9f-2sqlk                0/1     ContainerCreating   0          102s   <none>        node-18   <none>           <none>

nginx-rbd-6594b46c9f-jq5zh                1/1     Running             0          102s   10.244.1.45   node-17   <none>           <none>

#

#

 

修改文件内容

# kubectl exec -it nginx-rbd-6594b46c9f-jq5zh  sh

#

# df -Th

Filesystem              Type     Size  Used Avail Use% Mounted on

overlay                 overlay   49G   23G   27G  46% /

tmpfs                   tmpfs     64M     0   64M   0% /dev

tmpfs                   tmpfs    3.9G     0  3.9G   0% /sys/fs/cgroup

/dev/mapper/centos-root xfs       49G   23G   27G  46% /etc/hosts

shm                     tmpfs     64M     0   64M   0% /dev/shm

/dev/rbd1               ext4     1.5G  4.5M  1.5G   1% /usr/share/nginx/html

tmpfs                   tmpfs    3.9G   12K  3.9G   1% /run/secrets/kubernetes.io/serviceaccount

tmpfs                   tmpfs    3.9G     0  3.9G   0% /proc/acpi

tmpfs                   tmpfs    3.9G     0  3.9G   0% /proc/scsi

tmpfs                   tmpfs    3.9G     0  3.9G   0% /sys/firmware

#

 

# docker cp cpts_1378_cgb 72502155fb47:/usr/share/nginx/html/

 

配置svc

# cat ceph-rbd-service-4.yaml

apiVersion: v1

kind: Service

metadata:

  name: ceph-rbd-service

spec:

  type: NodePort

  ports:

   - protocol: TCP

     port: 80

     targetPort: 80

  selector:

    app: nginx-rbd

 

#

 

 

# kubectl apply -f ceph-rbd-service-4.yaml

service/ceph-rbd-service created

#

# kubectl get services

NAME                  TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE

ceph-rbd-service      NodePort    10.0.0.168   <none>        80:31203/TCP   6s

 

#

Svc IP 访问测试

 

http://100.100.100.100:31203/

配置 ingress 解析

#

# cat ceph-rbd-ingress-5.yaml

apiVersion: v1

kind: List

items:

- apiVersion: extensions/v1beta1

  kind: Ingress

  metadata:

    name: ceph-rbd-ingress

    namespace: default

    annotations:

      nginx.ingress.kubernetes.io/rewrite-target: /

  spec:

    rules:

    - host: test.test.cn

      http:

        paths:

        - path: /

          backend:

            serviceName: ceph-rbd-service

            servicePort: 80

 

 

# kubectl apply -f ceph-rbd-ingress-5.yaml

ingress.extensions/ceph-rbd-ingress created

#

 

# kubectl get ingress

NAME                  HOSTS          ADDRESS   PORTS   AGE

ceph-rbd-ingress     test.test.cn             80      5s

 

#

#

 

域名访问测试

http://test.test.cn/

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值