Kubernetes: PVC๊ฐ€ ์‚ญ์ œ ๋œ ํ›„ PV๊ฐ€ ์ข…๋ฃŒ์‹œ ๋ฉˆ์ถค

์— ๋งŒ๋“  2018๋…„ 10์›” 11์ผ  ยท  59์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: kubernetes/kubernetes

์ด ์–‘์‹์€ ๋ฒ„๊ทธ ์‹ ๊ณ  ๋ฐ ๊ธฐ๋Šฅ ์š”์ฒญ ์ „์šฉ์ž…๋‹ˆ๋‹ค! ๋„์›€์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ [Stack Overflow] (https://stackoverflow.com/questions/tagged/kubernetes) ๋ฐ [๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฐ€์ด๋“œ] (https://kubernetes.io/docs/tasks/debug-application- ํด๋Ÿฌ์Šคํ„ฐ / ๋ฌธ์ œ ํ•ด๊ฒฐ /). ๋ณด์•ˆ ๊ด€๋ จ ๋ฌธ์ œ์ธ ๊ฒฝ์šฐ https://kubernetes.io/security/๋ฅผ ํ†ตํ•ด ๋น„๊ณต๊ฐœ๋กœ ๊ณต๊ฐœํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋ฒ„๊ทธ ๋ณด๊ณ ์„œ ๋˜๋Š” ๊ธฐ๋Šฅ ์š”์ฒญ์ž…๋‹ˆ๊นŒ? :

ํ•˜๋‚˜๋งŒ ์ฃผ์„ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ œํ•˜๊ณ  ์ž์ฒด ์ค„์— ๋‚จ๊ฒจ ๋‘ก๋‹ˆ๋‹ค.

/ ์ข…๋ฅ˜์˜ ๋ฒ„๊ทธ
/ ์ข…๋ฅ˜ ๊ธฐ๋Šฅ

๋ฌด์Šจ ์ผ์ด ์ผ์–ด ๋‚ฌ์Šต๋‹ˆ๊นŒ?
EBS CSI ๋“œ๋ผ์ด๋ฒ„๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ณ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. PVC๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ PV๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ PVC๋ฅผ ์‚ญ์ œํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ PV ์‚ญ์ œ๋Š” Terminating ์ƒํƒœ์—์„œ ๋ฉˆ ์ถฅ๋‹ˆ ๋‹ค. PVC์™€ ๋ณผ๋ฅจ ๋ชจ๋‘ ๋ฌธ์ œ์—†์ด ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. ๋ณผ๋ฅจ์„ ์ฐพ์„ ์ˆ˜์—†๋Š” ๊ฒฝ์šฐ (์ด๋ฏธ ์—†์–ด ์กŒ๊ธฐ ๋•Œ๋ฌธ์—) ์„ฑ๊ณต์„ ๋ฐ˜ํ™˜ํ•˜๋”๋ผ๋„ CSI ๋“œ๋ผ์ด๋ฒ„๋Š” DeleteVolume ๋กœ ๊ณ„์† ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

CSI ๋“œ๋ผ์ด๋ฒ„ ๋กœ๊ทธ :

I1011 20:37:29.778380       1 controller.go:175] ControllerGetCapabilities: called with args &csi.ControllerGetCapabilitiesRequest{XXX_NoUnkeyedLiteral:struct {}{}, XXX_unrecognized:[]uint8(nil), XXX_sizecache:0}
I1011 20:37:29.780575       1 controller.go:91] DeleteVolume: called with args: &csi.DeleteVolumeRequest{VolumeId:"vol-0ea6117ddb69e78fb", ControllerDeleteSecrets:map[string]string(nil), XXX_NoUnkeyedLiteral:struct {}{}, XXX_unrecognized:[]uint8(nil), XXX_sizecache:0}
I1011 20:37:29.930091       1 controller.go:99] DeleteVolume: volume not found, returning with success

์™ธ๋ถ€ ์ฒจ๋ถ€ ์ž ๋กœ๊ทธ :

I1011 19:15:14.931769       1 controller.go:167] Started VA processing "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53"
I1011 19:15:14.931794       1 csi_handler.go:76] CSIHandler: processing VA "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53"
I1011 19:15:14.931808       1 csi_handler.go:103] Attaching "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53"
I1011 19:15:14.931823       1 csi_handler.go:208] Starting attach operation for "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53"
I1011 19:15:14.931905       1 csi_handler.go:179] PV finalizer is already set on "pvc-069128c6ccdc11e8"
I1011 19:15:14.931947       1 csi_handler.go:156] VA finalizer is already set on "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53"
I1011 19:15:14.931962       1 connection.go:235] GRPC call: /csi.v0.Controller/ControllerPublishVolume
I1011 19:15:14.931966       1 connection.go:236] GRPC request: volume_id:"vol-0ea6117ddb69e78fb" node_id:"i-06d0e08c9565c4db7" volume_capability:<mount:<fs_type:"ext4" > access_mode:<mode:SINGLE_NODE_WRITER > > volume_attributes:<key:"storage.kubernetes.io/csiProvisionerIdentity" value:"1539123546345-8081-com.amazon.aws.csi.ebs" >
I1011 19:15:14.935053       1 controller.go:197] Started PV processing "pvc-069128c6ccdc11e8"
I1011 19:15:14.935072       1 csi_handler.go:350] CSIHandler: processing PV "pvc-069128c6ccdc11e8"
I1011 19:15:14.935106       1 csi_handler.go:386] CSIHandler: processing PV "pvc-069128c6ccdc11e8": VA "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53" found
I1011 19:15:14.952590       1 controller.go:197] Started PV processing "pvc-069128c6ccdc11e8"
I1011 19:15:14.952613       1 csi_handler.go:350] CSIHandler: processing PV "pvc-069128c6ccdc11e8"
I1011 19:15:14.952654       1 csi_handler.go:386] CSIHandler: processing PV "pvc-069128c6ccdc11e8": VA "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53" found
I1011 19:15:15.048026       1 controller.go:197] Started PV processing "pvc-069128c6ccdc11e8"
I1011 19:15:15.048048       1 csi_handler.go:350] CSIHandler: processing PV "pvc-069128c6ccdc11e8"
I1011 19:15:15.048167       1 csi_handler.go:386] CSIHandler: processing PV "pvc-069128c6ccdc11e8": VA "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53" found
I1011 19:15:15.269955       1 connection.go:238] GRPC response:
I1011 19:15:15.269986       1 connection.go:239] GRPC error: rpc error: code = Internal desc = Could not attach volume "vol-0ea6117ddb69e78fb" to node "i-06d0e08c9565c4db7": could not attach volume "vol-0ea6117ddb69e78fb" to node "i-06d0e08c9565c4db7": InvalidVolume.NotFound: The volume 'vol-0ea6117ddb69e78fb' does not exist.
        status code: 400, request id: 634b33d1-71cb-4901-8ee0-98933d2a5b47
I1011 19:15:15.269998       1 csi_handler.go:320] Saving attach error to "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53"
I1011 19:15:15.274440       1 csi_handler.go:330] Saved attach error to "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53"
I1011 19:15:15.274464       1 csi_handler.go:86] Error processing "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53": failed to attach: rpc error: code = Internal desc = Could not attach volume "vol-0ea6117ddb69e78fb" to node "i-06d0e08c9565c4db7": could not attach volume "vol-0ea6117ddb69e78fb" to node "i-06d0e08c9565c4db7": InvalidVolume.NotFound: The volume 'vol-0ea6117ddb69e78fb' does not exist.
        status code: 400, request id: 634b33d1-71cb-4901-8ee0-98933d2a5b47
