{"id":119,"date":"2024-07-21T22:32:26","date_gmt":"2024-07-21T13:32:26","guid":{"rendered":"https:\/\/hy2t.com\/?p=119"},"modified":"2024-07-21T22:32:28","modified_gmt":"2024-07-21T13:32:28","slug":"persistent-volume%e3%81%a8persistent-volume-claim%e3%81%a8pod%e3%80%81%e3%81%a9%e3%82%8c%e3%81%8c%e3%81%a9%e3%81%86%e7%b4%90%e3%81%a5%e3%81%8f%e3%81%8b%e8%aa%bf%e3%81%b9%e3%81%9f","status":"publish","type":"post","link":"https:\/\/hy2t.com\/?p=119","title":{"rendered":"Persistent Volume\u3068Persistent Volume Claim\u3068Pod\u3001\u3069\u308c\u304c\u3069\u3046\u7d10\u3065\u304f\u304b\u8abf\u3079\u305f"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u8abf\u3079\u305f\u80cc\u666f<\/h2>\n\n\n\n<p>\u696d\u52d9\u3067Pod\u4f7f\u3046\u3068\u304d\u306f\u6c38\u7d9a\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u4f7f\u3063\u3066\u304a\u3089\u305a\u3001\u3044\u3064\u3082Pod\u3067\u30af\u30e9\u30a6\u30c9\u306b\u7f6e\u3044\u3066\u3042\u308b\u30c7\u30fc\u30bf\u3092DL\u3057\u3066\u3044\u305f\u3002\u3088\u304f\u8003\u3048\u308b\u3068\u6c38\u7d9a\u30dc\u30ea\u30e5\u30fc\u30e0\u5168\u7136\u4f7f\u3063\u3066\u3044\u306a\u3044\u306a\u3001\u3001\u3069\u3046\u4f7f\u3046\u3093\u3060\u3063\u3051\u3068\u3044\u3046\u306e\u3067\u4f7f\u3044\u65b9\u306e\u518d\u52c9\u5f37<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u74b0\u5883<\/h2>\n\n\n\n<p>kind\u3067\u8abf\u3079\u307e\u3057\u305f<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-8949db5358f7a0cff54dc9af233eba4d\"><code>$ kind version\nkind v0.23.0 go1.22.3 darwin\/amd64\n\nkind create cluster --config kind_config.yaml<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p>kind_config.yaml<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-515d3fe7e56502d636c54d7fc3dfdf03\"><code>kind: Cluster\napiVersion: kind.x-k8s.io\/v1alpha4\nnodes:\n- role: control-plane\n  # add a mount from \/path\/to\/my\/files on the host to \/files on the node\n  extraMounts:\n  - hostPath: \/Users\/user\/my_mnt\n    containerPath: \/my_mnt<\/code><\/pre>\n\n\n\n<p>kind\u3067PV\u3092\u4f7f\u3048\u308b\u3088\u3046\u306b\u3001extraMounts\u3092\u6307\u5b9a<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>PVC\u3068PV\u3092\u8abf\u3079\u308b<\/strong><\/h2>\n\n\n\n<p>PVC\u3068PV\u3092apply\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-94ee31f0495bae890f17e4d53160f985\"><code>k apply -f mypv.yaml<\/code><\/pre>\n\n\n\n<p>mypv.yaml<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-114aae4d8f197d7555e3df9c6ac5fa64\"><code>apiVersion: v1\nkind: Namespace\nmetadata:\n  creationTimestamp: null\n  name: namespace1\nspec: {}\nstatus: {}\n\n---\napiVersion: v1\nkind: Namespace\nmetadata:\n  creationTimestamp: null\n  name: namespace2\nspec: {}\nstatus: {}\n\n---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: my-pv\nspec:\n  storageClassName: \"\"\n  capacity:\n    storage: 50Mi\n  accessModes:\n    - ReadWriteMany\n  hostPath:\n    path: \"\/my_mnt\/\"\n\n---\n\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: my-pvc\n  namespace: namespace1\nspec:\n  storageClassName: \"\"\n  accessModes:\n    - ReadWriteMany\n  resources:\n    requests:\n      storage: 20Mi\n\n---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: my-pv2\n  namespace: namespace1\nspec:\n  storageClassName: \"\"\n  capacity:\n    storage: 50Mi\n  accessModes:\n    - ReadWriteMany\n  hostPath:\n    path: \"\/my_mnt\/\"\n\n---\n\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: my-pvc2\n  namespace: namespace1\nspec:\n  storageClassName: \"\"\n  accessModes:\n    - ReadWriteMany\n  resources:\n    requests:\n      storage: 20Mi\n---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: my-pv3\n  namespace: namespace1\nspec:\n  storageClassName: \"\"\n  capacity:\n    storage: 50Mi\n  accessModes:\n    - ReadWriteMany\n  hostPath:\n    path: \"\/my_mnt\/\"\n\n---\n\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: my-pvc3\nspec:\n  storageClassName: \"\"\n  accessModes:\n    - ReadWriteMany\n  resources:\n    requests:\n      storage: 20Mi\n---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: my-pv4\n  namespace: namespace2\nspec:\n  storageClassName: \"\"\n  capacity:\n    storage: 50Mi\n  accessModes:\n    - ReadWriteMany\n  hostPath:\n    path: \"\/my_mnt\/\"\n\n---\n\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: my-pvc4\n  namespace: namespace1\nspec:\n  storageClassName: \"\"\n  accessModes:\n    - ReadWriteMany\n  resources:\n    requests:\n      storage: 20Mi\n---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: my-pv5\nspec:\n  storageClassName: foo\n  capacity:\n    storage: 50Mi\n  accessModes:\n    - ReadWriteMany\n  hostPath:\n    path: \"\/my_mnt\/\"\n\n---\n\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: my-pvc5\nspec:\n  storageClassName: bar\n  accessModes:\n    - ReadWriteMany\n  resources:\n    requests:\n      storage: 20Mi<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p>\u7d50\u679c<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-a2d22fa1b8defc937d94f8a93e8987eb\"><code>$ k get pv -A\nNAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                STORAGECLASS   VOLUMEATTRIBUTESCLASS   REASON   AGE\nmy-pv    50Mi       RWX            Retain           Bound       namespace1\/my-pvc                   &lt;unset>                          3s\nmy-pv2   50Mi       RWX            Retain           Bound       namespace1\/my-pvc2                  &lt;unset>                          3s\nmy-pv3   50Mi       RWX            Retain           Bound       default\/my-pvc3                     &lt;unset>                          3s\nmy-pv4   50Mi       RWX            Retain           Bound       namespace1\/my-pvc4                  &lt;unset>                          3s\nmy-pv5   50Mi       RWX            Retain           Available                        foo            &lt;unset>                          3s<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-a93c956583688a0a8aa846c20afff701\"><code>$ k get pvc -A\nNAMESPACE    NAME      STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE\ndefault      my-pvc3   Bound     my-pv3   50Mi       RWX                           &lt;unset>                 8s\ndefault      my-pvc5   Pending                                      bar            &lt;unset>                 8s\nnamespace1   my-pvc    Bound     my-pv    50Mi       RWX                           &lt;unset>                 8s\nnamespace1   my-pvc2   Bound     my-pv2   50Mi       RWX                           &lt;unset>                 8s\nnamespace1   my-pvc4   Bound     my-pv4   50Mi       RWX                           &lt;unset>                 8s<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p>my-pv(c)4\u307e\u3067\u306f\u5168\u3066Bound\u3068\u306a\u3063\u3066\u3044\u308b\u3002my-pv5\u306fPending\u72b6\u614b\u306a\u306e\u3067\u3001Bind\u3055\u308c\u306a\u304b\u3063\u305f\u3002<\/p>\n\n\n\n<p>Persistent Volume Claim\u306e\u8981\u6c42\u3059\u308b\u5bb9\u91cf\u3092\u6e80\u305f\u3059Persistent Volume\u304c\u3042\u308c\u3070\u3001\u540d\u524d\u7a7a\u9593\u304c\u9055\u3063\u3066\u3082Bind\u3055\u308c\u308b\u3002Bind\u3055\u308c\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u306b\u306f\u3001\u540d\u524d\u7a7a\u9593\u3067\u306f\u306a\u304f\u3066\u3001StorageClass\u3092\u5909\u3048\u308b\u5fc5\u8981\u304c\u3042\u3063\u305f\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">PVC\u3068Pod\u3092\u8abf\u3079\u308b<\/h2>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-046638d67f175aebf45d25317f308997\"><code>k apply -f mypod.yaml<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p>mypod.yaml<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-2674df5b44014c820bb0b89a4a1995fb\"><code>apiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    run: mypod\n  name: mypod\n  namespace: namespace1\nspec:\n  containers:\n  - image: debian:bullseye\n    name: mypod\n    resources: {}\n    command: &#91;\"\/bin\/bash\"]\n    args: &#91;\"-c\", \"sleep 1d\"]\n    volumeMounts:\n      - name: myvol\n        mountPath: \/tmp\/\n  dnsPolicy: ClusterFirst\n  restartPolicy: Always\n  volumes:\n    - name: myvol\n      persistentVolumeClaim:\n        claimName: my-pvc\nstatus: {}\n\n---\n\napiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    run: mypod\n  name: mypod2\n  namespace: namespace1\nspec:\n  containers:\n  - image: debian:bullseye\n    name: mypod\n    resources: {}\n    command: &#91;\"\/bin\/bash\"]\n    args: &#91;\"-c\", \"sleep 1d\"]\n    volumeMounts:\n      - name: myvol\n        mountPath: \/tmp\/\n  dnsPolicy: ClusterFirst\n  restartPolicy: Always\n  volumes:\n    - name: myvol\n      persistentVolumeClaim:\n        claimName: my-pvc\nstatus: {}\n\n---\n\napiVersion: v1\nkind: Pod\nmetadata:\n  creationTimestamp: null\n  labels:\n    run: mypod\n  name: mypod3\nspec:\n  containers:\n  - image: debian:bullseye\n    name: mypod\n    resources: {}\n    command: &#91;\"\/bin\/bash\"]\n    args: &#91;\"-c\", \"sleep 1d\"]\n    volumeMounts:\n      - name: myvol\n        mountPath: \/tmp\/\n  dnsPolicy: ClusterFirst\n  restartPolicy: Always\n  volumes:\n    - name: myvol\n      persistentVolumeClaim:\n        claimName: my-pvc\nstatus: {}<\/code><\/pre>\n\n\n\n<p>\u7d50\u679c<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-efac2e0c1dbed8b16601d4b85fcbae0b\"><code>$ k get pod -A\nNAMESPACE            NAME                                         READY   STATUS    RESTARTS   AGE\ndefault              mypod3                                       0\/1     Pending   0          30m\n...\nnamespace1           mypod                                        1\/1     Running   0          30m\nnamespace1           mypod2                                       1\/1     Running   0          30m<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-39b723834ba20cf47f3dd42b7be7110b\"><code>$ k describe pod mypod3\n\nWarning  FailedScheduling  33s   default-scheduler  0\/1 nodes are available: persistentvolumeclaim \"my-pvc\" not found. preemption: 0\/1 nodes are available: 1 Preemption is not helpful for scheduling.<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p>Pod\u3068PVC\u306f\u540c\u3058\u3067\u306a\u3044\u3068\u30c0\u30e1\u305d\u3046\u3002\u540d\u524d\u7a7a\u9593\u306e\u7570\u306a\u308bmypod3\u306f\u8d77\u52d5\u3067\u304d\u306a\u304b\u3063\u305f\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u8abf\u3079\u305f\u7d50\u679c<\/strong><\/h2>\n\n\n\n<p>PV\u3068PVC\u306ebind\u306fStorageClass\u3067\u5236\u5fa1\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002<\/p>\n\n\n\n<p>PVC\u3068Pod\u306f\u540c\u3058namespace\u306b\u3044\u306a\u3044\u3068\u3044\u3051\u306a\u3044\u3002<\/p>\n\n\n\n<p>\u3042\u3068\u3001PV\u306b\u3064\u3051\u3089\u308c\u308bPVC\u306f\u4e00\u3064\u3060\u3051\u3002<\/p>\n\n\n\n<p>\u8abf\u3079\u305f\u3068\u5049\u305d\u3046\u306b\u66f8\u3044\u305f\u304c\u3001<a href=\"https:\/\/kubernetes.io\/ja\/docs\/concepts\/storage\/persistent-volumes\/#class\" title=\"\">\u516c\u5f0f<\/a>\u306b\u4e57\u3063\u3066\u3044\u308b\u3053\u3068\u306e\u78ba\u8a8d\u3057\u305f\u3060\u3051<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u8abf\u3079\u305f\u80cc\u666f \u696d\u52d9\u3067Pod\u4f7f\u3046\u3068\u304d\u306f\u6c38\u7d9a\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u4f7f\u3063\u3066\u304a\u3089\u305a\u3001\u3044\u3064\u3082Pod\u3067\u30af\u30e9\u30a6\u30c9\u306b\u7f6e\u3044\u3066\u3042\u308b\u30c7\u30fc\u30bf\u3092DL\u3057\u3066\u3044\u305f\u3002\u3088\u304f\u8003\u3048\u308b\u3068\u6c38\u7d9a\u30dc\u30ea\u30e5\u30fc\u30e0\u5168\u7136\u4f7f\u3063\u3066\u3044\u306a\u3044\u306a\u3001\u3001\u3069\u3046\u4f7f\u3046\u3093\u3060\u3063\u3051\u3068\u3044\u3046\u306e\u3067\u4f7f\u3044\u65b9\u306e\u518d\u52c9\u5f37 \u74b0\u5883 ki [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"footnotes":""},"categories":[12],"tags":[8],"class_list":["post-119","post","type-post","status-publish","format-standard","hentry","category-12","tag-k8s"],"_links":{"self":[{"href":"https:\/\/hy2t.com\/index.php?rest_route=\/wp\/v2\/posts\/119","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hy2t.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hy2t.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hy2t.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hy2t.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=119"}],"version-history":[{"count":1,"href":"https:\/\/hy2t.com\/index.php?rest_route=\/wp\/v2\/posts\/119\/revisions"}],"predecessor-version":[{"id":120,"href":"https:\/\/hy2t.com\/index.php?rest_route=\/wp\/v2\/posts\/119\/revisions\/120"}],"wp:attachment":[{"href":"https:\/\/hy2t.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=119"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hy2t.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=119"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hy2t.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=119"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}