1. 程式人生 > >使用Ceph集群作為Kubernetes的動態分配持久化存儲(轉)

使用Ceph集群作為Kubernetes的動態分配持久化存儲(轉)

get href meta beta cli 持久 ref ces 現在

使用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

使用Ceph集群作為Kubernetes的動態分配持久化存儲(轉)