I1011 19:15:15.274505       1 controller.go:167] Started VA processing "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53"
I1011 19:15:15.274516       1 csi_handler.go:76] CSIHandler: processing VA "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53"
I1011 19:15:15.274522       1 csi_handler.go:103] Attaching "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53"
I1011 19:15:15.274528       1 csi_handler.go:208] Starting attach operation for "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53"
I1011 19:15:15.274536       1 csi_handler.go:320] Saving attach error to "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53"
I1011 19:15:15.278318       1 csi_handler.go:330] Saved attach error to "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53"
I1011 19:15:15.278339       1 csi_handler.go:86] Error processing "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53": failed to attach: PersistentVolume "pvc-069128c6ccdc11e8" is marked for deletion
I1011 20:37:23.328696       1 controller.go:167] Started VA processing "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53"
I1011 20:37:23.328709       1 csi_handler.go:76] CSIHandler: processing VA "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53"
I1011 20:37:23.328715       1 csi_handler.go:103] Attaching "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53"
I1011 20:37:23.328721       1 csi_handler.go:208] Starting attach operation for "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53"
I1011 20:37:23.328730       1 csi_handler.go:320] Saving attach error to "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53"
I1011 20:37:23.330919       1 reflector.go:286] github.com/kubernetes-csi/external-attacher/vendor/k8s.io/client-go/informers/factory.go:87: forcing resync
I1011 20:37:23.330975       1 controller.go:197] Started PV processing "pvc-069128c6ccdc11e8"
I1011 20:37:23.330990       1 csi_handler.go:350] CSIHandler: processing PV "pvc-069128c6ccdc11e8"
I1011 20:37:23.331030       1 csi_handler.go:386] CSIHandler: processing PV "pvc-069128c6ccdc11e8": VA "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53" found
I1011 20:37:23.346007       1 csi_handler.go:330] Saved attach error to "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53"
I1011 20:37:23.346033       1 csi_handler.go:86] Error processing "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53": failed to attach: PersistentVolume "pvc-069128c6ccdc11e8" is marked for deletion
I1011 20:37:23.346069       1 controller.go:167] Started VA processing "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53"
I1011 20:37:23.346077       1 csi_handler.go:76] CSIHandler: processing VA "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53"
I1011 20:37:23.346082       1 csi_handler.go:103] Attaching "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53"
I1011 20:37:23.346088       1 csi_handler.go:208] Starting attach operation for "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53"
I1011 20:37:23.346096       1 csi_handler.go:320] Saving attach error to "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53"
I1011 20:37:23.351068       1 csi_handler.go:330] Saved attach error to "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53"
I1011 20:37:23.351090       1 csi_handler.go:86] Error processing "csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53": failed to attach: PersistentVolume "pvc-069128c6ccdc11e8" is marked for deletion



md5-1fd07c8ba5954ddf526791656477cd92



>> kk get pv
NAME                   CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS        CLAIM            STORAGECLASS   REASON   AGE
pvc-069128c6ccdc11e8   4Gi        RWO            Delete           Terminating   default/claim1   late-sc                 22h

>> kk describe pv
Name:            pvc-069128c6ccdc11e8
Labels:          <none>
Annotations:     pv.kubernetes.io/provisioned-by: com.amazon.aws.csi.ebs
Finalizers:      [external-attacher/com-amazon-aws-csi-ebs]
StorageClass:    late-sc
Status:          Terminating (lasts <invalid>)
Claim:           default/claim1
Reclaim Policy:  Delete
Access Modes:    RWO
Capacity:        4Gi
Node Affinity:   <none>
Message:
Source:
    Type:              CSI (a Container Storage Interface (CSI) volume source)
    Driver:            com.amazon.aws.csi.ebs
    VolumeHandle:      vol-0ea6117ddb69e78fb
    ReadOnly:          false
    VolumeAttributes:      storage.kubernetes.io/csiProvisionerIdentity=1539123546345-8081-com.amazon.aws.csi.ebs
Events:                <none>



md5-f2120c480f582d0bc21b7942f609ee11



kind: StorageClass
apiVersion: storage.k8s.io/v1                                                                                                                                                                                                                             metadata:
  name: late-sc
provisioner: com.amazon.aws.csi.ebs
volumeBindingMode: WaitForFirstConsumer



md5-e246bab3610d0863aa51d67126c191de



apiVersion: v1                                                                                                                                                                                                                                            kind: PersistentVolumeClaim
metadata:
  name: claim1
spec:                                                                                                                                                                                                                                                       accessModes:
    - ReadWriteOnce
  storageClassName: late-sc
  resources:                                                                                                                                                                                                                                                  requests:
      storage: 4Gi

์˜ˆ์ƒ ํ•œ ์ผ :
PVC๊ฐ€ ์‚ญ์ œ ๋œ ํ›„ PV๋Š” EBS ๋ณผ๋ฅจ๊ณผ ํ•จ๊ป˜ ์‚ญ์ œ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค (๋‚ด ํšŒ์ˆ˜ ์ •์ฑ…์ด ์‚ญ์ œ๋˜์—ˆ์œผ๋ฏ€๋กœ).

์žฌํ˜„ ๋ฐฉ๋ฒ• (๊ฐ€๋Šฅํ•œ ํ•œ ์ตœ์†Œํ•œ์œผ๋กœ ์ •ํ™•ํ•˜๊ฒŒ) :
์ง€๊ธˆ๊นŒ์ง€ ๋น„ ๊ฒฐ์ •์ 

์šฐ๋ฆฌ๊ฐ€ ์•Œ์•„์•ผ ํ•  ๋‹ค๋ฅธ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? :

ํ™˜๊ฒฝ :

  • Kubernetes ๋ฒ„์ „ ( kubectl version ) : ํด๋ผ์ด์–ธํŠธ : v1.12.0 ์„œ๋ฒ„ : v1.12.1
  • ํด๋ผ์šฐ๋“œ ๊ณต๊ธ‰์ž ๋˜๋Š” ํ•˜๋“œ์›จ์–ด ๊ตฌ์„ฑ : AWS
  • OS (์˜ˆ : / etc / os-release) :
  • ์ปค๋„ (์˜ˆ : uname -a ) :
  • ๋„๊ตฌ ์„ค์น˜ : ํด๋Ÿฌ์Šคํ„ฐ๋Š” kops๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
  • ๊ธฐํƒ€ :
kinbug sistorage

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‹ค์Œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์—ฌ์ด ๋ฌธ์ œ๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.
Chandras-MacBook-Pro:kubernetes-kafka chandra$ kubectl get pv | grep "kafka/" pvc-5124cf7a-e9dc-11e8-93a1-02551748eea0 1Gi RWO Retain Bound kafka/data-pzoo-0 kafka-zookeeper 21h pvc-639023b2-e9dc-11e8-93a1-02551748eea0 1Gi RWO Retain Bound kafka/data-pzoo-1 kafka-zookeeper 21h pvc-7d88b184-e9dc-11e8-93a1-02551748eea0 1Gi RWO Retain Bound kafka/data-pzoo-2 kafka-zookeeper 21h pvc-9ea68541-e9dc-11e8-93a1-02551748eea0 100Gi RWO Delete Terminating kafka/data-kafka-0 kafka-broker 21h pvc-ae795177-e9dc-11e8-93a1-02551748eea0 100Gi RWO Delete Terminating kafka/data-kafka-1 kafka-broker 21h
๊ทธ๋Ÿฐ ๋‹ค์Œ pv ๊ฐœ๋ณ„์ ์œผ๋กœ ์ˆ˜๋™์œผ๋กœ ํŽธ์ง‘ ํ•œ ๋‹ค์Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ finalizers ๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.
```๊ฒฐ์Šน ์ž :

  • kubernetes.io / pv-protection```

์™„๋ฃŒ๋˜๋ฉด ์ข…๋ฃŒ ์ƒํƒœ์— ์žˆ๋˜ PV๊ฐ€ ๋ชจ๋‘ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค !!!

๋ชจ๋“  59 ๋Œ“๊ธ€

๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ :
1)์ด ์ƒํ™ฉ์—์„œ ์–ด๋–ป๊ฒŒ ๋ฒ—์–ด๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
2) ๋ณผ๋ฅจ์ด ์ด๋ฏธ ์—†์–ด๋„ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์„ฑ๊ณตํ•œ ํ›„ PV๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด์•ผํ•ฉ๋‹ˆ๊นŒ?

/ ์‹œ๊ทธ ์Šคํ† ๋ฆฌ์ง€

PV์— ์•„์ง ์—ฐ๊ฒฐ๊ธฐ์˜ ์ข…๋ฃŒ์ž๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ณผ๋ฅจ์ด ๋…ธ๋“œ์—์„œ ์„ฑ๊ณต์ ์œผ๋กœ ๋ถ„๋ฆฌ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์™ธ๋ถ€ ์—ฐ๊ฒฐ์ž ๋ฐ AD ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๋กœ๊ทธ๋ฅผ ๊ฐ€์ ธ ์˜ค๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

cc @jsafrane

์–ด๋–ค ๋ฒ„์ „์˜ ์™ธ๋ถ€ ์ฒจ๋ถ€์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

v0.3.0์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๋ชจ๋“  ์ธก๋ฉด ์ž๋™์ฐจ๋„ v0.3.0์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์— v0.4.0์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ์ด ๋ฌธ์ œ๋Š” v0.3.0์—์„œ ์‚ฌ์ด๋“œ์นด๋ฅผ ๋‹ค์‹œ ๋งŒ๋“  ํ›„์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ฒจ๋ถ€ ํŒŒ์ผ ๋กœ๊ทธ๋กœ ์„ค๋ช… ์—…๋ฐ์ดํŠธ

PV์— ์•„์ง ์—ฐ๊ฒฐ๊ธฐ์˜ ์ข…๋ฃŒ์ž๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ณผ๋ฅจ์ด ๋…ธ๋“œ์—์„œ ์„ฑ๊ณต์ ์œผ๋กœ ๋ถ„๋ฆฌ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ณผ๋ฅจ์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋ถ„๋ฆฌ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. AWS์—์„œ ์„ฑ๊ณต์ ์œผ๋กœ ์‚ญ์ œ๋˜์—ˆ์œผ๋ฏ€๋กœ ๋ถ„๋ฆฌํ•˜์ง€ ์•Š๊ณ  ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๋˜ํ•œ ๋…ธ๋“œ์—์„œ lsblk ์‚ฌ์šฉํ•˜์—ฌ ์žฅ์น˜๊ฐ€ ์‚ฌ๋ผ์ง„ ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

