• 使用Ceph集群作为Kubernetes的动态分配持久化存储(转)


       使用Docker快速部署Ceph集群 , 然后使用这个Ceph集群作为Kubernetes的动态分配持久化存储。

        Kubernetes集群要使用Ceph集群需要在每个Kubernetes节点上安装ceph-common

        

        1. 为kubernetes创建一个存储池

         

    # ceph osd pool create k8s 128
    pool 'k8s' created

        2. 创建用户

    # ceph auth add client.k8s mon 'allow rx' osd 'allow rwx pool=k8s'

        k8s用户只能对k8s这个存储池有读写权限,注意一定要有执行权限才能执行ceph命令

       

        通过ceph auth list 查看

    client.k8s
    	key: AQC3Hm5Zan9LDhAAXZHCdAF39bXcEwdpV6y/cA==
    	caps: [mon] allow r
    	caps: [osd] allow rw pool=k8s

         

         在存储池k8s下创建一个镜像测试下k8s这个用户是否可以操作

         

    # rbd create k8s/foo --size 1G --id k8s
    
    # rbd map k8s/foo --id k8s
    /dev/rbd0

          k8s这个ceph用户可以对k8s这个存储池进行操作了

       3.为ceph添加一个kubernetes secret

        

        

    # echo "$(ceph auth get-key client.k8s)"|base64
    QVFDM0htNVphbjlMRGhBQVhaSENkQUYzOWJYY0V3ZHBWNnkvY0E9PQo=

        

      ceph-secret.yaml

      

    apiVersion: v1
    kind: Secret
    metadata:
      name: ceph-secret
      namespace: kube-system
    type: "kubernetes.io/rbd"
    data:
      key: "QVFDM0htNVphbjlMRGhBQVhaSENkQUYzOWJYY0V3ZHBWNnkvY0E9PQo="

       type这一行一定要有

       

    # kubectl create -f ceph-secret.yaml
    # kubectl get secret -n=kube-system|grep ceph
    ceph-secret                     kubernetes.io/rbd                     1         1m

       4.创建一个StorageClass

       ceph-rbd-storageclass.yaml

       

    apiVersion: storage.k8s.io/v1beta1
    kind: StorageClass
    metadata:
       name: fast
    provisioner: kubernetes.io/rbd
    parameters:
      monitors: 172.30.30.215:6789,172.30.30.217:6789,172.30.30.219:6789
      adminId: k8s
      adminSecretName: ceph-secret
      adminSecretNamespace: kube-system
      pool: k8s
      userId: k8s
      userSecretName: ceph-secret

       Kubernetes 1.6 以上使用 storage.k8s.io/v1

       

    # kubectl create -f ceph-rbd-storageclass.yaml
    # kubectl get storageclass
    NAME      TYPE
    fast      kubernetes.io/rbd

       

       5.测试

        ceph-pvc.json

        

    {
      "kind": "PersistentVolumeClaim",
      "apiVersion": "v1",
      "metadata": {
        "name": "claim1",
        "annotations": {
            "volume.beta.kubernetes.io/storage-class": "fast"
        }
      },
      "spec": {
        "accessModes": [
          "ReadWriteOnce"
        ],
        "resources": {
          "requests": {
            "storage": "3Gi"
          }
        }
      }
    }

       

       

    # kubectl create -f ceph-pvc.json
    
    
    # kubectl get pvc
    NAME      STATUS    VOLUME                                     CAPACITY   ACCESSMODES   AGE
    claim1    Bound     pvc-28b66dcb-6c82-11e7-94da-02672b869d7f   3Gi        RWO           11m

       现在就可以使用Ceph RBD作为Kubernetes的动态分配持久化存储了。

    转自:https://www.itency.com/topic/show.do?id=479247

  • 相关阅读:
    jQuery+ThinkPHP+Ajax实现即时消息提醒功能
    依赖注入(DI)
    控制反转(IoC)
    ajax以base64上传图片到django
    python 多进程、多线程、协程
    python3 实现tcp/udp局域网通信
    同源策略与跨域访问
    nginx+uwsgi阿里云ubuntu服务器上简单部署flask RESTful风格项目
    python3 实现 websocket server 解决中文乱码
    python IO 多路复用 epoll简单模型
  • 原文地址:https://www.cnblogs.com/hixiaowei/p/9613175.html
Copyright © 2020-2023  润新知