{"id":50142,"date":"2023-11-26T18:55:54","date_gmt":"2023-06-18T10:33:51","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8kubernetes%e4%b8%8a%e5%ae%89%e8%a3%85%e4%ba%86rook%ef%bc%8c%e5%b9%b6%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8%e5%9d%97%e5%ad%98%e5%82%a8%e3%80%82\/"},"modified":"2024-05-04T10:55:15","modified_gmt":"2024-05-04T02:55:15","slug":"%e6%88%91%e5%9c%a8kubernetes%e4%b8%8a%e5%ae%89%e8%a3%85%e4%ba%86rook%ef%bc%8c%e5%b9%b6%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8%e5%9d%97%e5%ad%98%e5%82%a8%e3%80%82","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8kubernetes%e4%b8%8a%e5%ae%89%e8%a3%85%e4%ba%86rook%ef%bc%8c%e5%b9%b6%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8%e5%9d%97%e5%ad%98%e5%82%a8%e3%80%82\/","title":{"rendered":"\u6211\u5728Kubernetes\u4e0a\u5b89\u88c5\u4e86Rook\uff0c\u5e76\u5c1d\u8bd5\u4f7f\u7528\u5757\u5b58\u50a8"},"content":{"rendered":"<h1>\u9996\u5148<\/h1>\n<div>\u8fd9\u7bc7\u6587\u7ae0\u5df2\u7ecf\u8fc7\u65f6\u4e86\u3002\u6211\u4eec\u5efa\u8bae\u60a8\u4e0d\u8981\u5347\u7ea7\u4f7f\u7528\u65e7\u7248\u7684rook\/ceph\uff0c\u800c\u662f\u5f15\u5165\u6700\u65b0\u7248\u672c\uff0c\u5e76\u542f\u7528bluestore\uff0c\u5e76\u52a0\u5165HDD\u3002<\/div>\n<p>\u6211\u6b63\u5728\u5c1d\u8bd5\u5728Kubernetes\u73af\u5883\u4e2d\u6784\u5efaCeph\u73af\u5883\uff0c\u5e76\u8bd5\u7528Rook\u3002<\/p>\n<p>\u57fa\u672c\u5f15\u5bfc\u6b65\u9aa4\u5728\u4e0b\u9762\u7684\u6587\u4ef6\u4e2d\u6709\u8be6\u7ec6\u8bf4\u660e\uff0c\u4f46\u7531\u4e8e\u7248\u672c\u66f4\u65b0\uff0c\u7a0d\u5fae\u505a\u4e86\u4e00\u4e9b\u6539\u52a8\uff0c\u6240\u4ee5\u8bf7\u8bb0\u4e0b\u5907\u5fd8\u5f55\u3002<\/p>\n<blockquote><p>\u5728Rook\u7684v1.x\u53ca\u5176\u540e\u7eed\u7248\u672c\u4e2d\uff0c\u5047\u5b9a\u6bcf\u4e2aKubernetes\u8282\u70b9\u4e0a\u90fd\u914d\u7f6e\u4e86\u4e13\u7528\u7684HDD\/SSD\u3002\u60a8\u4ecd\u7136\u53ef\u4ee5\u5728\u6d4b\u8bd5\u4e2d\u7ee7\u7eed\u6307\u5b9adirectories: [path: \/var\/lib\/rook]\uff0c\u4f46\u5728cluster.yaml\u4e2d\uff0c\u9ed8\u8ba4\u8bbe\u7f6e\u4e3auseAllDevices: true\uff0c\u5e76\u671f\u671b\u5b58\u5728\u672a\u4f7f\u7528\u7684\u5757\u8bbe\u5907\uff08\u4f8b\u5982\/dev\/sdb\uff09\u3002\u4f7f\u7528Rook\u7684\u65b0\u7248\u672c\u65f6\u9700\u8981\u6ce8\u610f\u3002\u5982\u679c\u53ef\u80fd\u7684\u8bdd\uff0c\u5efa\u8bae\u907f\u514d\u4f7f\u7528Flex Volume\u3002<\/p><\/blockquote>\n<h2>\u8bba\u6587\u4e2d\u7684\u53c2\u8003\u6587\u732e\u6765\u6e90<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Cloud Native\u306a\u30b9\u30c8\u30ec\u30fc\u30b8Rook\u306e\u691c\u8a3c@ysakashita<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">Official Ceph Storage Quickstart for v0.8<\/ul>\n<h1>\u73af\u5883<\/h1>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Kubernetes v1.12.1 (Xeon e3-1220v2, 24GB Memory, Ubuntu 16.04.5) x4\u53f0<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">Rook tag:v0.8.3 (git clone https:\/\/github.com\/rook\/rook)<\/ul>\n<p>\u8282\u70b9\u5728Baremetal\uff08Ubuntu16.04.5\uff09\u4e0a\u4f7f\u7528kubespray\u8fdb\u884c\u6784\u5efa\u3002<\/p>\n<p>\u5728\u6267\u884c\u4e4b\u524d\uff0c\u547d\u540d\u7a7a\u95f4\u7684\u72b6\u6001\u5982\u4e0b\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl get ns\r\nNAME             STATUS    AGE\r\ndefault          Active    181d\r\ningress-nginx    Active    11d\r\nistio-system     Active    13h\r\nkube-public      Active    181d\r\nkube-system      Active    181d\r\nmetallb-system   Active    179d\r\n<\/code><\/pre>\n<h2>\u3010\u63d0\u9192\u3011\u6709\u5173\u4f20\u9001\u901f\u5ea6\u7684\u5185\u5bb9<\/h2>\n<p>\u6211\u8ba1\u5212\u5728\u4e0d\u4e45\u7684\u5c06\u6765\u5c06\u6574\u4e2a\u7cfb\u7edf\u66f4\u65b0\u5230\u6700\u65b0\u7684v1.6.x\u7248\u672c\u3002<\/p>\n<blockquote><p>\u8bf7\u52a1\u5fc5\u4f7f\u7528\u6700\u65b0\u7248\u672c\u7684Rook\/Ceph\uff08v1.7\u6216v1.6.8\u53ca\u4ee5\u4e0a\uff09\uff0c\u56e0\u4e3a\u65e7\u7248\u672c\uff08\u5982v1.6\uff09\u5b58\u5728\u81f4\u547d\u7684\u7f3a\u9677\u3002<\/p><\/blockquote>\n<p>\u5728\u6b64\u4e4b\u524d\uff0c\u6211\u5df2\u7ecf\u5728\u4e24\u4e2aCeph\u6587\u4ef6\u7cfb\u7edf\u4e4b\u95f4\u8fdb\u884c\u4e86\u6570\u636e\u4f20\u8f93\uff0c\u56e0\u6b64\u73b0\u5728\u7684\u73af\u5883\u5982\u4e0b\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Kubernetes: v1.16.9 (TX1310m3 x4, Xeon E3-1225v6, 4TB HDD x2 RAID1)<\/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: v1.19.9 (TX1320m4 x5, Xeon E-2234, 4TB HDD + 500GB SSD)<\/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\">Local Network (K8s\u30af\u30e9\u30b9\u30bf\u30fc\u5185\u90e8\u3001\u4e21\u65b9\u3068\u3082): 10Gbps X520-DA1 + DAC + CRS309-1G-8S+<\/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\">Backend Network (K8s\u30af\u30e9\u30b9\u30bf\u30fc\u9593\u63a5\u7d9a): 1Gbps RJ45\u30b1\u30fc\u30d6\u30eb + Switch<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">Rook\/Ceph v1.0.6 \u2192 v1.5.5<\/ul>\n<p>\u7f51\u7edc\u662f\u5728\u4e00\u4e2a\u5355\u4e00\u7684192.168.1.0\/24\u5185\u90e8\u914d\u7f6e\u7684\u3002<\/p>\n<p>\u4ee5\u4e0b\u662f\u901a\u8fc7rsync\u4ece\u4e00\u4e2a\u96c6\u7fa4\u4f20\u8f93\u5230\u53e6\u4e00\u4e2a\u96c6\u7fa4\uff08pod\u5230pod\uff09\u7684\u7ea63GB\u6570\u636e\uff08\u5b9e\u9645\u4f20\u8f93\u6570\u636e\u7ea62.5GB\uff09\uff0c\u5176\u4e2d\u6587\u4ef6\u6570\u91cf\u4e3a2255364\uff0c\u8fd9\u4e9b\u6587\u4ef6\u4e3b\u8981\u7531\u5177\u6709\u5c0f\u4e8e4KB\u7684\u6587\u4ef6\u7ec4\u6210\u7684Filesystem\u6784\u6210\u3002<\/p>\n<pre class=\"post-pre\"><code>sent 2,491,171,331 bytes  received 39,713,035 bytes  136,763.90 bytes\/sec\r\ntotal size is 2,945,556,696  speedup is 1.16\r\n<\/code><\/pre>\n<h1>\u51c6\u5907\u5b8c\u6210<\/h1>\n<p>\u5728\u80fd\u591f\u8fd0\u884ckubectl\u547d\u4ee4\u7684\u8282\u70b9\u4e0a\uff0c\u4f7f\u7528git clone\u5c06rook\u7684\u5b58\u50a8\u5e93\u83b7\u53d6\u4e0b\u6765\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>git clone https:\/\/github.com\/rook\/rook\r\n<span class=\"nv\">$ <\/span><span class=\"nb\">cd <\/span>rook\r\n<span class=\"nv\">$ <\/span>git checkout refs\/tags\/v0.8.3 <span class=\"nt\">-b<\/span> v0.8.3\r\n<\/code><\/pre>\n<h1>\u90e8\u7f72<\/h1>\n<p>\u6211\u57fa\u672c\u4e0a\u4f1a\u9075\u5faa\u5b98\u65b9\u6587\u4ef6\u7684\u6307\u793a\u3002<br \/>\n\u5f53\u666e\u901a\u8bbf\u95ee\u5b98\u65b9\u6587\u6863\u65f6\uff0c\u4f1a\u663e\u793a\u4e3b\u5206\u652f(master)\uff0c\u7136\u540e\u6211\u4f1a\u5728\u5de6\u4e0b\u89d2\u7684\u83dc\u5355\u4e2d\u9009\u62e9v0.8\u7248\u672c\u3002<\/p>\n<p>\u5728\u4e4b\u524d\u7684\u6b65\u9aa4\u540e\uff0c\u4ecerook\u76ee\u5f55\u7ee7\u7eed\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u5373\u53ef\u90e8\u7f72\u6240\u9700\u7684\u670d\u52a1\u3002<\/p>\n<p>\u5982\u679c\u60a8\u6b63\u5728\u4f7f\u7528minikube\uff0c\u8bf7\u4fee\u6539cluster.yaml\u6587\u4ef6\u4e2d\u7684dataDirHostPath: \/var\/lib\/rook\u3002<\/p>\n<pre class=\"post-pre\"><code>$ cd cluster\/examples\/kubernetes\/ceph\r\n$ kubectl create -f operator.yaml\r\n$ kubectl create -f cluster.yaml\r\n<\/code><\/pre>\n<p>\u30102018\/11\/20\u8ffd\u8a18\u3011\u5982\u679c\u5728\u4e0d\u66f4\u6539FLEXVOLUME_DIR_PATH\u7684\u60c5\u51b5\u4e0b\u6267\u884coperator.yaml\uff0c\u53ef\u80fd\u65e0\u6cd5\u6b63\u5e38\u8fd0\u884c\u3002<br \/>\n\u867d\u7136\u53ef\u4ee5\u8fdb\u884c\u4fee\u6b63\uff0c\u4f46\u5982\u679c\u60f3\u907f\u514d\u91cd\u590d\u52b3\u52a8\uff0c\u8bf7\u53c2\u8003\u540e\u534a\u90e8\u5206\u5173\u4e8eFLEXVOLUME_DIR_PATH\u7684\u7ae0\u8282\u3002<\/p>\n<p>\u5f53\u6211\u4eec\u8fdb\u884c\u5230\u8fd9\u4e00\u6b65\u65f6\uff0c\u547d\u540d\u7a7a\u95f4\u53d1\u751f\u4e86\u4ee5\u4e0b\u53d8\u5316\u3002<\/p>\n<pre class=\"post-pre\"><code>$ kubectl get ns\r\nNAME               STATUS    AGE\r\n...\r\nrook-ceph          Active    1m\r\nrook-ceph-system   Active    1m\r\n<\/code><\/pre>\n<h1>\u5728StorageClass\u4e2d\u7684\u4f7f\u7528<\/h1>\n<p>\u5728\u516c\u5f0f\u6587\u6863\u4e2d\uff0c\u5c1d\u8bd5\u64cd\u4f5c &#8220;Block Storage&#8221; \u90e8\u5206\u4e2d\u7684 &#8220;StorageClass&#8221;\u3002<\/p>\n<p>\u5047\u8bbe\u5f53\u524d\u76ee\u5f55\u4e3a cluster\/examples\/kubernetes\/ceph\uff0c\u5c06\u7ee7\u7eed\u6267\u884c\u524d\u9762\u7684\u64cd\u4f5c\u3002<\/p>\n<p>\u6839\u636e\u5b98\u65b9\u6587\u6863\uff0c\u5e94\u7528 storageclass.yaml \u6587\u4ef6\uff0c\u5e76\u786e\u8ba4 StorageClass \u7684\u72b6\u6001\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl apply <span class=\"nt\">-f<\/span> storageclass.yaml\r\n<span class=\"nv\">$ <\/span>kubectl <span class=\"nt\">-n<\/span> rook-ceph get storageclass\r\nNAME              PROVISIONER          AGE\r\nrook-ceph-block   ceph.rook.io\/block   1m\r\n<\/code><\/pre>\n<p>\u4e3a\u4e86\u786e\u8ba4\u76f8\u5173\u5b9a\u4e49\uff0c\u6211\u6267\u884c\u4e86`kubectl -n rook-ceph get storageclass -o yaml`\u547d\u4ee4\u5e76\u5728\u672b\u5c3e\u6dfb\u52a0\u4e86`-o yaml`\u53c2\u6570\u3002<\/p>\n<pre class=\"post-pre\"><code>- apiVersion: storage.k8s.io\/v1\r\n  kind: StorageClass\r\n  metadata:\r\n    ...\r\n    name: rook-ceph-block\r\n    namespace: <span class=\"s2\">\"\"<\/span>\r\n    ...\r\n<\/code><\/pre>\n<p>\u7531\u4e8e\u547d\u540d\u7a7a\u95f4\u4e3a\u7a7a\uff0c\u5b9e\u9645\u4e0a\uff0c\u65e0\u8bba\u6307\u5b9a\u54ea\u4e2a\u547d\u540d\u7a7a\u95f4\uff0c\u90fd\u53ef\u4ee5\u5f15\u7528\u5b58\u50a8\u7c7b\u7684\u5b9a\u4e49\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl <span class=\"nt\">-n<\/span> default get storageclass\r\nNAME              PROVISIONER          AGE\r\nrook-ceph-block   ceph.rook.io\/block   1h\r\n\r\n<span class=\"nv\">$ <\/span>kubectl <span class=\"nt\">-n<\/span> kube-system get storageclass\r\nNAME              PROVISIONER          AGE\r\nrook-ceph-block   ceph.rook.io\/block   1h\r\n<\/code><\/pre>\n<p>\u56e0\u6b64\uff0c\u53ef\u4ee5\u4ece\u6574\u4e2a\u7cfb\u7edf\u4e2d\u4f7f\u7528\u3002<\/p>\n<h2>\u5173\u4e8e\u4f7f\u7528StatefulSet\u7684\u6848\u4f8b\u4fe1\u606f\u3002<\/h2>\n<p>\u6211\u8ba4\u4e3a\u5728ROOK\u7684\u5b98\u65b9\u6587\u6863\u4e2d\u5305\u542b\u7684WordPress\u793a\u4f8b\u662f\u4eceKubernetes\u7684\u5b98\u65b9\u6587\u6863\u4e2d\u63d0\u53d6\u7684\uff08\u4f8b\u5982\uff1a\u4f7f\u7528\u6301\u4e45\u5377\u90e8\u7f72WordPress\u548cMySQL\uff09\u3002<\/p>\n<p>\u56e0\u4e3a\u8fd9\u4e2a\u672c\u8eab\u5e76\u4e0d\u662f\u5f88\u6709\u8da3\uff0c\u6240\u4ee5\u6211\u51b3\u5b9a\u5c06\u4e4b\u524d\u5199\u8fc7\u7684 Kubernetes \u5b98\u65b9\u5b9e\u4f8b\uff1a\u4f7f\u7528 PersistentVolume \u914d\u7f6e Cassandra\uff0c\u6062\u590d\u5230\u539f\u59cb\u5f62\u5f0f\u3002<\/p>\n<p>\u5728\u8fd9\u4e2aCassandra\u7684\u4f8b\u5b50\u4e2d\uff0c\u4f7f\u7528\u4e86volumeClaimTemplates\uff0c\u5e76\u4e14\u5305\u542b\u4e86StorageClass\u7684\u5b9a\u4e49\u3002<\/p>\n<p>\u5728\u521b\u5efa\u547d\u540d\u7a7a\u95f4\u65f6\uff0cService\u7684\u5b9a\u4e49\u4e0e\u5b98\u65b9\u6587\u4ef6\u5b8c\u5168\u4e00\u81f4\uff0c\u6ca1\u6709\u95ee\u9898\u3002\u6211\u9009\u62e9\u5c06\u5176\u547d\u540d\u4e3acassandra\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl create ns cassandra\r\n<span class=\"nv\">$ <\/span><span class=\"nb\">alias <\/span><span class=\"nv\">kubectl<\/span><span class=\"o\">=<\/span><span class=\"s1\">'kubectl -n cassandra'<\/span>\r\n<span class=\"nv\">$ <\/span>kubectl create <span class=\"nt\">-f<\/span> https:\/\/k8s.io\/examples\/application\/cassandra\/cassandra-service.yaml\r\n<\/code><\/pre>\n<p>\u4e0e\u5b98\u65b9\u6587\u6863\u4e2d\u7684cassandra-statefulset.yaml\u76f8\u6bd4\uff0cStatefulSet\u7684\u8868\u73b0\u5982\u4e0b\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gd\">--- cassandra-statefulset.yaml.orig  2018-11-05 17:17:44.057436173 +0900\r\n<\/span><span class=\"gi\">+++ cassandra-statefulset.yaml       2018-11-05 17:22:58.843780317 +0900\r\n<\/span><span class=\"p\">@@ -53,7 +53,7 @@<\/span>\r\n           - name: HEAP_NEWSIZE\r\n             value: 100M\r\n           - name: CASSANDRA_SEEDS\r\n<span class=\"gd\">-            value: \"cassandra-0.cassandra.default.svc.cluster.local\"\r\n<\/span><span class=\"gi\">+            value: \"cassandra-0.cassandra.cassandra.svc.cluster.local\"\r\n<\/span>           - name: CASSANDRA_CLUSTER_NAME\r\n             value: \"K8Demo\"\r\n           - name: CASSANDRA_DC\r\n<span class=\"p\">@@ -86,15 +86,7 @@<\/span>\r\n       name: cassandra-data\r\n     spec:\r\n       accessModes: [ \"ReadWriteOnce\" ]\r\n<span class=\"gd\">-      storageClassName: fast\r\n<\/span><span class=\"gi\">+      storageClassName: rook-ceph-block\r\n<\/span>       resources:\r\n         requests:\r\n           storage: 1Gi\r\n<span class=\"gd\">----\r\n-kind: StorageClass\r\n-apiVersion: storage.k8s.io\/v1\r\n-metadata:\r\n-  name: fast\r\n-provisioner: k8s.io\/minikube-hostpath\r\n-parameters:\r\n-  type: pd-ssd\r\n<\/span>\r\n<\/code><\/pre>\n<p>\u7531\u4e8e\u6307\u5b9a\u4e86namespace\uff0c\u6240\u4ee5\u5c06\u5176\u4ece&#8221;default&#8221;\u66f4\u6539\u4e3a&#8221;cassandra&#8221;\u3002<br \/>\n\u5728\u4e4b\u524d\u7684\u4f4d\u7f6e\uff0c\u901a\u8fc7\u5728kubectl\u4e2d\u6dfb\u52a0&#8221;-n cassandra&#8221;\u522b\u540d\uff0c\u56e0\u6b64\u5728\u547d\u4ee4\u884c\u4e2d\u65e0\u9700\u5173\u6ce8namespace\u3002<\/p>\n<p>\u53e6\u5916\uff0c\u6211\u4eec\u5c06StorageClass\u90e8\u5206\u5b8c\u5168\u5220\u9664\uff0c\u5e76\u5c06storageClassName\u7684\u6307\u5b9a\u66f4\u6539\u4e3a\u4e4b\u524d\u786e\u8ba4\u7684StorageClass\u7684metadata.name\uff0c\u5373rook-ceph-block\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl apply <span class=\"nt\">-f<\/span> cassandra-statefulset.yaml \r\n<\/code><\/pre>\n<p>\u5373\u4f7f\u6267\u884c\u5230\u8fd9\u4e00\u6b65\uff0cPod\u4ecd\u65e0\u6cd5\u542f\u52a8\uff0c\u8ba9\u6211\u611f\u5230\u56f0\u6270\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl describe pod cassandra-0\r\n...\r\nEvents:\r\n  Type     Reason       Age                From               Message\r\n  <span class=\"nt\">----<\/span>     <span class=\"nt\">------<\/span>       <span class=\"nt\">----<\/span>               <span class=\"nt\">----<\/span>               <span class=\"nt\">-------<\/span>\r\n  Normal   Scheduled    24m                default-scheduler  Successfully assigned cassandra\/cassandra-0 to node6\r\n  Warning  FailedMount  2m <span class=\"o\">(<\/span>x10 over 22m<span class=\"o\">)<\/span>  kubelet, node6     Unable to mount volumes <span class=\"k\">for <\/span>pod <span class=\"s2\">\"cassandra-0_cassandra(0ad97640-e0d4-11e8-8510-000db93312a4)\"<\/span>: <span class=\"nb\">timeout <\/span>expired waiting <span class=\"k\">for <\/span>volumes to attach or mount <span class=\"k\">for <\/span>pod <span class=\"s2\">\"cassandra\"<\/span>\/<span class=\"s2\">\"cassandra-0\"<\/span><span class=\"nb\">.<\/span> list of unattached <span class=\"nv\">volumes<\/span><span class=\"o\">=[<\/span>cassandra-data default-token-hlb95]\r\n<\/code><\/pre>\n<p>\u6211\u5728\u8fd9\u91cc\u5c1d\u8bd5\u6267\u884c\u4e86\u6837\u672c\u7684wordpress.yaml\u7b49\u5185\u5bb9\uff0c\u4f46\u770b\u8d77\u6765PV\u548cPVC\u90fd\u88ab\u6b63\u5e38\u521b\u5efa\uff0c\u4f46\u4f3c\u4e4e\u65e0\u6cd5\u4ecePod\u4e2d\u6302\u8f7d\u3002<\/p>\n<p>\u8ba9\u6211\u4eec\u68c0\u67e5\u6b63\u5728\u8fd0\u884c\u7684\u8282\u70b96\u7684\/var\/log\/syslog\u8bb0\u5f55\u3002<\/p>\n<pre class=\"post-pre\"><code>Nov  5 18:57:28 node6 kubelet[1264]: E1105 18:57:28.898651    1264 desired_state_of_world_populator.go:311] Failed to add volume \"cassandra-data\" (specName: \"pvc-15227c15-e0df-11e8-8510-000db93312a4\") for pod \"1527d22f-e0df-11e8-8510-000db93312a4\" to desiredStateOfWorld. err=failed to get Plugin from volumeSpec for volume \"pvc-15227c15-e0df-11e8-8510-000db93312a4\" err=no volume plugin matched\r\n<\/code><\/pre>\n<h1>\u4e0eFLEXVOLUME_DIR_PATH\u76f8\u5173\u7684\u95ee\u9898\u3002<\/h1>\n<p>\u4ee5\u4e0b\u662f\u53ef\u80fd\u9069\u7528\u7684\u985e\u4f3c\u6848\u4f8b\uff1a<\/p>\n<ul class=\"post-ul\">https:\/\/github.com\/rook\/rook\/issues\/1888<\/ul>\n<p>\u6839\u636e\u94fe\u63a5\u7684\u5b98\u65b9\u6587\u6863\uff0c\u53ef\u80fd\u5b58\u5728\u4ee5\u4e0b\u4e24\u4e2a\u7406\u7531\u3002<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>FlexVolume\u7684\u914d\u7f6e<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\u6307\u5b9a\u7684FlexVolume\u5df2\u88ab\u6307\u5b9a\u7ed9kubelet\u3002<\/ol>\n<p>\u6211\u786e\u8ba4\u4e86\u6700\u521d\u7684FlexVolume\u914d\u7f6e\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u4f1a\u521b\u5efa\u4e00\u4e2a\u4f4d\u4e8e \/usr\/libexec\/kubernetes\/kubelet-plugins\/volume\/exec\/ \u7684\u76ee\u5f55\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span><span class=\"nb\">ls<\/span> <span class=\"nt\">-l<\/span> \/usr\/libexec\/kubernetes\/kubelet-plugins\/volume\/exec\/\r\ntotal 16\r\ndrwxr-xr-x 2 root root 4096 Nov  6 00:10 ceph.rook.io~rook\r\ndrwxr-xr-x 2 root root 4096 Nov  6 00:10 ceph.rook.io~rook-ceph-system\r\ndrwxr-xr-x 2 root root 4096 Nov  6 00:10 rook.io~rook\r\ndrwxr-xr-x 2 root root 4096 Nov  6 00:10 rook.io~rook-ceph-system\r\n<\/code><\/pre>\n<p>\u6211\u4ee5\u4e3a\u5728\u8fd9\u4e2a\u72b6\u6001\u4e0b\uff0c\u4f7f\u7528\u9ed8\u8ba4\u8bbe\u7f6e\u5e94\u8be5\u53ef\u4ee5\u6b63\u5e38\u8fd0\u884c\u3002\u4f46\u662f\u5f53\u6211\u67e5\u770b\u4e0b\u4e00\u4e2a kubelet \u7684\u8bbe\u7f6e\u65f6\uff0c\u53d1\u73b0\u6307\u5411\u4e86 \/var\/lib\/kubelet\/volume-plugins \u7684\u4e0d\u540c\u4f4d\u7f6e\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>ps aux|grep volume-plugin-dir\r\nroot      1179 11.9  1.7 1848808 142048 ?      Ssl  Nov05  41:51 \/usr\/local\/bin\/kubelet    ...  <span class=\"nt\">--volume-plugin-dir<\/span><span class=\"o\">=<\/span>\/var\/lib\/kubelet\/volume-plugins\r\n<\/code><\/pre>\n<p>\u4e3a\u4e86\u5b9e\u73b0\u8fd9\u4e00\u70b9\uff0c\u6211\u4eec\u7f16\u8f91\u4e86 cluster\/examples\/kubernetes\/ceph \u4e0b\u7684 operator.yaml \u6587\u4ef6\uff0c\u8bbe\u7f6e\u4e86 FLEXVOLUME_DIR_PATH\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span><span class=\"nb\">cd <\/span>cluster\/examples\/kubernetes\/ceph\r\n<\/code><\/pre>\n<p>\u5728\u8fd9\u91cc\uff0c\u7f16\u8f91\u4e86 operator.yaml \u6587\u4ef6\u4e4b\u540e\uff0c\u8fd0\u884c\u4e86 $ git diff operator.yaml \u547d\u4ee4\u7684\u7ed3\u679c\u5982\u4e0b\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gd\">--- a\/cluster\/examples\/kubernetes\/ceph\/operator.yaml\r\n<\/span><span class=\"gi\">+++ b\/cluster\/examples\/kubernetes\/ceph\/operator.yaml\r\n<\/span><span class=\"p\">@@ -308,8 +308,8 @@<\/span> spec:\r\n         # - name: AGENT_TOLERATION_KEY\r\n         #  value: \"&lt;KeyOfTheTaintToTolerate&gt;\"\r\n         # Set the path where the Rook agent can find the flex volumes\r\n<span class=\"gd\">-        # - name: FLEXVOLUME_DIR_PATH\r\n-        #  value: \"&lt;PathToFlexVolumes&gt;\"\r\n<\/span><span class=\"gi\">+        - name: FLEXVOLUME_DIR_PATH\r\n+          value: \"\/var\/lib\/kubelet\/volume-plugins\/\"\r\n<\/span>         # Rook Discover toleration. Will tolerate all taints with all keys.\r\n         # Choose between NoSchedule, PreferNoSchedule and NoExecute:\r\n         # - name: DISCOVER_TOLERATION\r\n<\/code><\/pre>\n<p>\u91cd\u65b0\u5e94\u7528\u6b64 operator.yaml \u6587\u4ef6\u540e\uff0c\u8fc7\u4e00\u6bb5\u65f6\u95f4\uff0cPod \u5c06\u9010\u4e2a\u91cd\u65b0\u542f\u52a8\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl apply <span class=\"nt\">-f<\/span> operator.yaml\r\n<\/code><\/pre>\n<h1>\u786e\u8ba4\u64cd\u4f5c<\/h1>\n<p>\u901a\u8fc7\u81f3\u4eca\u7684\u5de5\u4f5c\uff0crook-ceph \u6210\u529f\u542f\u52a8\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl get all\r\nNAME              READY     STATUS    RESTARTS   AGE\r\npod\/cassandra-0   1\/1       Running   0          6m\r\npod\/cassandra-1   1\/1       Running   0          4m\r\npod\/cassandra-2   1\/1       Running   0          1m\r\n\r\nNAME                TYPE        CLUSTER-IP   EXTERNAL-IP   PORT<span class=\"o\">(<\/span>S<span class=\"o\">)<\/span>    AGE\r\nservice\/cassandra   ClusterIP   None         &lt;none&gt;        9042\/TCP   7h\r\n\r\nNAME                         DESIRED   CURRENT   AGE\r\nstatefulset.apps\/cassandra   3         3         6m\r\n<\/code><\/pre>\n<h2>\u5c06\u670d\u52a1\u5411\u5916\u90e8\u516c\u5f00<\/h2>\n<p>\u6211\u5728\u8fd9\u4e00\u6b65\u91cd\u65b0\u6dfb\u52a0\u4e86\u7c7b\u578b\u4e3aLoadBalancer\u7684Service\uff0c\u4ee5\u4fbf\u4ece\u5916\u90e8\u8bbf\u95eecassandra\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span><span class=\"nb\">cat <\/span>03.cassandra-service.yaml \r\napiVersion: v1\r\nkind: Service\r\nmetadata:\r\n  labels:\r\n    app: cassandra\r\n  name: cassandracl\r\nspec:\r\n  ports:\r\n  - port: 9042\r\n  selector:\r\n    app: cassandra\r\n  <span class=\"nb\">type<\/span>: LoadBalancer\r\n\r\n<span class=\"nv\">$ <\/span>kubectl apply <span class=\"nt\">-f<\/span> 03.cassandra-service.yaml \r\nservice\/cassandracl created\r\n<\/code><\/pre>\n<p>\u5230\u76ee\u524d\u4e3a\u6b62\uff0c\u53ef\u4ece\u5916\u90e8\u8bbf\u95ee\u7684Cassandra\u96c6\u7fa4\u5df2\u7ecf\u6210\u529f\u8fd0\u884c\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl get svc\r\nNAME          TYPE           CLUSTER-IP     EXTERNAL-IP   PORT<span class=\"o\">(<\/span>S<span class=\"o\">)<\/span>          AGE\r\ncassandra     ClusterIP      None           &lt;none&gt;        9042\/TCP         24m\r\ncassandracl   LoadBalancer   10.233.32.79   192.168.100.156   9042:30653\/TCP   23m\r\n<\/code><\/pre>\n<h1>\u7a81\u7136\u505c\u6b62\u8fd0\u52a8<\/h1>\n<p>\u5728\u8003\u8651\u5230\u540e\u7eed\u65ad\u7535\u60c5\u51b5\u4e0b\uff0c\u91cd\u65b0\u542f\u52a8\u6574\u4e2a\u8282\u70b9\u540e\uff0c\u51fa\u73b0\u4e86\u65e0\u6cd5\u6b63\u5e38\u8fd0\u884c\u7684\u95ee\u9898\u3002\u67e5\u770b\u72b6\u6001\u540e\u53d1\u73b0\u5982\u4e0b\u60c5\u51b5\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl describe pod\/cassandra-0\r\n...\r\nEvents:\r\n  Type     Reason       Age              From               Message\r\n  <span class=\"nt\">----<\/span>     <span class=\"nt\">------<\/span>       <span class=\"nt\">----<\/span>             <span class=\"nt\">----<\/span>               <span class=\"nt\">-------<\/span>\r\n  Normal   Scheduled    5m               default-scheduler  Successfully assigned cassandra\/cassandra-0 to node3\r\n  Warning  FailedMount  1m <span class=\"o\">(<\/span>x2 over 3m<span class=\"o\">)<\/span>  kubelet, node3     Unable to mount volumes <span class=\"k\">for <\/span>pod <span class=\"s2\">\"cassandra-0_cassandra(243ea4ec-e188-11e8-8a8f-000db93312a4)\"<\/span>: <span class=\"nb\">timeout <\/span>expired waiting <span class=\"k\">for <\/span>volumes to attach or mount <span class=\"k\">for <\/span>pod <span class=\"s2\">\"cassandra\"<\/span>\/<span class=\"s2\">\"cassandra-0\"<\/span><span class=\"nb\">.<\/span> list of unmounted <span class=\"nv\">volumes<\/span><span class=\"o\">=[<\/span>cassandra-data]. list of unattached <span class=\"nv\">volumes<\/span><span class=\"o\">=[<\/span>cassandra-data default-token-kl6r4]\r\n<\/code><\/pre>\n<p>\u4ecePod\u7684\u65e5\u5fd7\u4e2d\u53ef\u4ee5\u770b\u5230\u5b83\u5df2\u7ecf\u542f\u52a8\u4e86\uff0c\u4f46\u662f\u65e0\u6cd5\u89e3\u6790cassandra-0\u7684IP\u5730\u5740\u3002<\/p>\n<p>\u8d77\u521d\u6211\u5bf9kube-dns\u8868\u793a\u6000\u7591\uff0c\u4f46\u5f53\u4f7f\u7528StatefulSet\u65f6\uff0c\u6211\u53d1\u73b0\u5982\u679c\u6ca1\u6709\u5b9a\u4e49ClusterIP: None\u7684Service(svc)\uff0c\u5c06\u65e0\u6cd5\u83b7\u53d6cassandra-0\u7684IP\u3002<\/p>\n<p>\u6240\u4ee5 svc \u5b9a\u4e49\u4e86\u4e24\u4e2a\u201ccassandra\u201d\u548c\u201ccassandracl\u201d\u3002<\/p>\n<p>\u5f53\u53d1\u51fa\u5bf9kube-dns\uff0810.233.0.3\uff09\u7684\u96c6\u7fa4\u540d\u67e5\u8be2\u65f6\uff0c\u4f1a\u4ee5\u8f6e\u8be2\u65b9\u5f0f\u8fd4\u56de\u5176\u4e0b\u7684POD\u7684A\u8bb0\u5f55\uff08IP\uff09\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>nslookup cassandra.cassandra.svc.cluster.local 10.233.0.3\r\nServer:         10.233.0.3\r\nAddress:        10.233.0.3#53\r\n\r\nName:   cassandra.cassandra.svc.cluster.local\r\nAddress: 10.233.100.160\r\nName:   cassandra.cassandra.svc.cluster.local\r\nAddress: 10.233.71.56\r\nName:   cassandra.cassandra.svc.cluster.local\r\nAddress: 10.233.74.92\r\n<\/code><\/pre>\n<p>\u6211\u8ba4\u4e3a\uff0c\u5728\u5220\u9664\u4e86ClusterIP: None\u7684svc\u5b9a\u4e49\u4e4b\u540e\uff0c\u91cd\u65b0\u5b9a\u4e49\u4e86type: LoadBalancer\u7684svc\uff0c\u6240\u4ee5\u5728\u91cd\u65b0\u542f\u52a8\u65f6\u624d\u53d1\u73b0\u4e86\u95ee\u9898\u3002<\/p>\n<h2>\u65e0\u6cd5\u521b\u5efa\u4e0b\u4e00\u4e2aPVC\u7684\u95ee\u9898<\/h2>\n<p>\u7136\u540e\uff0c\u65e0\u6cd5\u4f7f\u7528StorageClass\u4ecerook-ceph\u521b\u5efa\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"s\">$ kubectl -n cassandra describe pvc myclaim<\/span>\r\n<span class=\"na\">Name<\/span><span class=\"pi\">:<\/span>          <span class=\"s\">myclaim<\/span>\r\n<span class=\"na\">Namespace<\/span><span class=\"pi\">:<\/span>     <span class=\"s\">cassandra<\/span>\r\n<span class=\"na\">StorageClass<\/span><span class=\"pi\">:<\/span>  <span class=\"s\">rook-ceph-block<\/span>\r\n<span class=\"na\">Status<\/span><span class=\"pi\">:<\/span>        <span class=\"s\">Pending<\/span>\r\n<span class=\"na\">Volume<\/span><span class=\"pi\">:<\/span>        \r\n<span class=\"na\">Labels<\/span><span class=\"pi\">:<\/span>        <span class=\"s\">&lt;none&gt;<\/span>\r\n<span class=\"na\">Annotations<\/span><span class=\"pi\">:<\/span>   <span class=\"s\">control-plane.alpha.kubernetes.io\/leader={\"holderIdentity\":\"dd36afbf-e457-11e8-8335-1a7fdbbc44fe\",\"leaseDurationSeconds\":15,\"acquireTime\":\"2018-11-20T05:03:14Z\",\"renewTime\":\"2018-11-20T05:08:29Z\",\"lea...<\/span>\r\n               <span class=\"s\">kubectl.kubernetes.io\/last-applied-configuration={\"apiVersion\":\"v1\",\"kind\":\"PersistentVolumeClaim\",\"metadata\":{\"annotations\":{},\"name\":\"myclaim\",\"namespace\":\"cassandra\"},\"spec\":{\"accessModes\":[\"ReadWr...<\/span>\r\n               <span class=\"s\">volume.beta.kubernetes.io\/storage-provisioner=ceph.rook.io\/block<\/span>\r\n<span class=\"na\">Finalizers<\/span><span class=\"pi\">:<\/span>    <span class=\"pi\">[<\/span><span class=\"nv\">kubernetes.io\/pvc-protection<\/span><span class=\"pi\">]<\/span>\r\n<span class=\"na\">Capacity<\/span><span class=\"pi\">:<\/span>      \r\n<span class=\"na\">Access Modes<\/span><span class=\"pi\">:<\/span>  \r\n<span class=\"na\">Events<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"s\">Type     Reason              Age              From                                                                                         Message<\/span>\r\n  <span class=\"s\">----     ------              ----             ----                                                                                         -------<\/span>\r\n  <span class=\"s\">Normal   Provisioning        1m (x9 over 5m)  ceph.rook.io\/block rook-ceph-operator-6cc45dfb48-kpkj6 dd36afbf-e457-11e8-8335-1a7fdbbc44fe  External provisioner is provisioning volume for claim \"cassandra\/myclaim\"<\/span>\r\n  <span class=\"s\">Warning  ProvisioningFailed  1m (x9 over 5m)  ceph.rook.io\/block rook-ceph-operator-6cc45dfb48-kpkj6 dd36afbf-e457-11e8-8335-1a7fdbbc44fe  Failed to provision volume with StorageClass \"rook-ceph-block\"<\/span><span class=\"na\">: Failed to create rook block image replicapool\/pvc-958a9ee5-ec81-11e8-849d-000db9331290: failed to create image pvc-958a9ee5-ec81-11e8-849d-000db9331290 in pool replicapool of size 5368709120<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Failed to complete ''<\/span><span class=\"na\">: exit status 2. rbd<\/span><span class=\"pi\">:<\/span> <span class=\"s\">error opening pool 'replicapool'<\/span><span class=\"err\">:<\/span> <span class=\"s\">(2) No such file or directory<\/span>\r\n<span class=\"na\">. output<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"s\">Normal  ExternalProvisioning  16s (x78 over 5m)  persistentvolume-controller  waiting for a volume to be created, either by external provisioner \"ceph.rook.io\/block\" or manually created by system administrator<\/span>\r\n<\/code><\/pre>\n<p>\u5e94\u7528toolbox.yaml\u540e\uff0c\u901a\u8fc7ceph\u547d\u4ee4\u6765\u68c0\u67e5\u5b58\u50a8\u6c60\u7684\u72b6\u6001\uff0c\u53d1\u73b0\u65e0\u6cd5\u786e\u8ba4replicapool\u7684\u5b58\u5728\u3002<\/p>\n<pre class=\"post-pre\"><code>$ kubectl -n rook-ceph exec -it rook-ceph-tools -- ceph osd lspools\r\n$\r\n<\/code><\/pre>\n<p>\u67e5\u770b\u6c60\u7684\u5b9a\u4e49\u65f6\uff0c\u53d1\u73b0\u540c\u65f6\u6307\u5b9a\u4e86\u590d\u5236\u548c\u7ea0\u5220\u7801\u9009\u9879\uff0c\u4f46\u5728\u914d\u7f6e\u793a\u4f8b\u4e2d\u5374\u6ca1\u6709\u63d0\u53ca\uff0c\u56e0\u6b64\u6211\u7b80\u5355\u5730\u9009\u62e9\u4e86\u53ea\u4f7f\u7528\u590d\u5236\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"s\">$ kubectl -n rook-ceph get pool replicapool -o yaml<\/span>\r\n<span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ceph.rook.io\/v1beta1<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Pool<\/span>\r\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">annotations<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">kubectl.kubernetes.io\/last-applied-configuration<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">|<\/span>\r\n      <span class=\"s\">{\"apiVersion\":\"ceph.rook.io\/v1beta1\",\"kind\":\"Pool\",\"metadata\":{\"annotations\":{},\"name\":\"replicapool\",\"namespace\":\"rook-ceph\"},\"spec\":{\"erasureCoded\":{\"codingChunks\":1,\"dataChunks\":2},\"replicated\":{\"size\":3}}}<\/span>\r\n  <span class=\"na\">creationTimestamp<\/span><span class=\"pi\">:<\/span> <span class=\"s\">2018-11-20T05:02:46Z<\/span>\r\n  <span class=\"na\">generation<\/span><span class=\"pi\">:<\/span> <span class=\"m\">1<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">replicapool<\/span>\r\n  <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s\">rook-ceph<\/span>\r\n  <span class=\"na\">resourceVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">32423166\"<\/span>\r\n  <span class=\"na\">selfLink<\/span><span class=\"pi\">:<\/span> <span class=\"s\">\/apis\/ceph.rook.io\/v1beta1\/namespaces\/rook-ceph\/pools\/replicapool<\/span>\r\n  <span class=\"na\">uid<\/span><span class=\"pi\">:<\/span> <span class=\"s\">8539e6e1-ec81-11e8-849d-000db9331290<\/span>\r\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">erasureCoded<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">codingChunks<\/span><span class=\"pi\">:<\/span> <span class=\"m\">1<\/span>\r\n    <span class=\"na\">dataChunks<\/span><span class=\"pi\">:<\/span> <span class=\"m\">2<\/span>\r\n  <span class=\"na\">replicated<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">size<\/span><span class=\"pi\">:<\/span> <span class=\"m\">3<\/span>\r\n<\/code><\/pre>\n<p>\u5220\u9664\u4e86pool\u540e\uff0c\u5220\u9664\u4e86spec.erasureCoded\uff0c\u53ea\u4fdd\u7559\u4e86spec.replicated\uff0c\u5e76\u518d\u6b21\u4f7f\u7528apply -f\u547d\u4ee4\u5c06YAML\u6587\u4ef6\u5e94\u7528\uff0c\u6210\u529f\u8fd0\u884c\u3002<\/p>\n<p>\u7531\u4e8e\u4ec5\u6267\u884c &#8220;apply -f&#8221; \u547d\u4ee4\u65e0\u6cd5\u7acb\u5373\u53cd\u6620\u66f4\u6539\uff0c\u56e0\u6b64\u53ef\u4ee5\u63a8\u65ad\u51fa\u8fd9\u662f\u5728\u7a0d\u665a\u4e8e\u4e4b\u524d\u4fee\u6539 storageclass.yaml \u6587\u4ef6\u7684\u65f6\u5019\u91cd\u65b0\u521b\u5efa StorageClass \u65f6\u624d\u53d1\u73b0\u7684\u3002<\/p>\n<h1>\u3010\u79bb\u9898\u4e0d\u8c08\u3011\u6545\u969c\u6392\u9664<\/h1>\n<h2>\u4eea\u8868\u677f<\/h2>\n<p>\u4e3a\u4e86\u6545\u969c\u6392\u9664\uff0c\u5c06Dashboard Service\u7684\u7c7b\u578b\u4eceClusterIP\u66f4\u6539\u4e3aLoadBalancer\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl <span class=\"nt\">-n<\/span> rook-ceph edit svc rook-ceph-mgr-dashboard\r\n<span class=\"nv\">$ <\/span>kubectl <span class=\"nt\">-n<\/span> rook-ceph get svc rook-ceph-mgr-dashboard\r\nNAME                      TYPE           CLUSTER-IP     EXTERNAL-IP    PORT<span class=\"o\">(<\/span>S<span class=\"o\">)<\/span>          AGE\r\nrook-ceph-mgr-dashboard   LoadBalancer   10.233.49.37   192.168.100.110   7000:32606\/TCP   6h\r\n<\/code><\/pre>\n<p>\u6211\u4ece\u6d4f\u89c8\u5668\u4e2d\u67e5\u770b\u4e86\u4eea\u8868\u677f\uff0c\u4f46\u5e76\u6ca1\u6709\u5f97\u5230\u592a\u6709\u8da3\u7684\u7ed3\u679c\u3002<br \/>\n\u8fd9\u4e2a\u4eea\u8868\u677f\u5728\u5916\u89c2\u4e0a\u8fd8\u53ef\u4ee5\uff0c\u4f46\u4e0d\u592a\u503c\u5f97\u63a8\u8350\u3002<\/p>\n<h1>\u5de5\u5177\u7bb1<\/h1>\n<p>\u5f53\u6267\u884cceph\u547d\u4ee4\u6216rdb\u547d\u4ee4\u65f6\uff0c\u8bf7\u6309\u7167\u4ee5\u4e0b\u6b65\u9aa4\u8fdb\u884c\u3002<\/p>\n<p>\u5047\u5b9a\u60a8\u5728\u4f7f\u7528 kubectl apply -f \u524d\u5148\u9884\u5148\u8fdb\u884c\u4e86 toolbox.yaml \u7684\u90e8\u7f72\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl <span class=\"nt\">-n<\/span> rook-ceph <span class=\"nb\">exec<\/span> <span class=\"nt\">-it<\/span> rook-ceph-tools bash\r\n..# ceph osd status\r\n<span class=\"c\"># ceph osd status<\/span>\r\n+----+-------------------------------------+-------+-------+--------+---------+--------+---------+-----------+\r\n| <span class=\"nb\">id<\/span> |                 host                |  used | avail | wr ops | wr data | rd ops | rd data |   state   |\r\n+----+-------------------------------------+-------+-------+--------+---------+--------+---------+-----------+\r\n| 0  | rook-ceph-osd-id-0-6b577745cd-2dlcf | 35.4G |  421G |    0   |     0   |    0   |     0   | exists,up |\r\n| 1  | rook-ceph-osd-id-1-56c8cb7449-wpmk9 | 21.0G |  206G |    0   |     0   |    0   |     0   | exists,up |\r\n| 2  |  rook-ceph-osd-id-2-b8c5d98d5-cmkwh | 20.8G |  206G |    0   |     0   |    1   |    16   | exists,up |\r\n| 3  |  rook-ceph-osd-id-3-894fc4d55-7ttr6 | 18.0G | 89.9G |    0   |     0   |    0   |     0   | exists,up |\r\n| 4  | rook-ceph-osd-id-4-86d4557d64-85vvs | 17.5G | 90.4G |    0   |     0   |    1   |    90   | exists,up |\r\n| 5  |  rook-ceph-osd-id-5-cbfdb6c8b-ws966 | 16.7G | 37.9G |    0   |     0   |    0   |     0   | exists,up |\r\n| 6  |  rook-ceph-osd-id-6-ff948fbbd-dzvfd | 21.0G | 92.2G |    0   |     0   |    0   |     0   | exists,up |\r\n+----+-------------------------------------+-------+-------+--------+---------+--------+---------+-----------+\r\n<span class=\"o\">[<\/span>root@rook-ceph-tools \/]# ceph <span class=\"nb\">df\r\n<\/span>GLOBAL:\r\n    SIZE      AVAIL     RAW USED     %RAW USED\r\n    1295G     1145G         150G         11.63\r\nPOOLS:\r\n    NAME              ID     USED      %USED     MAX AVAIL     OBJECTS\r\n    replicapool       1       134M      0.02          834G          48\r\n    myfs-metadata     2      15962         0          834G          21\r\n    myfs-data0        3         98         0          834G           2\r\n<\/code><\/pre>\n<p>\u4f7f\u7528toolbox.yaml\u6765\u8bbe\u7f6e\u201cceph osd status\u201d\u7684\u522b\u540d\u53ef\u80fd\u4f1a\u5f88\u65b9\u4fbf\u3002<\/p>\n<p>\u522b\u540d show_ceph_osd_status=&#8221;kubectl -n rook-ceph exec -it rook-ceph-tools &#8212; ceph osd status&#8221; -&gt; show_ceph_osd_status \u522b\u540d=&#8221;kubectl -n rook-ceph exec -it rook-ceph-tools &#8212; ceph osd status&#8221;<\/p>\n<p>\u4ee5\u4e0a<\/p>\n<p>(Chinese paraphrase: \u4ee5\u4e0a)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u9996\u5148 \u8fd9\u7bc7\u6587\u7ae0\u5df2\u7ecf\u8fc7\u65f6\u4e86\u3002\u6211\u4eec\u5efa\u8bae\u60a8\u4e0d\u8981\u5347\u7ea7\u4f7f\u7528\u65e7\u7248\u7684rook\/ceph\uff0c\u800c\u662f\u5f15\u5165\u6700\u65b0\u7248\u672c\uff0c\u5e76\u542f\u7528bluest [&hellip;]<\/p>\n","protected":false},"author":9,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-50142","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>\u6211\u5728Kubernetes\u4e0a\u5b89\u88c5\u4e86Rook\uff0c\u5e76\u5c1d\u8bd5\u4f7f\u7528\u5757\u5b58\u50a8 - 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\/\u6211\u5728kubernetes\u4e0a\u5b89\u88c5\u4e86rook\uff0c\u5e76\u5c1d\u8bd5\u4f7f\u7528\u5757\u5b58\u50a8\u3002\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u6211\u5728Kubernetes\u4e0a\u5b89\u88c5\u4e86Rook\uff0c\u5e76\u5c1d\u8bd5\u4f7f\u7528\u5757\u5b58\u50a8\" \/>\n<meta property=\"og:description\" content=\"\u9996\u5148 \u8fd9\u7bc7\u6587\u7ae0\u5df2\u7ecf\u8fc7\u65f6\u4e86\u3002\u6211\u4eec\u5efa\u8bae\u60a8\u4e0d\u8981\u5347\u7ea7\u4f7f\u7528\u65e7\u7248\u7684rook\/ceph\uff0c\u800c\u662f\u5f15\u5165\u6700\u65b0\u7248\u672c\uff0c\u5e76\u542f\u7528bluest [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u6211\u5728kubernetes\u4e0a\u5b89\u88c5\u4e86rook\uff0c\u5e76\u5c1d\u8bd5\u4f7f\u7528\u5757\u5b58\u50a8\u3002\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-18T10:33:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-04T02:55:15+00:00\" \/>\n<meta name=\"author\" content=\"\u6e05, \u626c\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u6e05, \u626c\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 \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\/%e6%88%91%e5%9c%a8kubernetes%e4%b8%8a%e5%ae%89%e8%a3%85%e4%ba%86rook%ef%bc%8c%e5%b9%b6%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8%e5%9d%97%e5%ad%98%e5%82%a8%e3%80%82\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8kubernetes%e4%b8%8a%e5%ae%89%e8%a3%85%e4%ba%86rook%ef%bc%8c%e5%b9%b6%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8%e5%9d%97%e5%ad%98%e5%82%a8%e3%80%82\/\",\"name\":\"\u6211\u5728Kubernetes\u4e0a\u5b89\u88c5\u4e86Rook\uff0c\u5e76\u5c1d\u8bd5\u4f7f\u7528\u5757\u5b58\u50a8 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-06-18T10:33:51+00:00\",\"dateModified\":\"2024-05-04T02:55:15+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/cb5556d2501da73d864cac945e8d9461\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8kubernetes%e4%b8%8a%e5%ae%89%e8%a3%85%e4%ba%86rook%ef%bc%8c%e5%b9%b6%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8%e5%9d%97%e5%ad%98%e5%82%a8%e3%80%82\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8kubernetes%e4%b8%8a%e5%ae%89%e8%a3%85%e4%ba%86rook%ef%bc%8c%e5%b9%b6%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8%e5%9d%97%e5%ad%98%e5%82%a8%e3%80%82\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8kubernetes%e4%b8%8a%e5%ae%89%e8%a3%85%e4%ba%86rook%ef%bc%8c%e5%b9%b6%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8%e5%9d%97%e5%ad%98%e5%82%a8%e3%80%82\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u6211\u5728Kubernetes\u4e0a\u5b89\u88c5\u4e86Rook\uff0c\u5e76\u5c1d\u8bd5\u4f7f\u7528\u5757\u5b58\u50a8\"}]},{\"@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\/cb5556d2501da73d864cac945e8d9461\",\"name\":\"\u6e05, \u626c\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/32a4239de8ff29adace466261d309424a1e5fe9f7e3036bf89fe03f2e3dbe717?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/32a4239de8ff29adace466261d309424a1e5fe9f7e3036bf89fe03f2e3dbe717?s=96&d=mm&r=g\",\"caption\":\"\u6e05, \u626c\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/qingyang\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8kubernetes%e4%b8%8a%e5%ae%89%e8%a3%85%e4%ba%86rook%ef%bc%8c%e5%b9%b6%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8%e5%9d%97%e5%ad%98%e5%82%a8%e3%80%82\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u6211\u5728Kubernetes\u4e0a\u5b89\u88c5\u4e86Rook\uff0c\u5e76\u5c1d\u8bd5\u4f7f\u7528\u5757\u5b58\u50a8 - 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\/\u6211\u5728kubernetes\u4e0a\u5b89\u88c5\u4e86rook\uff0c\u5e76\u5c1d\u8bd5\u4f7f\u7528\u5757\u5b58\u50a8\u3002\/","og_locale":"zh_CN","og_type":"article","og_title":"\u6211\u5728Kubernetes\u4e0a\u5b89\u88c5\u4e86Rook\uff0c\u5e76\u5c1d\u8bd5\u4f7f\u7528\u5757\u5b58\u50a8","og_description":"\u9996\u5148 \u8fd9\u7bc7\u6587\u7ae0\u5df2\u7ecf\u8fc7\u65f6\u4e86\u3002\u6211\u4eec\u5efa\u8bae\u60a8\u4e0d\u8981\u5347\u7ea7\u4f7f\u7528\u65e7\u7248\u7684rook\/ceph\uff0c\u800c\u662f\u5f15\u5165\u6700\u65b0\u7248\u672c\uff0c\u5e76\u542f\u7528bluest [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u6211\u5728kubernetes\u4e0a\u5b89\u88c5\u4e86rook\uff0c\u5e76\u5c1d\u8bd5\u4f7f\u7528\u5757\u5b58\u50a8\u3002\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-06-18T10:33:51+00:00","article_modified_time":"2024-05-04T02:55:15+00:00","author":"\u6e05, \u626c","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u6e05, \u626c","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"8 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8kubernetes%e4%b8%8a%e5%ae%89%e8%a3%85%e4%ba%86rook%ef%bc%8c%e5%b9%b6%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8%e5%9d%97%e5%ad%98%e5%82%a8%e3%80%82\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8kubernetes%e4%b8%8a%e5%ae%89%e8%a3%85%e4%ba%86rook%ef%bc%8c%e5%b9%b6%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8%e5%9d%97%e5%ad%98%e5%82%a8%e3%80%82\/","name":"\u6211\u5728Kubernetes\u4e0a\u5b89\u88c5\u4e86Rook\uff0c\u5e76\u5c1d\u8bd5\u4f7f\u7528\u5757\u5b58\u50a8 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-06-18T10:33:51+00:00","dateModified":"2024-05-04T02:55:15+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/cb5556d2501da73d864cac945e8d9461"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8kubernetes%e4%b8%8a%e5%ae%89%e8%a3%85%e4%ba%86rook%ef%bc%8c%e5%b9%b6%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8%e5%9d%97%e5%ad%98%e5%82%a8%e3%80%82\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8kubernetes%e4%b8%8a%e5%ae%89%e8%a3%85%e4%ba%86rook%ef%bc%8c%e5%b9%b6%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8%e5%9d%97%e5%ad%98%e5%82%a8%e3%80%82\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8kubernetes%e4%b8%8a%e5%ae%89%e8%a3%85%e4%ba%86rook%ef%bc%8c%e5%b9%b6%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8%e5%9d%97%e5%ad%98%e5%82%a8%e3%80%82\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u6211\u5728Kubernetes\u4e0a\u5b89\u88c5\u4e86Rook\uff0c\u5e76\u5c1d\u8bd5\u4f7f\u7528\u5757\u5b58\u50a8"}]},{"@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\/cb5556d2501da73d864cac945e8d9461","name":"\u6e05, \u626c","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/32a4239de8ff29adace466261d309424a1e5fe9f7e3036bf89fe03f2e3dbe717?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/32a4239de8ff29adace466261d309424a1e5fe9f7e3036bf89fe03f2e3dbe717?s=96&d=mm&r=g","caption":"\u6e05, \u626c"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/qingyang\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%9c%a8kubernetes%e4%b8%8a%e5%ae%89%e8%a3%85%e4%ba%86rook%ef%bc%8c%e5%b9%b6%e5%b0%9d%e8%af%95%e4%bd%bf%e7%94%a8%e5%9d%97%e5%ad%98%e5%82%a8%e3%80%82\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/50142","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\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=50142"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/50142\/revisions"}],"predecessor-version":[{"id":97902,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/50142\/revisions\/97902"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=50142"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=50142"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=50142"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}