์—ฐ๊ฒฐ์ด ์„ฑ๊ณตํ•˜๊ธฐ ์ „์— ๋ณผ๋ฅจ์ด ์‚ญ์ œ ํ‘œ์‹œ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ๋ฒ„๊ทธ๊ฐ€์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

VolumeAttachment ๊ฐœ์ฒด๊ฐ€ ๊ณ„์† ํ‘œ์‹œ๋ฉ๋‹ˆ๊นŒ?

VolumeAttachment ๊ฐœ์ฒด๊ฐ€ ๊ณ„์† ํ‘œ์‹œ๋ฉ๋‹ˆ๊นŒ?

์–ด๋–ป๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

kubectl get volumeattachment

๋„ค. ์—ฌ์ „ํžˆ ๊ฑฐ๊ธฐ :

>> kubectl get volumeattachment
NAME                                                                   CREATED AT
csi-3b15269e725f727786c5aec3b4da3f2eebc2477dec53d3480a3fe1dd01adea53   2018-10-10T22:30:09Z

๋กœ๊ทธ๋ฅผ ์ฝ์œผ๋ฉด A / D ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ณผ๋ฅจ์„ ์—ฐ๊ฒฐํ•˜๋ ค๊ณ ํ•˜๋Š”๋ฐ ์™ธ๋ถ€ ์—ฐ๊ฒฐ๊ธฐ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— VolumeAttachment๋ฅผ ์‚ญ์ œํ•˜์ง€ ์•Š์€ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๋Š” ํฌ๋“œ๊ฐ€ ์•„์ง ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด PV ์‚ญ์ œ๋ฅผ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค.

๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๋Š” ํฌ๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  PVC๋„ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. A / D ์ปจํŠธ๋กค๋Ÿฌ ๋กœ๊ทธ๋Š” ์–ด๋–ป๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋งˆ์Šคํ„ฐ ๋…ธ๋“œ ์ธ controller-manager.log์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณผ๋ฅจ ์ด๋ฆ„์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ํ•„ํ„ฐ๋ง์„ ์‹œ๋„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ปจํŠธ๋กค๋Ÿฌ ๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.

