zoukankan      html  css  js  c++  java
  • SUSE CaaS Platform 4

     Kubernetes PersistentVolumes 持久化存储方案中,提供两种 API 资源方式: PersistentVolume(简称 PV) 和 PersistentVolumeClaim(简称 PVC)。PV 可理解为集群资源,PVC 可理解为对集群资源的请求,Kubernetes 支持很多种持久化卷存储类型。Ceph 是一个开源的分布式存储系统,支持对象存储、块设备、文件系统,具有可靠性高、管理方便、伸缩性强等特点。在日常工作中,我们会遇到使用 k8s 时后端存储需要持久化,这样不管 Pod 调度到哪个节点,都能挂载同一个卷,从而很容易读取或存储持久化数据,我们可以使用 Kubernetes 结合 Ceph 完成。

    图1 Pod 存储卷、PVC 及存储设备的调用关系

     实验环境搭建 - 静态供给

     图2 实验环境架构

     1、所有节点安装

    # zypper -n in ceph-common

    复制 ceph.conf 到 worker 节点上

    # scp admin:/etc/ceph/ceph.conf /etc/ceph/ 

    2、创建池

    # ceph osd pool create caasp4 128

    3、创建 key ,并存储到 /etc/ceph/ 目录中

    # ceph auth get-or-create client.caasp4 mon 'allow r' 
        osd 'allow rwx pool=caasp4' -o /etc/ceph/caasp4.keyring

    4、创建 RBD 镜像,2G

    # rbd create caasp4/ceph-image-test -s 2048

    5、查看 ceph 集群 key 信息,并生成基于 base64 编码的key

    # ceph auth list
    .......
    client.admin
            key: AQA9w4VdAAAAABAAHZr5bVwkALYo6aLVryt7YA==
            caps: [mds] allow *
            caps: [mgr] allow *
            caps: [mon] allow *
            caps: [osd] allow *
    .......
    client.caasp4
            key: AQD1VJddM6QIJBAAlDbIWRT/eiGhG+aD8SB+5A==
            caps: [mon] allow r
            caps: [osd] allow rwx pool=caasp4

    client.caasp4 密钥以 base64 编码

    # echo AQD1VJddM6QIJBAAlDbIWRT/eiGhG+aD8SB+5A== | base64  
    QVFEMVZKZGRNNlFJSkJBQWxEYklXUlQvZWlHaEcrYUQ4U0IrNUE9PQo=

    6、Master 节点上,创建 secret 资源,插入 base64 key

    # vi ceph-secret-test.yaml
    apiVersion: v1
    kind: Secret
    metadata:
      name: ceph-secret-test
    data:
      key: QVFEMVZKZGRNNlFJSkJBQWxEYklXUlQvZWlHaEcrYUQ4U0IrNUE9PQo=
    # kubectl create -f ceph-secret-test.yaml
    secret/ceph-secret-test created
    # kubectl get secrets ceph-secret-test
    NAME               TYPE     DATA   AGE
    ceph-secret-test   Opaque   1      14s

    7、Master 节点上,创建 Persistent Volume

    # vim ceph-pv-test.yaml
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: ceph-pv-test
    spec:
      capacity:
        storage: 2Gi
      accessModes:
        - ReadWriteOnce
      rbd:
        monitors:
          - 192.168.2.40:6789
          - 192.168.2.41:6789
          - 192.168.2.42:6789
        pool: caasp4
        image: ceph-image-test
        user: caasp4
        secretRef:
          name: ceph-secret-test
        fsType: ext4
        readOnly: false
      persistentVolumeReclaimPolicy: Retain
    # kubectl create -f ceph-pv-test.yaml
    
    # kubectl get pv
    NAME           CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
    ceph-pv-test   2Gi        RWO            Retain           Available                                   29s
    

      8、创建 Persistent Volume Claim (PVC)

    # vim ceph-claim-test.yaml
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: ceph-claim-test
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 2Gi
    # kubectl create -f ceph-claim-test.yaml
    # kubectl get pvc
    NAME              STATUS   VOLUME         CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    ceph-claim-test   Bound    ceph-pv-test   2Gi        RWO                           14s

     9、创建 Pod

    # vim ceph-pod-test.yaml
    apiVersion: v1
    kind: Pod
    metadata:
      name: ceph-pod-test
    spec:
      containers:
      - name: ceph-busybox
        image: busybox
        command: ["sleep", "60000"]
        volumeMounts:
        - name: ceph-vol-test
          mountPath: /usr/share/busybox
          readOnly: false
      volumes:
      - name: ceph-vol-test
        persistentVolumeClaim:
          claimName: ceph-claim-test
    # kubectl create -f ceph-pod-test.yaml
    # kubectl get pods
    NAME            READY   STATUS              RESTARTS   AGE
    ceph-pod-test   0/1     ContainerCreating   0          6s
    # kubectl get pods -o wide
    NAME            READY   STATUS              RESTARTS   AGE   IP       NODE      
    ceph-pod-test   0/1     ContainerCreating   0          32s   <none>   worker02  

    10、worker02 节点显示 RBD 映射

    # rbd showmapped
    id pool   namespace image           snap device    
    0  caasp4           ceph-image-test -    /dev/rbd0
    # df -Th | grep ceph
    /dev/rbd0               ext4      2.0G  6.0M  1.9G   1% /var/lib/kubelet/plugins/kubernetes.io/rbd/mounts/caasp4-image-ceph-image-test
    

     

  • 相关阅读:
    HDU 6071
    HDU 6073
    HDU 2124 Repair the Wall(贪心)
    HDU 2037 今年暑假不AC(贪心)
    HDU 1257 最少拦截系统(贪心)
    HDU 1789 Doing Homework again(贪心)
    HDU 1009 FatMouse' Trade(贪心)
    HDU 2216 Game III(BFS)
    HDU 1509 Windows Message Queue(队列)
    HDU 1081 To The Max(动态规划)
  • 原文地址:https://www.cnblogs.com/alfiesuse/p/11623973.html
Copyright © 2011-2022 走看看