{"id":50450,"date":"2023-09-11T03:41:36","date_gmt":"2023-12-06T04:47:36","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8-rook-ceph\/"},"modified":"2024-05-03T23:09:05","modified_gmt":"2024-05-03T15:09:05","slug":"%e8%af%95%e7%94%a8-rook-ceph","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8-rook-ceph\/","title":{"rendered":"\u8bd5\u7528 Rook\/Ceph"},"content":{"rendered":"<h1>\u9996\u5148<\/h1>\n<p>Kubernetes \u7684 PersistentVolume \u6709\u591a\u79cd\u7c7b\u578b\u53ef\u4f9b\u9009\u62e9\u3002<br \/>\n\u8fc4\u4eca\u4e3a\u6b62\uff0c\u6211\u5df2\u5728\u4ee5\u4e0b\u6587\u7ae0\u4e2d\u5c1d\u8bd5\u4e862\u79cd\u7c7b\u578b\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Longhorn\uff08v1.0\uff09 with Rancher<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">glusterfs on k8s<\/ul>\n<p>\u6211\u60f3\u5c1d\u8bd5\u4e00\u4e0b Ceph \u8fd9\u6b21\u3002<br \/>\n\u6211\u4eec\u5c06\u4f7f\u7528\u4e00\u4e2a\u540d\u4e3a Rook \u7684\u5b58\u50a8\u64cd\u4f5c\u5668\u6765\u8fdb\u884c\u6784\u5efa\u3002<\/p>\n<h1>\u73af\u5883\u4fe1\u606f<\/h1>\n<p>\u5728\u4f7f\u7528kubeadm\u642d\u5efa\u7684Kubernetes\u4e0a\u8fdb\u884c\u90e8\u7f72\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">OS\uff1aUbuntu 18.04.5 LTS<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Kubernetes\uff1av1.19.7<\/ul>\n<\/li>\n<\/ul>\n<p>Node \u306f\uff13\u53f0\u69cb\u6210\u3067\u3059<br \/>\nNode \u306b\u306f\u30eb\u30fc\u30c8\u30c7\u30a3\u30b9\u30af\u306e\u4ed6\u306b PV \u7528\u306e\u7a7a\u30c7\u30a3\u30b9\u30af\u3092\u30a2\u30bf\u30c3\u30c1\u3057\u3066\u3044\u307e\u3059\uff08\u203b1\uff09<\/p>\n<p>Ceph\uff1a15.2.11<br \/>\nRook\uff1av1.6.1<\/p>\n<p>\u53ea\u9700\u4e00\u4e2a\u9009\u9879\uff0c\u5c06\u4ee5\u4e0b\u5185\u5bb9\u7528\u4e2d\u6587\u8fdb\u884c\u91ca\u4e49\uff1a<br \/>\n\u5173\u4e8e Rook \/ Ceph \u7684\u8be6\u7ec6\u524d\u63d0\u6761\u4ef6\uff0c\u8bf7\u53c2\u8003\u4ee5\u4e0b\u5185\u5bb9\u3002<br \/>\n\u7531\u4e8e\u672c\u6b21\u6ee1\u8db3\u4e86\u57fa\u672c\u6761\u4ef6\uff0c\u56e0\u6b64\u6ca1\u6709\u8fdb\u884c\u989d\u5916\u8bbe\u7f6e\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Rook Prerequisites<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">Ceph Prerequisites<\/ul>\n<pre class=\"post-pre\"><code><span class=\"go\">NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT\r\nsda      8:0    0  10G  0 disk\r\n  sda1   8:1    0  10G  0 part \/\r\nsdb      8:16   0  10M  0 disk\r\nsdc      8:32   0  50G  0 disk  \u2605 \u7a7a\u306e\u30c7\u30a3\u30b9\u30af\r\n<\/span><\/code><\/pre>\n<h1>\u8f66\u8f6e\/\u9524\u5b50\u90e8\u7f72<\/h1>\n<p>\u9996\u5148\uff0c\u5148\u51c6\u5907\u597d Rook \u5e76\u8fdb\u884c Ceph \u90e8\u7f72\u7684\u51c6\u5907\u5de5\u4f5c\u3002<\/p>\n<pre class=\"post-pre\"><code># Rook \u306e\u8cc7\u6750\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\r\n$ git clone --single-branch --branch v1.6.1 https:\/\/github.com\/rook\/rook.git\r\n\r\n# example \u5185\u3092\u78ba\u8a8d\r\n# Ceph \u4ee5\u5916\u306b\u3082 Cassandra \/ NFS \u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\r\n$ ls rook\/cluster\/examples\/kubernetes\/\r\nREADME.md  cassandra  ceph  mysql.yaml  nfs  wordpress.yaml\r\n\r\n# \u8cc7\u6750\u306e\u914d\u7f6e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u79fb\u52d5\r\n# \u4eca\u56de\u306e\u8cc7\u6750\u4ee5\u5916\u306b\u3082\u69d8\u3005\u306a\u30d1\u30bf\u30fc\u30f3\u306e yaml \u304c\u7528\u610f\u3055\u308c\u3066\u3044\u308b\r\n$ cd rook\/cluster\/examples\/kubernetes\/ceph\/\r\n$ ls\r\nceph-client.yaml                      dashboard-external-http.yaml   object-bucket-claim-delete.yaml   pool-test.yaml\r\ncluster-external-management.yaml      dashboard-external-https.yaml  object-bucket-claim-retain.yaml   pool.yaml\r\ncluster-external.yaml                 dashboard-ingress-https.yaml   object-ec.yaml                    pre-k8s-1.16\r\ncluster-on-pvc.yaml                   dashboard-loadbalancer.yaml    object-external.yaml              rbdmirror.yaml\r\ncluster-stretched.yaml                direct-mount.yaml              object-multisite-pull-realm.yaml  rgw-external.yaml\r\ncluster-test.yaml                     filesystem-ec.yaml             object-multisite.yaml             scc.yaml\r\ncluster.yaml                          filesystem-mirror.yaml         object-openshift.yaml             storageclass-bucket-delete.yaml\r\ncommon-external.yaml                  filesystem-test.yaml           object-test.yaml                  storageclass-bucket-retain.yaml\r\ncommon-second-cluster.yaml            filesystem.yaml                object-user.yaml                  test-data\r\ncommon.yaml                           flex                           object.yaml                       toolbox-job.yaml\r\ncrds.yaml                             import-external-cluster.sh     operator-openshift.yaml           toolbox.yaml\r\ncreate-external-cluster-resources.py  monitoring                     operator.yaml\r\ncreate-external-cluster-resources.sh  nfs-test.yaml                  osd-purge.yaml\r\ncsi                                   nfs.yaml                       pool-ec.yaml\r\n\r\n# \u5171\u901a\u8a2d\u5b9a\uff08Namespace \/ Role\u30fbRoleBindings \u306a\u3069\uff09\u3092\u4f5c\u6210\r\n$ kubectl create -f common.yaml\r\n\u30fb\u30fb\u30fb\r\n\r\n# Namespace \u304c\u4f5c\u6210\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\r\n$ kubectl get ns rook-ceph\r\nNAME        STATUS   AGE\r\nrook-ceph   Active   6m54s\r\n\r\n# Rook \u306e CRD\uff08CustomResourceDefinitions\uff09\u3092\u4f5c\u6210\r\n$ kubectl create -f crds.yaml\r\n\u30fb\u30fb\u30fb\r\n\r\n# CRD \u304c\u767b\u9332\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\r\n$ kubectl api-resources | grep rook\r\ncephblockpools                           ceph.rook.io    true   CephBlockPool\r\ncephclients                              ceph.rook.io    true   CephClient\r\ncephclusters                             ceph.rook.io    true   CephCluster\r\ncephfilesystemmirrors                    ceph.rook.io    true   CephFilesystemMirror\r\ncephfilesystems                          ceph.rook.io    true   CephFilesystem\r\ncephnfses              nfs               ceph.rook.io    true   CephNFS\r\ncephobjectrealms                         ceph.rook.io    true   CephObjectRealm\r\ncephobjectstores                         ceph.rook.io    true   CephObjectStore\r\ncephobjectstoreusers   rcou,objectuser   ceph.rook.io    true   CephObjectStoreUser\r\ncephobjectzonegroups                     ceph.rook.io    true   CephObjectZoneGroup\r\ncephobjectzones                          ceph.rook.io    true   CephObjectZone\r\ncephrbdmirrors                           ceph.rook.io    true   CephRBDMirror\r\nvolumes                rv                rook.io         true   Volume\r\n\r\n# Rook \u306e Ceph \u7528 Operator \u3092\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\r\n$ kubectl create -f operator.yaml\r\n\r\n# Operator \u306e\u8d77\u52d5\u3092\u78ba\u8a8d\r\n$  kubectl get cm,po -n rook-ceph\r\nNAME                                  DATA   AGE\r\nconfigmap\/rook-ceph-operator-config   13     87s\r\n\r\nNAME                                     READY   STATUS    RESTARTS   AGE\r\npod\/rook-ceph-operator-95f44b96c-zfbhv   1\/1     Running   0          87s\r\n<\/code><\/pre>\n<p>\u7531\u4e8e\u51c6\u5907\u5de5\u4f5c\u5df2\u7ecf\u5b8c\u6210\uff0c\u6211\u4eec\u7acb\u5373\u5f00\u59cb\u90e8\u7f72 Ceph \u96c6\u7fa4\u3002<br \/>\n\u7531\u4e8e\u5148\u524d\u7684 yaml \u5217\u8868\u4e2d\u5305\u542b\u4e86\u81ea\u5b9a\u4e49\u8d44\u6e90\u5b9a\u4e49\uff08CRD\uff09\u7684\u793a\u4f8b\uff0c\u6211\u4eec\u5c06\u4f7f\u7528\u5b83\u4eec\u8fdb\u884c\u90e8\u7f72\u3002<br \/>\n\u987a\u4fbf\u63d0\u4e00\u4e0b\uff0c\u63d0\u4f9b\u7684 yaml \u6587\u4ef6\u4e2d\u6709\u51e0\u4e2a\u793a\u4f8b\uff0c\u53ef\u6839\u636e\u9700\u6c42\u8fdb\u884c\u4f7f\u7528\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">cluster-test.yaml<\/ul>\n<\/li>\n<\/ul>\n<p>\u958b\u767a\u74b0\u5883\u7528<br \/>\n\u30ce\u30fc\u30c9\u306f1\u53f0\u304b\u3089\u5229\u7528\u53ef\u80fd<br \/>\nCeph \u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306f v16 \u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u308b<\/p>\n<p>cluster.yaml<\/p>\n<p>\u672c\u756a\u74b0\u5883\u7528<br \/>\n\u30ce\u30fc\u30c9\u306f3\u53f0\u5fc5\u8981<br \/>\nCeph \u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306f v15.2.11 \u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u308b<br \/>\n\u4eca\u56de\u306f\u3053\u3061\u3089\u3092\u5229\u7528\u3059\u308b<\/p>\n<p>cluster-on-pvc.yaml<\/p>\n<p>\u30d1\u30d6\u30af\u30e9\u74b0\u5883\u3067 PVC \u3092\u5229\u7528\u3059\u308b\u5834\u5408\u306b\u5229\u7528\uff1f<\/p>\n<p>\u53c2\u8003\u4e86\u4ee5\u4e0b\u7684 Ceph \u90e8\u7f72\u6587\u6863\uff0c\u60a8\u53ef\u4ee5\u6839\u636e\u63d0\u4f9b\u7684 yaml \u8fdb\u884c\u9002\u5f53\u7684\u914d\u7f6e\u66f4\u6539\uff0c\u6765\u5b9a\u5236\u5316\u5730\u90e8\u7f72 Ceph\u3002<\/p>\n<ul class=\"post-ul\">Ceph Examples<\/ul>\n<p>\u7acb\u5373\u4f7f\u7528\u9884\u5148\u51c6\u5907\u7684 yaml \u6587\u4ef6\u90e8\u7f72 Ceph\u3002<\/p>\n<pre class=\"post-pre\"><code># CR\uff08CustomResource\uff09 \u3067\u3042\u308b cephclusster \u306e\u30c7\u30d7\u30ed\u30a4\r\n$ kubectl create -f cluster.yaml\r\ncephcluster.ceph.rook.io\/rook-ceph created\r\n\r\n# \u3057\u3070\u3089\u304f\u3059\u308b\u3068\u30b3\u30f3\u30c6\u30ca\u304c\u8d77\u52d5\u3057\u3066\u304f\u308b\u306e\u3067\u72b6\u6cc1\u3092\u78ba\u8a8d\r\n$ kubectl get po -n rook-ceph\r\nNAME                                            READY   STATUS              RESTARTS   AGE\r\ncsi-cephfsplugin-7cm6r                          0\/3     ContainerCreating   0          2s\r\ncsi-cephfsplugin-krs4r                          0\/3     ContainerCreating   0          2s\r\ncsi-cephfsplugin-provisioner-5b989b9977-2t9dq   0\/6     ContainerCreating   0          2s\r\ncsi-cephfsplugin-provisioner-5b989b9977-shwr9   0\/6     ContainerCreating   0          2s\r\ncsi-cephfsplugin-xdnlf                          0\/3     ContainerCreating   0          2s\r\ncsi-rbdplugin-56rlt                             3\/3     Running             0          3s\r\n\u30fb\u30fb\u30fb\r\n\r\n# \u4f5c\u6210\u3055\u308c\u305f CR \u3067\u3082\u72b6\u6cc1\u3092\u78ba\u8a8d\u3067\u304d\u308b\r\n$  kubectl get cephclusters.ceph.rook.io  -n rook-ceph\r\nNAME       DATADIRHOSTPATH  MONCOUNT  AGE    PHASE        MESSAGE                HEALTH  EXTERNAL\r\nrook-ceph  \/var\/lib\/rook    3         4m23s  Progressing  Configuring Ceph Mons\r\n\r\n# \u30c7\u30d7\u30ed\u30a4\u5b8c\u4e86\u5f8c\u306e\u72b6\u614b\r\n$ kubectl get po -n rook-ceph\r\nNAME                                             READY   STATUS      RESTARTS   AGE\r\ncsi-cephfsplugin-5qcsr                           3\/3     Running     0          3m29s\r\ncsi-cephfsplugin-8rh7q                           3\/3     Running     0          3m29s\r\ncsi-cephfsplugin-m5rwp                           3\/3     Running     0          3m29s\r\ncsi-cephfsplugin-provisioner-5b989b9977-2nfwd    6\/6     Running     0          3m28s\r\ncsi-cephfsplugin-provisioner-5b989b9977-kmpzd    6\/6     Running     0          3m28s\r\ncsi-rbdplugin-5vgnh                              3\/3     Running     0          3m30s\r\ncsi-rbdplugin-provisioner-55f998c984-dfjzt       6\/6     Running     0          3m30s\r\ncsi-rbdplugin-provisioner-55f998c984-sbqd8       6\/6     Running     0          3m30s\r\ncsi-rbdplugin-qtkf5                              3\/3     Running     0          3m30s\r\ncsi-rbdplugin-r2qm9                              3\/3     Running     0          3m30s\r\nrook-ceph-crashcollector-nd01-5b6f6c8974-wgw9s   1\/1     Running     0          69s\r\nrook-ceph-crashcollector-nd02-84bc45b685-cvvvc   1\/1     Running     0          91s\r\nrook-ceph-crashcollector-nd03-66b4dd645b-nk22j   1\/1     Running     0          102s\r\nrook-ceph-mgr-a-5c67fd5c76-ggrlg                 1\/1     Running     0          79s\r\nrook-ceph-mon-a-677c4fc69b-prvq7                 1\/1     Running     0          3m18s\r\nrook-ceph-mon-b-5b86596d64-w7mk5                 1\/1     Running     0          111s\r\nrook-ceph-mon-c-56598d55f5-g5559                 1\/1     Running     0          91s\r\nrook-ceph-operator-95f44b96c-gzh69               1\/1     Running     0          8m25s\r\nrook-ceph-osd-0-7754f799b8-dcdl7                 1\/1     Running     0          70s\r\nrook-ceph-osd-1-566b84474b-hzjht                 1\/1     Running     0          70s\r\nrook-ceph-osd-2-85b456dd84-2grnl                 1\/1     Running     0          69s\r\nrook-ceph-osd-prepare-nd01-gqbrq                 0\/1     Completed   0          52s\r\nrook-ceph-osd-prepare-nd02-d98t8                 0\/1     Completed   0          49s\r\nrook-ceph-osd-prepare-nd03-xg5z2                 0\/1     Completed   0          47s\r\n\r\n$ kubectl get cephclusters\r\nNAME       DATADIRHOSTPATH  MONCOUNT  AGE    PHASE  MESSAGE                       HEALTH        EXTERNAL\r\nrook-ceph  \/var\/lib\/rook    3         5m35s  Ready  Cluster created successfully  HEALTH_WARN\r\n<\/code><\/pre>\n<p>Ceph\u5df2\u987a\u5229\u542f\u52a8\u3002<br \/>\n\u82e5Ceph\u5728\u4e2d\u9014\u51fa\u73b0\u6302\u8d77\u6216\u521d\u59cb\u5316\u505c\u6b62\u7684\u60c5\u51b5\uff0c\u8bf7\u5c1d\u8bd5\u4f7f\u7528kubectl describe\u6216kubectl log\u547d\u4ee4\u786e\u8ba4\u5404\u4e2aPod\u7684\u60c5\u51b5\u3002\u53e6\u5916\uff0c\u5efa\u8bae\u901a\u8fc7kubectl log\u547d\u4ee4\u67e5\u770brook-ceph-operator-XXXX\u7684\u65e5\u5fd7\uff0c\u4ee5\u4e86\u89e3\u5176\u8fdb\u5c55\u60c5\u51b5\u7b49\uff0c\u4e5f\u53ef\u4ee5\u6839\u636e\u9700\u8981\u8fdb\u884c\u9002\u65f6\u786e\u8ba4\u3002<\/p>\n<p>\u5728\u65e0\u6cd5\u89e3\u51b3\u95ee\u9898\u65f6\uff0c\u5c1d\u8bd5\u5148\u5220\u9664\uff0c\u7136\u540e\u91cd\u65b0\u521b\u5efa\u4e5f\u662f\u4e2a\u529e\u6cd5\u3002<br \/>\n\u4ee5\u4e0b\u662f\u4e00\u4e9b\u6b65\u9aa4\u4f9b\u53c2\u8003\u3002\u6211\u5728\u9047\u5230\u5931\u8d25\u65f6\u4e5f\u66fe\u8fd9\u6837\u5220\u9664\u5e76\u91cd\u65b0\u521b\u5efa\u8fc7&#8230;<\/p>\n<ul class=\"post-ul\">Cleaning up a Cluster<\/ul>\n<h1>\u786e\u8ba4\u884c\u52a8<\/h1>\n<p>\u56e0\u4e3aCeph\u5df2\u7ecf\u90e8\u7f72\u597d\u4e86\uff0c\u6240\u4ee5\u6211\u4eec\u7acb\u5373\u5f00\u59cb\u8bd5\u7528\u3002<br \/>\n\u9996\u5148\uff0c\u6211\u4eec\u901a\u8fc7CLI\u8bbf\u95eeCeph\u3002\u7531\u4e8e\u6709\u4e00\u4e2a\u88ab\u79f0\u4e3aToolbox\u7684ceph\u547d\u4ee4\u53ef\u4ee5\u6267\u884c\u7684Pod\u7684yaml\u6587\u4ef6\uff0c\u6211\u4eec\u5c06\u90e8\u7f72\u5e76\u4f7f\u7528\u5b83\u3002<\/p>\n<pre class=\"post-pre\"><code># toolbox \u306e\u30c7\u30d7\u30ed\u30a4\r\n$ kubectl apply -f toolbox.yaml\r\ndeployment.apps\/rook-ceph-tools created\r\n\r\n$ kubectl get po -l app=rook-ceph-tools\r\nNAME                               READY   STATUS    RESTARTS   AGE\r\nrook-ceph-tools-57787758df-s596f   1\/1     Running   0          2m38s\r\n\r\n# ceph \u30b3\u30de\u30f3\u30c9\u3067\u30d0\u30fc\u30b8\u30e7\u30f3\u3068\u72b6\u614b\u3092\u78ba\u8a8d\r\n$ kubectl exec rook-ceph-tools-57787758df-s596f -- ceph version\r\nceph version 15.2.11 (e3523634d9c2227df9af89a4eac33d16738c49cb) octopus (stable)\r\n\r\n$ kubectl exec rook-ceph-tools-57787758df-s596f -- ceph status\r\n  cluster:\r\n    id:     25b3fce4-14e3-46c9-a9ce-f753ccaff570\r\n    health: HEALTH_WARN\r\n            mons are allowing insecure global_id reclaim\r\n            mons a,c are low on available space\r\n\r\n  services:\r\n    mon: 3 daemons, quorum a,b,c (age 13m)\r\n    mgr: a(active, since 12m)\r\n    osd: 3 osds: 3 up (since 12m), 3 in (since 12m)\r\n\r\n  data:\r\n    pools:   1 pools, 1 pgs\r\n    objects: 0 objects, 0 B\r\n    usage:   3.0 GiB used, 147 GiB \/ 150 GiB avail\r\n    pgs:     1 active+clean\r\n<\/code><\/pre>\n<p>\u73b0\u5728\u6211\u4eec\u5c06\u4f7f\u7528Ceph\u6765\u521b\u5efa\u4e00\u4e2a\u53ef\u4ee5\u5728\u5bb9\u5668\u4e0a\u6302\u8f7d\u7684\u6301\u4e45\u5377\uff08PV\uff09\u3002<br \/>\n\u4e3a\u4e86\u521b\u5efa\u57fa\u4e8eCeph\u7684PV\uff0c\u9996\u5148\u6211\u4eec\u9700\u8981\u521b\u5efa\u4e00\u4e2a\u5b58\u50a8\u7c7b\uff08StorageClass\uff09\u3002<br \/>\n\u901a\u8fc7\u5728PVC\u521b\u5efa\u65f6\u6307\u5b9a\u5b58\u50a8\u7c7b\uff0c\u6211\u4eec\u53ef\u4ee5\u52a8\u6001\u5730\u521b\u5efa\u7b26\u5408\u5b58\u50a8\u7c7b\u5b9a\u4e49\u7684PV\u3002<br \/>\n\u5b58\u50a8\u7c7b\u7684yaml\u6587\u4ef6\u5df2\u7ecf\u51c6\u5907\u597d\u4e86\uff0c\u56e0\u6b64\u6211\u4eec\u5c06\u4f7f\u7528\u8be5\u6587\u4ef6\u3002<\/p>\n<ul class=\"post-ul\">rook\/cluster\/examples\/kubernetes\/ceph\/csi\/rbd<\/ul>\n<pre class=\"post-pre\"><code>$ ls\r\npod.yaml        pvc-restore.yaml  snapshot.yaml       storageclass-ec.yaml    storageclass.yaml\r\npvc-clone.yaml  pvc.yaml          snapshotclass.yaml  storageclass-test.yaml\r\n\r\n# StorageClass \/ CephBlockPool \u3092\u767b\u9332\r\n$ kubectl create -f storageclass.yaml\r\ncephblockpool.ceph.rook.io\/replicapool created\r\nstorageclass.storage.k8s.io\/rook-ceph-block created\r\n\r\n$ kubectl get sc\r\nNAME              PROVISIONER                  RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE\r\nrook-ceph-block   rook-ceph.rbd.csi.ceph.com   Delete          Immediate           true                   103s\r\n<\/code><\/pre>\n<p>\u7531\u4e8e\u51c6\u5907\u5de5\u4f5c\u5df2\u5b8c\u6210\uff0c\u6211\u4eec\u5c06\u521b\u5efa\u5b9e\u9645\u7684PV = Ceph\u5757\u5b58\u50a8\uff08RBD\uff09\u3002<br \/>\n\u8fd9\u6b21\u6211\u4eec\u5c06\u90e8\u7f72\u63d0\u4f9b\u7684WordPress\u793a\u4f8b\u3002<br \/>\n\u793a\u4f8byaml\u6587\u4ef6\u5b58\u50a8\u5728\u4ee5\u4e0b\u8def\u5f84\u4e2d\u3002<\/p>\n<ul class=\"post-ul\">rook\/cluster\/examples\/kubernetes<\/ul>\n<pre class=\"post-pre\"><code>$ ls\r\nREADME.md  cassandra  ceph  mysql.yaml  nfs  wordpress.yaml\r\n\r\n# MySQL \u306e\u30c7\u30d7\u30ed\u30a4\r\n$ kubectl apply -f mysql.yaml -n default\r\nservice\/wordpress-mysql created\r\npersistentvolumeclaim\/mysql-pv-claim created\r\ndeployment.apps\/wordpress-mysql created\r\n\r\n# WordPress \u7528\u306e Web \u30b5\u30fc\u30d0\u3092\u30c7\u30d7\u30ed\u30a4\r\n$ kubectl apply -f wordpress.yaml -n default\r\nservice\/wordpress created\r\npersistentvolumeclaim\/wp-pv-claim created\r\ndeployment.apps\/wordpress created\r\n\r\n# \u30c7\u30d7\u30ed\u30a4\u3057\u305f\u30b3\u30f3\u30c6\u30ca\u3092\u78ba\u8a8d\r\n$ kubectl get deploy,po -n default\r\nNAME                              READY   UP-TO-DATE   AVAILABLE   AGE\r\ndeployment.apps\/wordpress         1\/1     1            1           60s\r\ndeployment.apps\/wordpress-mysql   1\/1     1            1           2m41s\r\n\r\nNAME                                   READY   STATUS    RESTARTS   AGE\r\npod\/wordpress-7b989dbf57-7zrln         1\/1     Running   0          60s\r\npod\/wordpress-mysql-6965fc8cc8-jd8bm   1\/1     Running   0          2m41s\r\n\r\n# \u4f5c\u6210\u3055\u308c\u305f PV\/PVC \u3092\u78ba\u8a8d\r\n$ kubectl get pvc,pv -n default\r\nNAME                                   STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS      AGE\r\npersistentvolumeclaim\/mysql-pv-claim   Bound    pvc-bd039533-b11e-415b-b2c6-d2f5a62c3cd0   20Gi       RWO            rook-ceph-block   2m41s\r\npersistentvolumeclaim\/wp-pv-claim      Bound    pvc-7617ba88-3fd1-4382-96b8-766510571dfa   20Gi       RWO            rook-ceph-block   60s\r\n\r\nNAME                                                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                    STORAGECLASS      REASON   AGE\r\npersistentvolume\/pvc-7617ba88-3fd1-4382-96b8-766510571dfa   20Gi       RWO            Delete           Bound    default\/wp-pv-claim      rook-ceph-block            60s\r\npersistentvolume\/pvc-bd039533-b11e-415b-b2c6-d2f5a62c3cd0   20Gi       RWO            Delete           Bound    default\/mysql-pv-claim   rook-ceph-block            2m39s\r\n\r\n# \u30a2\u30af\u30bb\u30b9\u78ba\u8a8d\u7528\u306b NodePort \u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b Service \u3092\u78ba\u8a8d\r\n# wordpress \u306e\u30dd\u30fc\u30c8\uff08\u4eca\u56de\u306f 30541\uff09\u3092\u78ba\u8a8d\r\n$ kubectl get svc -n default\r\nNAME                      TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE\r\nservice\/kubernetes        ClusterIP      10.96.0.1        &lt;none&gt;        443\/TCP        9d\r\nservice\/wordpress         LoadBalancer   10.111.139.194   &lt;pending&gt;     80:30541\/TCP   60s\r\nservice\/wordpress-mysql   ClusterIP      None             &lt;none&gt;        3306\/TCP       2m41s\r\n<\/code><\/pre>\n<p>\u4f60\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u7684NodePort\u7aef\u53e3\u53f7\u548cNode\u7684IP\u5730\u5740\u8bbf\u95ee\u90e8\u7f72\u7684WordPress\u3002<\/p>\n<ul class=\"post-ul\">http:\/\/:\/<\/ul>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d911e913a08637a6de9ae\/33-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d911e913a08637a6de9ae\/34-0.png\" alt=\"image.png\" \/><\/div>\n<h1>\u603b\u7ed3<\/h1>\n<p>\u8fd9\u6b21\u6211\u4eec\u5c1d\u8bd5\u4f7f\u7528 Rook \u6765\u90e8\u7f72 Ceph\u3002<br \/>\n\u4f7f\u7528 Rook \u8fdb\u884c\u90e8\u7f72\u975e\u5e38\u7b80\u5355\u3002<br \/>\n\u7531\u4e8e\u6709\u4e30\u5bcc\u7684 YAML \u793a\u4f8b\uff0c\u6839\u636e\u4f7f\u7528\u9700\u6c42\u8fdb\u884c\u81ea\u5b9a\u4e49\u4e5f\u5f88\u5bb9\u6613\u3002<br \/>\n\u6b64\u5916\uff0cCeph \u4e0d\u4ec5\u53ef\u4ee5\u4f5c\u4e3a\u5757\u5b58\u50a8\uff0c\u8fd8\u53ef\u4ee5\u4f5c\u4e3a\u5bf9\u8c61\u5b58\u50a8\u548c\u6587\u4ef6\u5b58\u50a8\uff0c\u56e0\u6b64\u53ef\u7528\u4e8e\u5404\u79cd\u7528\u9014\u3002<br \/>\n\u7531\u4e8e Ceph \u672c\u8eab\u662f\u4e00\u6b3e\u975e\u5e38\u6df1\u5965\u7684\u8f6f\u4ef6\uff0c\u6240\u4ee5\u4f7f\u7528\u8d77\u6765\u53ef\u80fd\u4f1a\u6709\u4e00\u4e9b\u56f0\u96be&#8230;<\/p>\n<p>\u4e0b\u4e00\u6b21\uff0c\u6211\u6253\u7b97\u786e\u8ba4\u4e00\u4e0b\u5f15\u5165\u7684 Ceph \u7684\u5404\u79cd\u60c5\u51b5\u3002<\/p>\n<h1>\u8bf7\u5728\u4e2d\u56fd\u5728\u7ebf\u8d2d\u7269\u5e73\u53f0\u4e0a\u8d2d\u4e70\uff0c\u53ea\u9700\u4e00\u79cd\u9009\u9879\u3002<\/h1>\n<p>\u6211\u9605\u8bfb\u4e86\u524d\u8f88\u4eec\u7684\u8d44\u6599\u6765\u4e86\u89e3\u6709\u5173 Rook\/Ceph \u7684\u8be6\u7ec6\u8bf4\u660e\u3002\u5f88\u6613\u61c2\u7684\u5185\u5bb9&#8230;<\/p>\n<p>\u800c\u4e14\uff0c\u6211\u5011\u4e5f\u53c3\u8003\u4e86\u6211\u5011\u5718\u968a\u6210\u54e1\u7684\u90e8\u843d\u683c\u3002<\/p>\n<p>\u5bf9\u6211\u4eec\u7684\u5148\u8f88\u4eec\u5fc3\u5b58\u611f\u6fc0\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u9996\u5148 Kubernetes \u7684 PersistentVolume \u6709\u591a\u79cd\u7c7b\u578b\u53ef\u4f9b\u9009\u62e9\u3002 \u8fc4\u4eca\u4e3a\u6b62\uff0c\u6211\u5df2\u5728\u4ee5\u4e0b\u6587 [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-50450","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u8bd5\u7528 Rook\/Ceph - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u8bd5\u7528-rook-ceph\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u8bd5\u7528 Rook\/Ceph\" \/>\n<meta property=\"og:description\" content=\"\u9996\u5148 Kubernetes \u7684 PersistentVolume \u6709\u591a\u79cd\u7c7b\u578b\u53ef\u4f9b\u9009\u62e9\u3002 \u8fc4\u4eca\u4e3a\u6b62\uff0c\u6211\u5df2\u5728\u4ee5\u4e0b\u6587 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u8bd5\u7528-rook-ceph\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-06T04:47:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-03T15:09:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d911e913a08637a6de9ae\/33-0.png\" \/>\n<meta name=\"author\" content=\"\u97f5, \u79d1\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u97f5, \u79d1\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8-rook-ceph\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8-rook-ceph\/\",\"name\":\"\u8bd5\u7528 Rook\/Ceph - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-12-06T04:47:36+00:00\",\"dateModified\":\"2024-05-03T15:09:05+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8-rook-ceph\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8-rook-ceph\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8-rook-ceph\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u8bd5\u7528 Rook\/Ceph\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e\",\"name\":\"\u97f5, \u79d1\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g\",\"caption\":\"\u97f5, \u79d1\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunke\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8-rook-ceph\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u8bd5\u7528 Rook\/Ceph - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u8bd5\u7528-rook-ceph\/","og_locale":"zh_CN","og_type":"article","og_title":"\u8bd5\u7528 Rook\/Ceph","og_description":"\u9996\u5148 Kubernetes \u7684 PersistentVolume \u6709\u591a\u79cd\u7c7b\u578b\u53ef\u4f9b\u9009\u62e9\u3002 \u8fc4\u4eca\u4e3a\u6b62\uff0c\u6211\u5df2\u5728\u4ee5\u4e0b\u6587 [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u8bd5\u7528-rook-ceph\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-12-06T04:47:36+00:00","article_modified_time":"2024-05-03T15:09:05+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d911e913a08637a6de9ae\/33-0.png"}],"author":"\u97f5, \u79d1","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u97f5, \u79d1","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"6 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8-rook-ceph\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8-rook-ceph\/","name":"\u8bd5\u7528 Rook\/Ceph - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-12-06T04:47:36+00:00","dateModified":"2024-05-03T15:09:05+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8-rook-ceph\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8-rook-ceph\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8-rook-ceph\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u8bd5\u7528 Rook\/Ceph"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e","name":"\u97f5, \u79d1","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g","caption":"\u97f5, \u79d1"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunke\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e8%af%95%e7%94%a8-rook-ceph\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/50450","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=50450"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/50450\/revisions"}],"predecessor-version":[{"id":94661,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/50450\/revisions\/94661"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=50450"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=50450"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=50450"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}