E1011 19:14:10.336074       1 daemon_controller.go:304] default/csi-node failed with : error storing status for daemon set &v1.DaemonSet{TypeMeta:v1.TypeMeta{Kind:"", APIVersion:""}, O
bjectMeta:v1.ObjectMeta{Name:"csi-node", GenerateName:"", Namespace:"default", SelfLink:"/apis/apps/v1/namespaces/default/daemonsets/csi-node", UID:"d4e56145-cd89-11e8-9e90-0abab70c948
0", ResourceVersion:"467814", Generation:1, CreationTimestamp:v1.Time{Time:time.Time{wall:0x0, ext:63674882050, loc:(*time.Location)(0x5b9b560)}}, DeletionTimestamp:(*v1.Time)(nil), De
letionGracePeriodSeconds:(*int64)(nil), Labels:map[string]string(nil), Annotations:map[string]string{"deprecated.daemonset.template.generation":"1"}, OwnerReferences:[]v1.OwnerReferenc
e(nil), Initializers:(*v1.Initializers)(nil), Finalizers:[]string(nil), ClusterName:""}, Spec:v1.DaemonSetSpec{Selector:(*v1.LabelSelector)(0xc4233ac360), Template:v1.PodTemplateSpec{O
bjectMeta:v1.ObjectMeta{Name:"", GenerateName:"", Namespace:"", SelfLink:"", UID:"", ResourceVersion:"", Generation:0, CreationTimestamp:v1.Time{Time:time.Time{wall:0x0, ext:0, loc:(*t
ime.Location)(nil)}}, DeletionTimestamp:(*v1.Time)(nil), DeletionGracePeriodSeconds:(*int64)(nil), Labels:map[string]string{"app":"csi-node"}, Annotations:map[string]string(nil), Owner
References:[]v1.OwnerReference(nil), Initializers:(*v1.Initializers)(nil), Finalizers:[]string(nil), ClusterName:""}, Spec:v1.PodSpec{Volumes:[]v1.Volume{v1.Volume{Name:"kubelet-dir",
VolumeSource:v1.VolumeSource{HostPath:(*v1.HostPathVolumeSource)(0xc4233ac380), EmptyDir:(*v1.EmptyDirVolumeSource)(nil), GCEPersistentDisk:(*v1.GCEPersistentDiskVolumeSource)(nil), AW
SElasticBlockStore:(*v1.AWSElasticBlockStoreVolumeSource)(nil), GitRepo:(*v1.GitRepoVolumeSource)(nil), Secret:(*v1.SecretVolumeSource)(nil), NFS:(*v1.NFSVolumeSource)(nil), ISCSI:(*v1
.ISCSIVolumeSource)(nil), Glusterfs:(*v1.GlusterfsVolumeSource)(nil), PersistentVolumeClaim:(*v1.PersistentVolumeClaimVolumeSource)(nil), RBD:(*v1.RBDVolumeSource)(nil), FlexVolume:(*v
1.FlexVolumeSource)(nil), Cinder:(*v1.CinderVolumeSource)(nil), CephFS:(*v1.CephFSVolumeSource)(nil), Flocker:(*v1.FlockerVolumeSource)(nil), DownwardAPI:(*v1.DownwardAPIVolumeSource)(
nil), FC:(*v1.FCVolumeSource)(nil), AzureFile:(*v1.AzureFileVolumeSource)(nil), ConfigMap:(*v1.ConfigMapVolumeSource)(nil), VsphereVolume:(*v1.VsphereVirtualDiskVolumeSource)(nil), Quobyte:(*v1.QuobyteVolumeSource)(nil), AzureDisk:(*v1.AzureDiskVolumeSource)(nil), PhotonPersistentDisk:(*v1.PhotonPersistentDiskVolumeSource)(nil), Projected:(*v1.ProjectedVolumeSource)(nil), PortworxVolume:(*v1.PortworxVolumeSource)(nil), ScaleIO:(*v1.ScaleIOVolumeSource)(nil), StorageOS:(*v1.StorageOSVolumeSource)(nil)}}, v1.Volume{Name:"plugin-dir", VolumeSource:v1.VolumeSource{HostPath:(*v1.HostPathVolumeSource)(0xc4233ac3a0), EmptyDir:(*v1.EmptyDirVolumeSource)(nil), GCEPersistentDisk:(*v1.GCEPersistentDiskVolumeSource)(nil), AWSElasticBlockStore:(*v1.AWSElasticBlockStoreVolumeSource)(nil), GitRepo:(*v1.GitRepoVolumeSource)(nil), Secret:(*v1.SecretVolumeSource)(nil), NFS:(*v1.NFSVolumeSource)(nil), ISCSI:(*v1.ISCSIVolumeSource)(nil), Glusterfs:(*v1.GlusterfsVolumeSource)(nil), PersistentVolumeClaim:(*v1.PersistentVolumeClaimVolumeSource)(nil), RBD:(*v1.RBDVolumeSource)(nil), FlexVolume:(*v1.FlexVolumeSource)(nil), Cinder:(*v1.CinderVolumeSource)(nil), CephFS:(*v1.CephFSVolumeSource)(nil), Flocker:(*v1.FlockerVolumeSource)(nil), DownwardAPI:(*v1.DownwardAPIVolumeSource)(nil), FC:(*v1.FCVolumeSource)(nil), AzureFile:(*v1.AzureFileVolumeSource)(nil), ConfigMap:(*v1.ConfigMapVolumeSource)(nil), VsphereVolume:(*v1.VsphereVirtualDiskVolumeSource)(nil), Quobyte:(*v1.QuobyteVolumeSource)(nil), AzureDisk:(*v1.AzureDiskVolumeSource)(nil), PhotonPersistentDisk:(*v1.PhotonPersistentDiskVolumeSource)(nil), Projected:(*v1.ProjectedVolumeSource)(nil), PortworxVolume:(*v1.PortworxVolumeSource)(nil), ScaleIO:(*v1.ScaleIOVolumeSource)(nil), StorageOS:(*v1.StorageOSVolumeSource)(nil)}}, v1.Volume{Name:"device-dir", VolumeSource:v1.VolumeSource{HostPath:(*v1.HostPathVolumeSource)(0xc4233ac3c0), EmptyDir:(*v1.EmptyDirVolumeSource)(nil), GCEPersistentDisk:(*v1.GCEPersistentDiskVolumeSource)(nil), AWSElasticBlockStore:(*v1.AWSElasticBlockStoreVolumeSource)(nil), GitRepo:(*v1.GitRepoVolumeSource)(nil), Secret:(*v1.SecretVolumeSource)(nil), NFS:(*v1.NFSVolumeSource)(nil), ISCSI:(*v1.ISCSIVolumeSource)(nil), Glusterfs:(*v1.GlusterfsVolumeSource)(nil), PersistentVolumeClaim:(*v1.PersistentVolumeClaimVolumeSource)(nil), RBD:(*v1.RBDVolumeSource)(nil), FlexVolume:(*v1.FlexVolumeSource)(nil), Cinder:(*v1.CinderVolumeSource)(nil), CephFS:(*v1.CephFSVolumeSource)(nil), Flocker:(*v1.FlockerVolumeSource)(nil), DownwardAPI:(*v1.DownwardAPIVolumeSource)(nil), FC:(*v1.FCVolumeSource)(nil), AzureFile:(*v1.AzureFileVolumeSource)(nil), ConfigMap:(*v1.ConfigMapVolumeSource)(nil), VsphereVolume:(*v1.VsphereVirtualDiskVolumeSource)(nil), Quobyte:(*v1.QuobyteVolumeSource)(nil), AzureDisk:(*v1.AzureDiskVolumeSource)(nil), PhotonPersistentDisk:(*v1.PhotonPersistentDiskVolumeSource)(nil), Projected:(*v1.ProjectedVolumeSource)(nil), PortworxVolume:(*v1.PortworxVolumeSource)(nil), ScaleIO:(*v1.ScaleIOVolumeSource)(nil), StorageOS:(*v1.StorageOSVolumeSource)(nil)}}}, InitContainers:[]v1.Container(nil), Containers:[]v1.Container{v1.Container{Name:"csi-driver-registrar", Image:"quay.io/k8scsi/driver-registrar:v0.3.0", Command:[]string(nil), Args:[]string{"--v=5", "--csi-address=$(ADDRESS)"}, WorkingDir:"", Ports:[]v1.ContainerPort(nil), EnvFrom:[]v1.EnvFromSource(nil), Env:[]v1.EnvVar{v1.EnvVar{Name:"ADDRESS", Value:"/csi/csi.sock", ValueFrom:(*v1.EnvVarSource)(nil)}, v1.EnvVar{Name:"KUBE_NODE_NAME", Value:"", ValueFrom:(*v1.EnvVarSource)(0xc4233ac400)}}, Resources:v1.ResourceRequirements{Limits:v1.ResourceList(nil), Requests:v1.ResourceList(nil)}, VolumeMounts:[]v1.VolumeMount{v1.VolumeMount{Name:"plugin-dir", ReadOnly:false, MountPath:"/csi", SubPath:"", MountPropagation:(*v1.MountPropagationMode)(nil)}}, VolumeDevices:[]v1.VolumeDevice(nil), LivenessProbe:(*v1.Probe)(nil), ReadinessProbe:(*v1.Probe)(nil), Lifecycle:(*v1.Lifecycle)(nil), TerminationMessagePath:"/dev/termination-log", TerminationMessagePolicy:"File", ImagePullPolicy:"Always", SecurityContext:(*v1.SecurityContext)(0xc422ccc050), Stdin:false, StdinOnce:false, TTY:false}, v1.Container{Name:"ebs-plugin", Image:"quay.io/bertinatto/ebs-csi-driver:testing", Command:[]string(nil), Args:[]string{"--endpoint=$(CSI_ENDPOINT)", "--logtostderr", "--v=5"}, WorkingDir:"", Ports:[]v1.ContainerPort(nil), EnvFrom:[]v1.EnvFromSource(nil), Env:[]v1.EnvVar{v1.EnvVar{Name:"CSI_ENDPOINT", Value:"unix:/csi/csi.sock", ValueFrom:(*v1.EnvVarSource)(nil)}, v1.EnvVar{Name:"AWS_ACCESS_KEY_ID", Value:"", ValueFrom:(*v1.EnvVarSource)(0xc4233ac460)}, v1.EnvVar{Name:"AWS_SECRET_ACCESS_KEY", Value:"", ValueFrom:(*v1.EnvVarSource)(0xc4233ac480)}}, Resources:v1.ResourceRequirements{Limits:v1.ResourceList(nil), Requests:v1.ResourceList(nil)}, VolumeMounts:[]v1.VolumeMount{v1.VolumeMount{Name:"kubelet-dir", ReadOnly:false, MountPath:"/var/lib/kubelet", SubPath:"", MountPropagation:(*v1.MountPropagationMode)(0xc422c717e0)}, v1.VolumeMount{Name:"plugin-dir", ReadOnly:false, MountPath:"/csi", SubPath:"", MountPropagation:(*v1.MountPropagationMode)(nil)}, v1.VolumeMount{Name:"device-dir", ReadOnly:false, MountPath:"/dev", SubPath:"", MountPropagation:(*v1.MountPropagationMode)(nil)}}, VolumeDevices:[]v1.VolumeDevice(nil), LivenessProbe:(*v1.Probe)(nil), ReadinessProbe:(*v1.Probe)(nil), Lifecycle:(*v1.Lifecycle)(nil), TerminationMessagePath:"/dev/termination-log", TerminationMessagePolicy:"File", ImagePullPolicy:"Always", SecurityContext:(*v1.SecurityContext)(0xc422ccc0f0), Stdin:false, StdinOnce:false, TTY:false}}, RestartPolicy:"Always", TerminationGracePeriodSeconds:(*int64)(0xc422d68b30), ActiveDeadlineSeconds:(*int64)(nil), DNSPolicy:"ClusterFirst", NodeSelector:map[string]string(nil), ServiceAccountName:"csi-node-sa", DeprecatedServiceAccount:"csi-node-sa", AutomountServiceAccountToken:(*bool)(nil), NodeName:"", HostNetwork:true, HostPID:false, HostIPC:false, ShareProcessNamespace:(*bool)(nil), SecurityContext:(*v1.PodSecurityContext)(0xc42325ec60), ImagePullSecrets:[]v1.LocalObjectReference(nil), Hostname:"", Subdomain:"", Affinity:(*v1.Affinity)(nil), SchedulerName:"default-scheduler", Tolerations:[]v1.Toleration(nil), HostAliases:[]v1.HostAlias(nil), PriorityClassName:"", Priority:(*int32)(nil), DNSConfig:(*v1.PodDNSConfig)(nil), ReadinessGates:[]v1.PodReadinessGate(nil), RuntimeClassName:(*string)(nil)}}, UpdateStrategy:v1.DaemonSetUpdateStrategy{Type:"RollingUpdate", RollingUpdate:(*v1.RollingUpdateDaemonSet)(0xc424139a40)}, MinReadySeconds:0, RevisionHistoryLimit:(*int32)(0xc422d68b38)}, Status:v1.DaemonSetStatus{CurrentNumberScheduled:2, NumberMisscheduled:0, DesiredNumberScheduled:3, NumberReady:0, ObservedGeneration:1, UpdatedNumberScheduled:2, NumberAvailable:0, NumberUnavailable:3, CollisionCount:(*int32)(nil), Conditions:[]v1.DaemonSetCondition(nil)}}: Operation cannot be fulfilled on daemonsets.apps "csi-node": the object has been modified; please apply your changes to the latest version and try again
I1011 19:15:14.740106       1 pv_controller.go:601] volume "pvc-069128c6ccdc11e8" is released and reclaim policy "Delete" will be executed
I1011 19:15:14.756316       1 pv_controller.go:824] volume "pvc-069128c6ccdc11e8" entered phase "Released"
I1011 19:15:14.759557       1 pv_controller.go:1294] isVolumeReleased[pvc-069128c6ccdc11e8]: volume is released
I1011 19:15:14.939461       1 pv_controller.go:1294] isVolumeReleased[pvc-069128c6ccdc11e8]: volume is released
I1011 19:15:14.954828       1 pv_controller.go:1294] isVolumeReleased[pvc-069128c6ccdc11e8]: volume is released

๋งˆ์ง€๋ง‰ ์ค„์ด ๋ฌดํ•œํžˆ ๋ฐ˜๋ณต๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ์ด์ œ ๋‘ ๋ฒˆ ๋” ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. v1.12์—์„œ ๋ชจ๋‘

๋‹ค์Œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์—ฌ์ด ๋ฌธ์ œ๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.
Chandras-MacBook-Pro:kubernetes-kafka chandra$ kubectl get pv | grep "kafka/" pvc-5124cf7a-e9dc-11e8-93a1-02551748eea0 1Gi RWO Retain Bound kafka/data-pzoo-0 kafka-zookeeper 21h pvc-639023b2-e9dc-11e8-93a1-02551748eea0 1Gi RWO Retain Bound kafka/data-pzoo-1 kafka-zookeeper 21h pvc-7d88b184-e9dc-11e8-93a1-02551748eea0 1Gi RWO Retain Bound kafka/data-pzoo-2 kafka-zookeeper 21h pvc-9ea68541-e9dc-11e8-93a1-02551748eea0 100Gi RWO Delete Terminating kafka/data-kafka-0 kafka-broker 21h pvc-ae795177-e9dc-11e8-93a1-02551748eea0 100Gi RWO Delete Terminating kafka/data-kafka-1 kafka-broker 21h
๊ทธ๋Ÿฐ ๋‹ค์Œ pv ๊ฐœ๋ณ„์ ์œผ๋กœ ์ˆ˜๋™์œผ๋กœ ํŽธ์ง‘ ํ•œ ๋‹ค์Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ finalizers ๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.
```๊ฒฐ์Šน ์ž :

  • kubernetes.io / pv-protection```

์™„๋ฃŒ๋˜๋ฉด ์ข…๋ฃŒ ์ƒํƒœ์— ์žˆ๋˜ PV๊ฐ€ ๋ชจ๋‘ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค !!!

@ chandraprakash1392์˜ ๋‹ต๋ณ€์€ pvc ์ด Terminating ์ƒํƒœ์—์„œ๋„ ๋ฉˆ์ถ˜ ๊ฒฝ์šฐ์—๋„ ์—ฌ์ „ํžˆ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค.
pvc ๊ฐœ์ฒด๋ฅผ ํŽธ์ง‘ํ•˜๊ณ  finalizers ๊ฐœ์ฒด๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ๋งŒํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค.

์ข…๋ฃŒ์ž๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ผ๋ฟ์ž…๋‹ˆ๋‹ค. @bertinatto @leakingtapan ์ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๊ณ  ์ž์„ธํ•œ CSI ๋“œ๋ผ์ด๋ฒ„ ๋ฐ ์ปจํŠธ๋กค๋Ÿฌ ๊ด€๋ฆฌ์ž ๋กœ๊ทธ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ข…๋ฃŒ์ž๋ฅผ ์œ„ํ•ด ์ œ๊ฑฐํ•˜๋Š” ์˜ˆ

kubectl patch pvc db-pv-claim -p '{"metadata":{"finalizers":null}}'
kubectl patch pod db-74755f6698-8td72 -p '{"metadata":{"finalizers":null}}'

๊ทธ๋Ÿฐ ๋‹ค์Œ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

!!! ์ค‘์š” !!! :
https://github.com/kubernetes/kubernetes/issues/78106 ๋„ ์ฝ์–ด
ํŒจ์น˜ ๋ช…๋ น์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด๋ฉฐ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋ณผ๋ฅจ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. kubectl get volumeattachments!

์ข…๋ฃŒ์ž๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ผ๋ฟ์ž…๋‹ˆ๋‹ค. @bertinatto @leakingtapan ์ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๊ณ  ์ž์„ธํ•œ CSI ๋“œ๋ผ์ด๋ฒ„ ๋ฐ ์ปจํŠธ๋กค๋Ÿฌ ๊ด€๋ฆฌ์ž ๋กœ๊ทธ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋กœ๊ทธ ๋ฉ”์‹œ์ง€๊ฐ€ @leakingtapan์ด ๋ณด๊ณ  ํ•œ ๋ฉ”์‹œ์ง€์™€ ์•ฝ๊ฐ„ ๋‹ค๋ฅธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ๋ช‡ ๋ฒˆ ์‹œ๋„ํ•œ ํ›„ ์žฌํ˜„ ํ•  ์ˆ˜

ํ”Œ๋Ÿฌ๊ทธ์ธ (ํ”„๋กœ ๋น„ ์ €๋„ˆ) : https://gist.github.com/bertinatto/16f5c1f76b1c2577cd66dbedfa4e0c7c
ํ”Œ๋Ÿฌ๊ทธ์ธ (์ฒจ๋ถ€ ์ž) : https://gist.github.com/bertinatto/25ebd591ffc88d034f5b4419c0bfa040
์ปจํŠธ๋กค๋Ÿฌ ๊ด€๋ฆฌ์ž : https://gist.github.com/bertinatto/a2d82fdbccbf7ec0bb5e8ab65d47dcf3

์—ฌ๊ธฐ์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ข…๋ฃŒ์ž๋ฅผ ์‚ญ์ œํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ pv์— ๋Œ€ํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

[root@ip-172-31-44-98 stateful]# k describe pv pvc-1c6625e2-1157-11e9-a8fc-0275b365cbce Name: pvc-1c6625e2-1157-11e9-a8fc-0275b365cbce Labels: failure-domain.beta.kubernetes.io/region=us-east-1 failure-domain.beta.kubernetes.io/zone=us-east-1a Annotations: kubernetes.io/createdby: aws-ebs-dynamic-provisioner pv.kubernetes.io/bound-by-controller: yes pv.kubernetes.io/provisioned-by: kubernetes.io/aws-ebs Finalizers: [kubernetes.io/pv-protection] StorageClass: default Status: Terminating (lasts <invalid>) Claim: monitoring/storage-es-data-0 Reclaim Policy: Delete Access Modes: RWO Capacity: 12Gi Node Affinity: <none> Message: Source: Type: AWSElasticBlockStore (a Persistent Disk resource in AWS) VolumeID: aws://us-east-1a/vol-0a20e4f50b60df855 FSType: ext4 Partition: 0 ReadOnly: false Events: <none>

๋กœ๊ทธ๋ฅผ ์ฝ์œผ๋ฉด A / D ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ณผ๋ฅจ์„ ์—ฐ๊ฒฐํ•˜๋ ค๊ณ ํ•˜๋Š”๋ฐ ์™ธ๋ถ€ ์—ฐ๊ฒฐ๊ธฐ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— VolumeAttachment๋ฅผ ์‚ญ์ œํ•˜์ง€ ์•Š์€ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๋Š” ํฌ๋“œ๊ฐ€ ์•„์ง ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด PV ์‚ญ์ œ๋ฅผ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค.

@jsafrane ํฌ๋“œ๊ฐ€ ํ•˜๋‚˜๋งŒ ์žˆ๊ณ  ํฌ๋“œ๊ฐ€ ์‚ญ์ œ ๋œ ํ›„ PVC๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ์ผ๊ด€๋˜๊ฒŒ ์žฌํ˜„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ AttachVolume์ด ์‹คํŒจ ํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์žฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด 3 ๋…ธ๋“œ k8s ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ˆ˜๋™์œผ๋กœ EBS ๋ณผ๋ฅจ์„ ์ƒ์„ฑ ํ•œ ํ›„ ์ •์  ํ”„๋กœ๋น„์ €๋‹ ๋œ PV๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์–‘ ๋ฐฐํฌ :

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-test2
  annotations:
    pv.kubernetes.io/provisioned-by: ebs.csi.aws.com
spec:
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 1Gi
  csi:
    driver: ebs.csi.aws.com
    fsType: ext3
    volumeHandle: vol-0e850f49c7f6aeff0
  persistentVolumeReclaimPolicy: Delete
  volumeMode: Filesystem
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: claim1
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: ""
  resources:
    requests:
      storage: 1Gi
---
apiVersion: v1
kind: Pod
metadata:
  name: app
spec:
  containers:
  - name: app
    image: centos:7
    command: ["/bin/sh"]
    args: ["-c", "while true; do echo $(date -u) >> /data/out.txt; sleep 5; done"]
    volumeMounts:
    - name: persistent-storage
      mountPath: /data
  volumes:
  - name: persistent-storage
    persistentVolumeClaim:
      claimName: claim1

์˜์—ญ ๋ถˆ์ผ์น˜๋กœ ์ธํ•ด ํฌ๋“œ ์ƒ์„ฑ์— ์‹คํŒจํ•œ ๊ฒฝ์šฐ ํฌ๋“œ๋ฅผ ์‚ญ์ œ ํ•œ ๋‹ค์Œ PVC๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  PV๋Š” ์ข…๋ฃŒ ์ƒํƒœ์—์„œ ๋ฉˆ ์ถฅ๋‹ˆ ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ v1.13์—์„œ ์žฌํ˜„ํ–ˆ๋‹ค

VolumeAttachment ๊ฐœ์ฒด :

apiVersion: v1
items:
- apiVersion: storage.k8s.io/v1
  kind: VolumeAttachment
  metadata:
    annotations:
      csi.alpha.kubernetes.io/node-id: i-056c2441224e9988f
    creationTimestamp: 2019-01-07T20:41:36Z
    finalizers:
    - external-attacher/ebs-csi-aws-com
    name: csi-92e3ad4dcfc45346bd1efae253530bb83f34c7cf0ecb3e58da0cf97645de2e54
    resourceVersion: "390447"
    selfLink: /apis/storage.k8s.io/v1/volumeattachments/csi-92e3ad4dcfc45346bd1efae253530bb83f34c7cf0ecb3e58da0cf97645de2e54
    uid: a0632702-12bc-11e9-844f-0a6817dc5d60
  spec:
    attacher: ebs.csi.aws.com
    nodeName: ip-172-20-106-186.ec2.internal
    source:
      persistentVolumeName: pv-test2
  status:
    attachError:
      message: PersistentVolume "pv-test2" is marked for deletion
      time: 2019-01-07T21:17:27Z
    attached: false
kind: List
metadata:
  resourceVersion: ""
  selfLink: ""

๋‚˜๋Š” ๋•Œ ๋Š๋ฆฐ volumeattachment ๊ฐœ์ฒด๊ฐ€ ๋ฐœ์ƒ ์ƒ๊ฐ csi_attacher.go๋Š” ๋ณผ๋ฅจ์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์‹คํŒจ๋Š” volumeattachment ๊ฐœ์ฒด๊ฐ€ ์‚ญ์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

waitForVolumeAttachment ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ๊ฐœ์ฒด๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ? ์ˆ˜์ • ์‚ฌํ•ญ์„ ๋ณด๋‚ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

/ cc @jsafrane @ msau42

์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ณผ๋ฅจ ID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค ( "๋ณผ๋ฅจ 'vol-01213456789'๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."๋กœ ์—ฐ๊ฒฐ ์‹คํŒจ).

waitForVolumeAttachment ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ๊ฐœ์ฒด๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋งค์šฐ ๊นŒ๋‹ค ๋กญ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ์—ฐ๊ฒฐ ์‹คํŒจ๊ฐ€์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. "์˜๊ตฌ", ๋ณผ๋ฅจ์„ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Œ : EBS ๋ณผ๋ฅจ์ด ์กด์žฌํ•˜์ง€ ์•Š๊ณ  ์ž˜๋ชป๋œ ์˜์—ญ์ด ์žˆ์œผ๋ฉฐ IAM์— ์ถฉ๋ถ„ํ•œ ๊ถŒํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค. ...
  2. "์ž„์‹œ", ๋ณผ๋ฅจ์ด (๊ฐ€๊นŒ์šด) ๋ฏธ๋ž˜์— ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ์Œ : ์‹œ๊ฐ„ ์ดˆ๊ณผ, ๋ณผ๋ฅจ์ด ๋‹ค๋ฅธ ๋…ธ๋“œ์—์„œ ๋ถ„๋ฆฌ๋จ

waitForVolumeAttachment ๊ฐ€ ์‹คํŒจํ•˜๋ฉด A / D ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๊ทธ๊ฒƒ์ด ์–ด๋–ค ์ข…๋ฅ˜์˜ ์‹คํŒจ์ธ์ง€ ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์™ธ๋ถ€ ์—ฐ๊ฒฐ์ž๋Š” ์—ฌ์ „ํžˆ ๋ณผ๋ฅจ์„ ๋ณ‘๋ ฌ๋กœ ์—ฐ๊ฒฐํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋ฉฐ ๊ฒฐ๊ตญ ์„ฑ๊ณตํ•˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

ํŠนํžˆ ์—ฐ๊ฒฐ ์‹œ๊ฐ„์ด ์ดˆ๊ณผ ๋œ ๊ฒฝ์šฐ (๋ณผ๋ฅจ์ด ๋” ์˜ค๋žœ ์‹œ๊ฐ„ ๋™์•ˆ "์—ฐ๊ฒฐ ์ค‘"์ด์—ˆ์Œ) waitForAttachmentState ๊ฐ€ ์‹คํŒจ ํ•  ๋•Œ AWS CSI ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ๋ณผ๋ฅจ์„ ๋ถ„๋ฆฌํ•˜์ง€ ์•Š์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://sourcegraph.com/github.com/kubernetes-sigs/aws-ebs-csi-driver@ff1fe8e1399784657c10d67649146429dcb93515/-/ blob / pkg / cloud / cloud.go # L300

์ฆ‰, CSI ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ ํ–ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  AWS๋Š” ์—ฌ์ „ํžˆ ๋ณผ๋ฅจ ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ControllerPublish๋Š” ์ด์ „์— ๋‚จ์€ waitForAttachmentState ์žฌ๊ฐœํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด ์‹œ์ ์—์„œ A / D ์ปจํŠธ๋กค๋Ÿฌ ๋Š” ๋ณผ๋ฅจ์„ ๋ถ„๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์žˆ์œผ๋ฏ€๋กœ VolumeAttachment๋ฅผ ์‚ญ์ œ

๋ช‡ ๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

1 A / D ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ณผ๋ฅจ์ด ์—ฐ๊ฒฐ๋˜๊ณ  ์žˆ์Œ์„ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜ (ํฌ๋“œ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†์Œ) ๋ถ„๋ฆฌ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค (๋ณผ๋ฅจ์ด DSW์—์„œ ์‚ฌ๋ผ์งˆ ๋•Œ Detach ()๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•จ). ์ด๊ฒƒ์€ ํŠนํžˆ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•œ ํ›„์ด ์ƒํƒœ๋ฅผ ์žฌ๊ตฌ์„ฑ ํ•  ๋•Œ ๋งค์šฐ ๋ณต์žก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. CSI ๋ณผ๋ฅจ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ waitForVolumeAttachment ์‹คํŒจ์‹œ VolumeAttachment๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ControllerPublish / Unpublish๋Š” ๋งค์šฐ ๋น ๋ฅด๋ฉฐ (๊ธฐ๋ณธ์ ์œผ๋กœ 15 ์ดˆ) ์ง€๊ธˆ ๊ตฌํ˜„๋˜๊ณ  ์œ„์—์„œ ์„ค๋ช…ํ•œ๋Œ€๋กœ "์žฌ๊ฐœ"ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์‹œ๊ฐ„ ์ œํ•œ์„ 15 ์ดˆ ๋Š˜๋ฆฌ๋ฉด ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (๊ทธ๋Ÿฌ๋‚˜ CSI ๋ณผ๋ฅจ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ํ•˜๋“œ ์ฝ”๋”ฉ๋˜์–ด ๊ตฌ์„ฑ ํ•  ์ˆ˜ ์—†์Œ).

cc @gnufied @bertinatto

@ jingxu97 , VolumeManager์—์„œ ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ•˜๊ฑฐ๋‚˜ ๋งˆ์šดํŠธ ํ•ด์ œํ•˜์ง€ ์•Š์€ ๋ณผ๋ฅจ ์žฌ๊ตฌ์„ฑ์— ๋ฌด์–ธ๊ฐ€๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ธฐ์–ตํ•ฉ๋‹ˆ๊นŒ? ์—ฌ๊ธฐ์— ๋น„์Šทํ•œ ๊ฒƒ์ด ํ•„์š”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

@jsafrane ์ด https://github.com/kubernetes/kubernetes/pull/71276 ๊ณผ ๊ด€๋ จ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@ jingxu97 ์‹ค์ œ๋กœ # 71276์ด ๋„์›€์ด๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

90 ์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ถ€์‹คํ•ด์ง‘๋‹ˆ๋‹ค.
/remove-lifecycle stale ํ•˜์—ฌ ์ตœ์‹  ๋ฌธ์ œ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
๋น„ํ™œ์„ฑ ๋ฌธ์ œ๋Š” ์ถ”๊ฐ€๋กœ 30 ์ผ ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ฉ๊ณ  ๊ฒฐ๊ตญ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์ง€๊ธˆ ์ข…๋ฃŒํ•ด๋„ ์•ˆ์ „ํ•˜๋‹ค๋ฉด /close ํ•˜์—ฌ ์ข…๋ฃŒํ•˜์„ธ์š”.

sig-testing, kubernetes / test-infra ๋ฐ / ๋˜๋Š” fejta์— ํ”ผ๋“œ๋ฐฑ์„
/ lifecycle stale

/ remove-lifecycle stale

์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์‚ฌ์šฉ์ž kubectl edit pv | pvc ๋ฐ ์ข…๋ฃŒ์ž๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ๊ฐœ์ฒด๋ฅผ ์‚ญ์ œํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.

@pniederlag ์ด ์žฌํ˜„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด PVC ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ํ•ด๋‹น PVC๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ํฌ๋“œ๋„ ์‚ญ์ œ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?

@pnegahdar ๋Š” ์‚ฌ์šฉ์ค‘์ธ kubernetes์˜ ๋ฒ„์ „์„ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@pniederlag ์ด ์žฌํ˜„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด PVC ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ํ•ด๋‹น PVC๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ํฌ๋“œ๋„ ์‚ญ์ œ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?

@ msau42 ๋ถˆํ–‰ํžˆ๋„ ์ด๊ฒƒ์„ ์‰ฝ๊ฒŒ ์žฌํ˜„ ํ•  ์ˆ˜์žˆ๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์•„์ง kubernetes๋ฅผ ์ฒ˜์Œ ์ ‘ํ–ˆ๊ณ  pod๋กœ ๋ณผ๋ฅจ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๊ณ  ์žˆ์œผ๋ฉฐ pod๊ฐ€ ๋ณผ๋ฅจ์„ ์—ฐ๊ฒฐํ•˜์ง€ ๋ชปํ•˜๊ฒŒํ•˜๋Š” ๋ฐ ๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค (ํ‘ธ๋ฅธ ๋””์Šคํฌ ์ง€์›). ๋”ฐ๋ผ์„œ ๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์•„๋งˆ๋„ ์ •์ƒ์ ์ด์ง€ ์•Š์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค (terraform ๋ฐ kubernetes ๋Œ€์‹œ ๋ณด๋“œ๋ฅผ ๋ณ‘๋ ฌ๋กœ ์‚ฌ์šฉ).

์ข…๋ฃŒ์ž๋ฅผ ์œ„ํ•ด ์ œ๊ฑฐํ•˜๋Š” ์˜ˆ

kubectl patch pvc db-pv-claim -p '{"metadata":{"finalizers":null}}'
kubectl patch pod db-74755f6698-8td72 -p '{"metadata":{"finalizers":null}}'

๊ทธ๋Ÿฐ ๋‹ค์Œ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋ฅ˜๋ฅผ ์‚ดํŽด๋ณด๋ฉด # 73098๊ณผ ๊ด€๋ จ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋™์•ˆ ๋‚จ์€ ๋ฆฌ์†Œ์Šค์˜ deleteTimestamp๊ฐ€ ์ง€์†์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์–ด ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ข…๋ฃŒ์ž๋ฅผ ์ œ๊ฑฐํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์ถฉ๋Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์€ 1.14+์—์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

90 ์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ถ€์‹คํ•ด์ง‘๋‹ˆ๋‹ค.
/remove-lifecycle stale ํ•˜์—ฌ ์ตœ์‹  ๋ฌธ์ œ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
๋น„ํ™œ์„ฑ ๋ฌธ์ œ๋Š” ์ถ”๊ฐ€๋กœ 30 ์ผ ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ฉ๊ณ  ๊ฒฐ๊ตญ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์ง€๊ธˆ ์ข…๋ฃŒํ•ด๋„ ์•ˆ์ „ํ•˜๋‹ค๋ฉด /close ํ•˜์—ฌ ์ข…๋ฃŒํ•˜์„ธ์š”.

sig-testing, kubernetes / test-infra ๋ฐ / ๋˜๋Š” fejta์— ํ”ผ๋“œ๋ฐฑ์„
/ lifecycle stale

/ remove-lifecycle stale

v1.14.6์—์„œ ๊ฒฝํ—˜ํ•˜์‹ญ์‹œ์˜ค. ์ฒ˜์Œ์— ์—ฌ๊ธฐ์— ๋‚ด ๋ฌธ์ œ๋ฅผ๋ณด๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค : https://github.com/longhorn/longhorn/issues/722 ๋‚˜๋Š” Longhorn๋„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—. Longhorn์€ ๋ณผ๋ฅจ์„ ์‚ญ์ œํ•˜์—ฌ ์˜ˆ์ •๋œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. API๋ฅผ ํ†ตํ•ด pvc๋ฅผ ์‚ญ์ œํ•˜๋ ค๊ณ ํ•˜๋ฉด ํฌ๋“œ๊ฐ€ removing ์ƒํƒœ waiting on kubernetes.io/pv-protection ์—์„œ ๋ฉˆ ์ถฅ๋‹ˆ ๋‹ค.

"name": "pvc-dadb69dd-04a2-11ea-9e5f-005056a36714",
"persistentVolumeReclaimPolicy": "Delete",
"removed": "2019-11-12T16:46:04Z",
"removedTS": 1573577164000,
"state": "removing",
"status": {
"phase": "Bound",
"type": "/v3/cluster/schemas/persistentVolumeStatus"
},
"storageClassId": "longhorn-new",
"transitioning": "error",
"transitioningMessage": "waiting on kubernetes.io/pv-protection",
"type": "persistentVolume",
"uuid": "dc89634d-04a2-11ea-98c4-005056a34210",
"volumeMode": "Filesystem"
}

๋‹ค์Œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์—ฌ์ด ๋ฌธ์ œ๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.

pvc-5124cf7a-e9dc-11e8-93a1-02551748eea0   1Gi        RWO            Retain           Bound         kafka/data-pzoo-0                                         kafka-zookeeper             21h
pvc-639023b2-e9dc-11e8-93a1-02551748eea0   1Gi        RWO            Retain           Bound         kafka/data-pzoo-1                                         kafka-zookeeper             21h
pvc-7d88b184-e9dc-11e8-93a1-02551748eea0   1Gi        RWO            Retain           Bound         kafka/data-pzoo-2                                         kafka-zookeeper             21h
pvc-9ea68541-e9dc-11e8-93a1-02551748eea0   100Gi      RWO            Delete           Terminating   kafka/data-kafka-0                                        kafka-broker                21h
pvc-ae795177-e9dc-11e8-93a1-02551748eea0   100Gi      RWO            Delete           Terminating   kafka/data-kafka-1                                        kafka-broker                21h

๊ทธ๋Ÿฐ ๋‹ค์Œ pv ๊ฐœ๋ณ„์ ์œผ๋กœ ์ˆ˜๋™์œผ๋กœ ํŽธ์ง‘ ํ•œ ๋‹ค์Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ finalizers ๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.

  - kubernetes.io/pv-protection```

Once done, the PVs those were in Terminating condition were all gone!!!

์•„๋ž˜ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ pv๋ฅผ ํŽธ์ง‘ ํ•œ ๋‹ค์Œ definiton์—์„œ ์ข…๋ฃŒ ์ž ๊ฐœ์ฒด๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
kubectl edit pv pv-name-id

์ง€๊ธˆ๊นŒ์ง€ ์‹ค์ œ ํ•ด๊ฒฐ์ฑ…์ด ์žˆ์Šต๋‹ˆ๊นŒ? 2019 ๋…„ ์ฒซ ๋‹ฌ์—์ด ๋ฌธ์ œ๋ฅผ ๋ณธ ๊ธฐ์–ต์ด ์žˆ์ง€๋งŒ, ์—ฌ์ „ํžˆ ์œ ์ผํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ํŒŒ์ด๋„ ๋ผ์ด์ € ํŒจ์น˜๋ฅผ ๋ด…๋‹ˆ๋‹ค. ์•ˆํƒ€๊น๊ฒŒ๋„์ด "๋ฒ„๊ทธ"๋กœ ์ธํ•ด ํŠน์ • ํ•ญ๋ชฉ์„ ์ž๋™ํ™” ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€ ์ด๊ฒƒ์— ๋Œ€ํ•œ ์ง„๋‹จ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ํ†ต์ฐฐ๋ ฅ์ด ์žˆ์Šต๋‹ˆ๊นŒ? 7 ๊ฐœ์›”์ด ์ง€๋‚œ ํ›„์—๋„์ด ๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ ์•ผ์ƒ์— ์žˆ์œผ๋ฉฐ 7 ๊ฐœ์›” ํ›„์—๋Š” ๋” ์ด์ƒ ์ •๋ณด๋ฅผ ์–ป์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜์ • ๋œ ๋‹ค์–‘ํ•œ ๊ทผ๋ณธ ์›์ธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ๋ฌธ์ œ๋ฅผ ๋””๋ฒ„๊น…ํ•˜๋ ค๋ฉด ์žฌํ˜„ ๋‹จ๊ณ„, pv ๋ณดํ˜ธ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์„ ํ™•์ธํ•˜๊ธฐ์œ„ํ•œ kube-controller-manager์˜ ๋” ์ž์„ธํ•œ ๋กœ๊ทธ, ์ถ”๊ฐ€ ๋””๋ฒ„๊น…์„์œ„ํ•œ ๋‹ค๋ฅธ ์ปจํŠธ๋กค๋Ÿฌ / ๋“œ๋ผ์ด๋ฒ„์˜ ๋” ๋งŽ์€ ๋กœ๊ทธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

90 ์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ถ€์‹คํ•ด์ง‘๋‹ˆ๋‹ค.
/remove-lifecycle stale ํ•˜์—ฌ ์ตœ์‹  ๋ฌธ์ œ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
๋น„ํ™œ์„ฑ ๋ฌธ์ œ๋Š” ์ถ”๊ฐ€๋กœ 30 ์ผ ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ฉ๊ณ  ๊ฒฐ๊ตญ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์ง€๊ธˆ ์ข…๋ฃŒํ•ด๋„ ์•ˆ์ „ํ•˜๋‹ค๋ฉด /close ํ•˜์—ฌ ์ข…๋ฃŒํ•˜์„ธ์š”.

sig-testing, kubernetes / test-infra ๋ฐ / ๋˜๋Š” fejta์— ํ”ผ๋“œ๋ฐฑ์„
/ lifecycle stale

/ remove-lifecycle stale

1.17.5์—์„œ ์—ฌ์ „ํžˆ ๋ฐœ์ƒ

kube-controller-manager-ip-172-16-113-117.us-west-2.compute.internal kube-controller-manager E0421 23:53:59.806754       1 aws.go:2567] Error describing volume "vol-0a2f0e84304490c43": "InvalidVolume.NotFound: The volume 'vol-0a2f0e84304490c43' does not exist.\n\tstatus code: 400, request id: 58776735-a463-40f3-ae7b-95d602e2a466"
kube-controller-manager-ip-172-16-113-117.us-west-2.compute.internal kube-controller-manager E0421 23:53:59.806791       1 aws.go:2299] InvalidVolume.NotFound: The volume 'vol-0a2f0e84304490c43' does not exist.
kube-controller-manager-ip-172-16-113-117.us-west-2.compute.internal kube-controller-manager    status code: 400, request id: 58776735-a463-40f3-ae7b-95d602e2a466
kube-controller-manager-ip-172-16-113-117.us-west-2.compute.internal kube-controller-manager I0421 23:53:59.806802       1 aws.go:1965] Releasing in-process attachment entry: bd -> volume vol-0a2f0e84304490c43
kube-controller-manager-ip-172-16-113-117.us-west-2.compute.internal kube-controller-manager E0421 23:53:59.806809       1 attacher.go:86] Error attaching volume "aws://us-west-2a/vol-0a2f0e84304490c43" to node "ip-172-16-112-89.us-west-2.compute.internal": InvalidVolume.NotFound: The volume 'vol-0a2f0e84304490c43' does not exist.
kube-controller-manager-ip-172-16-113-117.us-west-2.compute.internal kube-controller-manager    status code: 400, request id: 58776735-a463-40f3-ae7b-95d602e2a466

๋‚˜๋„ ์ด๊ฒƒ์— ๋งž์•˜๋‹ค. PV์—๋Š” ์ข…๋ฃŒ ์ž "foregroundDeletion"์ด ์žˆ์Šต๋‹ˆ๋‹ค. PV๋ฅผ ํŽธ์ง‘ํ•˜๊ณ  ์ข…๋ฃŒ์ž๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด PV๊ฐ€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๊ฒฐ๊ตญ ์ˆ˜๋™ ํŽธ์ง‘์„ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ํŒŒ์ด๋„ ๋ผ์ด์ €๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ค‘๋‹จํ• ๊นŒ์š”?

ํ˜„์žฌ PV๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํฌ๋“œ ๋˜๋Š” ์ž‘์—…์ด์žˆ๋Š” ๊ฒฝ์šฐ ์‚ญ์ œํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.

๊ฐ™์€ ๋ฌธ์ œ, PV๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด - kubernetes.io/pv-protection ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ œ๊ฑฐํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ k8s 1.17.9์˜ AKS์—์„œ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. aws์—์„œ ebs๋ฅผ ์ˆ˜๋™์œผ๋กœ ์‚ญ์ œ ํ•œ ๋‹ค์Œ pv๋ฅผ ์‚ญ์ œํ•˜๋ ค๊ณ ํ–ˆ์ง€๋งŒ ์ข…๋ฃŒ ์ƒํƒœ์—์„œ ๋ฉˆ์ท„์Šต๋‹ˆ๋‹ค.

pvc-60fbc6ab-8732-4d1e-ae32-b42295553fa1 95Gi RWO Delete Terminating ray-prod/data-newcrate-1 gp2 5d4h

์ €์—๊ฒŒ ๊ฑฐ์˜ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” Centos 7์˜ Kubernetes 1.19.0์—์„œ NFS๋ฅผ ํ†ตํ•ด TerraMaster NAS ๊ณต์œ ๋ฅผ ๋งˆ์šดํŠธํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ—ฌ๋ฆ„ ์„ค์น˜๋ฅผ ์ค€๋น„ํ•˜๊ธฐ ์œ„ํ•ด์ด ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ํ•ญ๋ชฉ ์ƒ์„ฑ์„ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ PV์™€ PVC๋ฅผ ๋ชจ๋‘ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ทธ๋“ค์„ ์ œ๊ฑฐํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๊ทธ๋“ค์€ ๋งค๋‹ฌ๋ ธ๋‹ค. ๋˜ํ•œ ์ข…๋ฃŒ์ž๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด pv๋ฅผ ์ˆ˜๋™์œผ๋กœ ํŽธ์ง‘ํ•ด์•ผํ–ˆ๊ณ  (๋˜ํ•œ kubernetes.io/pv-protection as andrei-dascalu) ๋งˆ์นจ๋‚ด ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ๊ฐ™์€ ๋ฌธ์ œ :

Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.2", GitCommit:"52c56ce7a8272c798dbc29846288d7cd9fbae032", GitTreeState:"clean", BuildDate:"2020-04-16T11:56:40Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.6", GitCommit:"dff82dc0de47299ab66c83c626e08b245ab19037", GitTreeState:"clean", BuildDate:"2020-07-15T16:51:04Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}

storageClass: longhorn

PVC ๋ฐ PV๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๋“œ๋ฅผ ์‚ญ์ œํ•˜์—ฌ "์ข…๋ฃŒ"์ƒํƒœ๋กœ ๋ฉˆ์ถฐ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์•„๋‹ˆ์š”, ๋‚ด PV์— ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๋ฉด ํฌ๋“œ๊ฐ€ ๋” ์ด์ƒ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

On Friday, September 25, 2020, 04:26:04 AM CDT, lsambolino <[email protected]> wrote:

PVC ๋ฐ PV๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๋“œ๋ฅผ ์‚ญ์ œํ•˜์—ฌ "์ข…๋ฃŒ"์ƒํƒœ๋กœ ๋ฉˆ์ถฐ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

โ€”
๋Œ“๊ธ€์„ ๋‹ฌ์•˜ ๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์‹  ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ๊ตฌ๋…์„ ์ทจ์†Œํ•˜์„ธ์š”.

์ข…๋ฃŒ ์ƒํƒœ์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ PVC๊ฐ€ ๋ถ™์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
kubectl describe pvcname (ํฌ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด)
kubectl patch pvc pvcname -p '{ "metadata": { "finalizers": null}}'
kubectl ํŒจ์น˜ ํฌ๋“œ podname -p '{ "metadata": { "finalizers": null}}'
์ด๊ฒƒ์€ ๋‚ด K8S ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

pvc๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์ด๋Ÿฌํ•œ ๋ช…๋ น์„ ๊ฒŒ์‹œ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@wolfewicz @DMXGuru ํฌ๋“œ๊ฐ€ ์‚ญ์ œ๋˜๋ฉด pvc๊ฐ€ ์ข…๋ฃŒ ์ƒํƒœ์—
์ผ€์ด์Šค๋ฅผ ์žฌํ˜„ํ•˜๊ณ  ์—ฌ๊ธฐ์— ๋ช‡ ๊ฐ€์ง€ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋ถ„๋ฅ˜์— ๋„์›€์„ ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์–ด๋–ป๊ฒŒ ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์›ํ•˜์‹ญ๋‹ˆ๊นŒ? ์ด ๋™์ž‘์„ ๋ณด์—ฌ์ฃผ๋Š” kubectl ๋ช…๋ น ๋ฐ ์ถœ๋ ฅ๊ณผ ๊ฒฐ๊ณผ PV์— ๋Œ€ํ•ด kubectl describe ๋ฐ kubectl get -o yaml?

๋‚ด iPhone์—์„œ ๋ณด๋ƒ„

2020 ๋…„ 10 ์›” 8 ์ผ 14:30์— Jing Xu [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

,,,,,,,,, ๋ฌด,,,,,,,,,,,.
@wolfewicz @DMXGuru ํฌ๋“œ๊ฐ€ ์‚ญ์ œ๋˜๋ฉด pvc๊ฐ€ ์ข…๋ฃŒ ์ƒํƒœ์—
์ผ€์ด์Šค๋ฅผ ์žฌํ˜„ํ•˜๊ณ  ์—ฌ๊ธฐ์— ๋ช‡ ๊ฐ€์ง€ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋ถ„๋ฅ˜์— ๋„์›€์„ ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ๊ตฌ๋…์„ ์ทจ์†Œํ•˜์„ธ์š”.

@DMXGuru ๋จผ์ € ํ™•์ธํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์€ ์‹คํ–‰์ค‘์ธ ํฌ๋“œ๊ฐ€์—†๊ณ  PVC / PV ์ข…๋ฃŒ ์ค‘์— VolumeSnapshot์ด ์ดฌ์˜๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

kubectl ์„ค๋ช… ํฌ๋“œ | grep ClaimName
kubectl describe volumesnapshot | grep persistenceVolumeClaimName

๋‘˜์งธ, pod ๋˜๋Š” pvc ์‚ญ์ œ๋ฅผ ์–ด๋–ค ์ˆœ์„œ๋กœ ์ˆ˜ํ–‰ํ–ˆ๋Š”์ง€ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ฐ์‚ฌ!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