
ã泚æ perevã ïŒå ã®èšäºã¯æè¿Kubernetesããã°ã«å ¬éãããGoogleãšHuaweiã®åŸæ¥å¡ïŒJing XuãXing YangãSaad AliïŒã«ãã£ãŠæžãããŸãããK8sã®æ©èœãšããŒã¿ã¹ãã¬ãŒãžä»ãã ãšã³ãžãã¢ã¯ãããªã¥ãŒã ã¹ãããã·ã§ããã®ç®çãçŸåšã®æ©èœãããã³ãããã®æäœã®åºæ¬ã«ã€ããŠè©±ããŸãã
Kubernetes v1.12ã¯ãããªã¥ãŒã ã®ã¹ãããã·ã§ããããµããŒãããã¢ã«ãã¡çãå°å ¥ããŸããã ãã®æ©èœã䜿çšãããšãKubernetes APIã䜿çšããŠãã·ã¹ãã ã®ããã€ãã£ããæ段ã䜿çšããŠãã¹ãããã·ã§ããããæ°ããããªã¥ãŒã ãäœæã§ããã ãã§ãªããããªã¥ãŒã ã®ã¹ãããã·ã§ãããäœæããã³åé€ã§ããŸãã
ã¹ãããã·ã§ãããšã¯äœã§ããïŒ
å€ãã®ã¹ãã¬ãŒãžã·ã¹ãã ïŒGoogle Cloud Persistent DiskãAmazon Elastic Block Storageãå€æ°ã®ãªã³ãã¬ãã¹ã¹ãã¬ãŒãžã·ã¹ãã ãªã©ïŒã¯ãæ°žç¶ããªã¥ãŒã ã®ã¹ãããã·ã§ããïŒãã¹ãããã·ã§ãããïŒãäœæããæ©èœãæäŸããŸãã ã¹ãããã·ã§ããã¯ãç¹å®ã®æç¹ã§ã®ããªã¥ãŒã ã®ã³ããŒã§ãã æ°ããããªã¥ãŒã ãæäŸããïŒã¹ãããã·ã§ããã®ããŒã¿ã§æ¢ã«æºããããŠããïŒããæ¢åã®ããªã¥ãŒã ã以åã®ç¶æ ã«åŸ©å ããïŒã¹ãããã·ã§ããã«è¡šç€ºãããïŒããã«äœ¿çšã§ããŸãã
Kubernetesã«ã¹ãããã·ã§ãããè¿œå ããçç±
Kubernetesããªã¥ãŒã ãã©ã°ã€ã³ã·ã¹ãã ã§ã¯ããããã¯ãšãã¡ã€ã«ã¹ãã¬ãŒãžã®ããããžã§ãã³ã°ãæ¥ç¶ãããŠã³ããèªååãã匷åãªæœè±¡åãæ¢ã«å©çšå¯èœã§ãã
ãããã®ãã¹ãŠã®æ©èœãæäŸããããšã¯Kubernetesã¯ãŒã¯ããŒããã¬ã©ã³ã¹ã®ç®æšã®äžéšã§ããKubernetesã¯ãã¢ããªã±ãŒã·ã§ã³ãå®è¡äžã®ç¹å®ã®ã¯ã©ã¹ã¿ãŒã«äŸåãããã¢ããªã±ãŒã·ã§ã³ã®å±éãå¿ èŠãšããªãããã«ãåæ£ã·ã¹ãã ãšããŠæ©èœããã¢ããªã±ãŒã·ã§ã³ãšåºç€ãšãªãã¯ã©ã¹ã¿ãŒã®éã«æœè±¡ã¬ã€ã€ãŒãäœæããããšããŠããŸãã¯ã©ã¹ã¿ãŒåºæã®ç¥èã
Kubernetes Storage SIG㯠ãå€ãã®ã¹ããŒããã«ã¯ãŒã¯ããŒãã®éèŠãªæ©èœãšããŠã¹ãããã·ã§ããæäœãå®çŸ©ããŠããŸãã ããšãã°ãããŒã¿ããŒã¹ç®¡çè ã¯ãæäœãå®è¡ããåã«ããŒã¿ããŒã¹ã®ã¹ãããã·ã§ãããäœæã§ããŸãã
Kubernetes APIã§ã¹ãããã·ã§ããæäœãåŒã³åºãããã®æšæºçãªæ¹æ³ãåãåã£ãKubernetesãŠãŒã¶ãŒã¯ãåé¿çïŒããã³ã¹ãã¬ãŒãžã·ã¹ãã ã«åºæã®æäœã®æååŒã³åºãïŒãå¿ èŠãšããã«æäœã§ããŸãã 代ããã«ããŠãŒã¶ãŒã¯ãåºç€ãšãªãã¹ãã¬ãŒãžã«é¢ä¿ãªãããã¹ãŠãKubernetesã¯ã©ã¹ã¿ãŒã§æ©èœããããšãç©ããã«ç解ããªãããããŒã«ãšããªã·ãŒã«ã¹ãããã·ã§ããæäœãçµã¿èŸŒãæ©äŒãäžããããŸããã
ããã«ããããã®Kubernetesããªããã£ãã¯åºæ¬çãªæ§æèŠçŽ ãšããŠæ©èœããã¹ãã¬ãŒãžç®¡çïŒä¿è·ãè€è£œãããŒã¿ç§»è¡ãªã©ïŒã®ããã®ããé«åºŠãªãšã³ã¿ãŒãã©ã€ãºã¬ãã«ã®æ©èœãéçºããæ©äŒãéããŸãã
Kubernetesã§ã¹ãããã·ã§ããããµããŒãããããªã¥ãŒã ãã©ã°ã€ã³ã¯äœã§ããïŒ
Kubernetesã¯ãããªãŒå ãFlexãããã³CSIã®3çš®é¡ã®ããªã¥ãŒã ãã©ã°ã€ã³ããµããŒãããŠããŸãã 詳现ã«ã€ããŠã¯ã Kubernetes Volume Plugin FAQãåç §ããŠãã ããã
ã¹ãããã·ã§ããã¯CSIãã©ã€ããŒã§ã®ã¿ãµããŒããããŠããŸãïŒããªãŒå ãŸãã¯Flexã®ãããã§ããµããŒããããŠããŸããïŒã ãã®æ©èœãå©çšããã«ã¯ãã¹ãããã·ã§ãããµããŒããå®è£ ããCSIãã©ã€ããŒãKubernetesã¯ã©ã¹ã¿ãŒã«å±éãããŠããããšã確èªããŠãã ããã
ãã®ããã°æçš¿ã®æç¹ïŒ2018幎10æ9æ¥- çŽTranslã ïŒãŸã§ã« ãã¹ãããã·ã§ããã¯æ¬¡ã®CSIãã©ã€ããŒã§ãµããŒããããŠããŸãã
ä»ã®ãã©ã€ããŒã®ã¹ãããã·ã§ããã®ãµããŒãã¯éçºäžã§ããããŸããªãå©çšå¯èœã«ãªãã¯ãã§ãã CSIã®è©³çŽ°ãšCSIãã©ã€ããŒã®å±éæ¹æ³ã«ã€ããŠã¯ãåºçç©ã Kubernetes Goes Betaã®Container Storage InterfaceïŒCSIïŒ ãã«èª¬æããããŸãïŒã Kubernetesãªã©ã§ã®ãã³ã³ããã¹ãã¬ãŒãžã€ã³ã¿ãŒãã§ã€ã¹ã®ç解 ãã®ç¿»èš³ãåç §ããŠãã ããïŒ - çŽTranslã ïŒ ã
ã¹ãããã·ã§ããçšã®Kubernetes API
ã¹ãããã·ã§ããã管çããããã«ãKubernetes Volume Snapshotsã¯Kubernetes Persistent Volumes APIãšåãæ¹æ³ã§3ã€ã®æ°ããAPIãªããžã§ã¯ããå°å ¥ããŸãã
-
VolumeSnapshot
- æå®ãããããªã¥ãŒã ã®ã¹ãããã·ã§ãããèŠæ±ããããã«KubernetesãŠãŒã¶ãŒã«ãã£ãŠäœæãããŸãã ã¹ãããã·ã§ãããåé€ããããã®ã¿ã€ã ã¹ã¿ã³ãããã¹ãããã·ã§ããã䜿çšããæºåãã§ããŠãããã©ãããªã©ãã¹ãããã·ã§ããæäœã«é¢ããæ å ±ãå«ãŸããŠããŸãã
-
PersistentVolumeClaim
ãªããžã§ã¯ããšåæ§ã«ããã®ãªããžã§ã¯ãã®äœæãšåé€ã¯ãã¯ã©ã¹ã¿ãŒãªãœãŒã¹ïŒã¹ãããã·ã§ããïŒãäœæãŸãã¯åé€ãããšãããŠãŒã¶ãŒã®èŠæãè¡šããŠããŸãã
-
VolumeSnapshotContent
- ã¹ãããã·ã§ãããæ£åžžã«äœæããããšãã«CSIãã©ã€ããŒã«ãã£ãŠäœæãããŸãã IDãå«ãã¹ãããã·ã§ããã«é¢ããæ å ±ãå«ãŸããŸãã
-
PersistentVolume
ãªããžã§ã¯ããšåæ§ã«ãããã¯ã¯ã©ã¹ã¿ãŒïŒã¹ãããã·ã§ããïŒã«ãã£ãŠæ¢ã«ãµãŒãã¹ãããŠãããªãœãŒã¹ãè¡šããŸãã -
PersistentVolumeClaim
ããã³PersistentVolume
ãªããžã§ã¯ããšåæ§ã«ãã¹ãããã·ã§ãããäœæããããšãVolumeSnapshotContent
ãªããžã§ã¯ãã¯äœæå ã®VolumeSnapshotContent
ãããŸãïŒ1察1ã®ãããã³ã°ã䜿çšãããŸãïŒã
-
VolumeSnapshotClass
- äœæã§ããã¹ãããã·ã§ãããèšè¿°ããããã«ã¯ã©ã¹ã¿ãŒç®¡çè ã«ãã£ãŠå®çŸ©ãããŸãã ãã©ã€ããŒæ å ±ãã¹ãããã·ã§ããã«ã¢ã¯ã»ã¹ããããã®ç§å¯ãªã©ãå«ãŸããŸãã
-Kubernetesã®ã¡ã€ã³ã®æ°žç¶ããªã¥ãŒã ãªããžã§ã¯ããšã¯ç°ãªãããããã®ã¹ãããã·ã§ãããªããžã§ã¯ãã¯CustomResourceDefinitionsïŒCRDïŒãšããŠå®çŸ©ãããŠããããšã«æ³šæããããšãéèŠã§ãã Kubernetesãããžã§ã¯ãã¯ãAPIãµãŒããŒãAPIãªããžã§ã¯ãããç¬ç«ããŠããã¢ãã«ã«è¿ã¥ããŠãAPIãµãŒããŒã®äºåå®çŸ©ããããªãœãŒã¹ã¿ã€ãããåŸã ã«é ãããã€ã€ãããŸãã ãã®ã¢ãããŒãã«ãããïŒKubernetes以å€ã®ïŒä»ã®ãããžã§ã¯ãã§APIãµãŒããŒãåå©çšã§ããæ¶è²»è ïŒKubernetesãªã©ïŒã¯å¿ èŠãªãªãœãŒã¹ã®ã¿ã€ããCRDãšããŠèšå®ã§ããŸãã
ã¹ãããã·ã§ããããµããŒãããCSIãã©ã€ããŒã¯ãå¿ èŠãªCRDãèªåçã«ã€ã³ã¹ããŒã«ããŸãã Kubernetesã®ãšã³ããŠãŒã¶ãŒã¯ãã¹ãããã·ã§ããããµããŒãããCSIãã©ã€ããŒãã¯ã©ã¹ã¿ãŒã«å±éãããŠããããšã確èªããã ãã§ãã
ãããã®æ°ãããªããžã§ã¯ãã«å ããŠãæ¢åã®
PersistentVolumeClaim
ã¯æ°ãã
DataSource
ãã£ãŒã«ãããããŸãïŒ
type PersistentVolumeClaimSpec struct { AccessModes []PersistentVolumeAccessMode Selector *metav1.LabelSelector Resources ResourceRequirements VolumeName string StorageClassName *string VolumeMode *PersistentVolumeMode DataSource *TypedLocalObjectReference }
ãã®ãã£ãŒã«ãïŒã¢ã«ãã¡ããŒãžã§ã³ã¹ããŒã¿ã¹ïŒã䜿çšãããšãæ°ããããªã¥ãŒã ãäœæãããšãã«ãæ¢åã®ã¹ãããã·ã§ããã®ããŒã¿ãèªåçã«å ¥åã§ããŸãã
Kubernetesã®ã¹ãããã·ã§ããèŠä»¶
Kubernetesã§ããªã¥ãŒã ã¹ãããã·ã§ããã䜿çšããåã«ã以äžãè¡ãå¿ èŠããããŸãã
- ã¹ãããã·ã§ãããå®è£ ããCSIãã©ã€ããŒãå±éãããã¯ã©ã¹ã¿ãŒã§å®è¡ãããŠããããšã確èªããŠãã ããã
- æ°ããæ©èœã²ãŒããä»ããŠKubernetesããªã¥ãŒã ã¹ãããã·ã§ããæ©èœãæå¹ã«ããŸãïŒã¢ã«ãã¡çã§ã¯ããã©ã«ãã§ç¡å¹ã«ãªã£ãŠããŸãïŒïŒ
- API Server
--feature-gates=VolumeSnapshotDataSource=true
次ã®ãã©ã°ãèšå®ããŸã--feature-gates=VolumeSnapshotDataSource=true
- API Server
ã¹ãããã·ã§ãããäœæããåã«ã䜿çšããCSIãã©ã€ããŒã決å®ããå¿ èŠããããŸããããã¯ã
VolumeSnapshotClass
ãªããžã§ã¯ããäœæãã
snapshotter
ãã£ãŒã«ãã§CSIãã©ã€ããŒãæå®ããããšã«ãã£ãŠè¡ãããŸãã 以äžã®
VolumeSnapshotClass
äŸã§ã¯ããã®ãã©ã€ããŒã¯
com.example.csi-driver
ã§ãã åã¹ãããã·ã§ãããããã€ããŒã«ã¯ãå°ãªããšã1ã€ã®
VolumeSnapshotClass
ãªããžã§ã¯ããå¿ èŠã§ãã åCSIãã©ã€ããŒã®ããã©ã«ãã®
VolumeSnapshotClass
ãå®çŸ©ããããšãã§ããŸã-ããã¯ãã¯ã©ã¹å®çŸ©ã§
snapshot.storage.kubernetes.io/is-default-class: "true"
ã¢ãããŒã·ã§ã³ãèšå®ããããšã§å®è¡ãããŸãã
apiVersion: snapshot.storage.k8s.io/v1alpha1 kind: VolumeSnapshotClass metadata: name: default-snapclass annotations: snapshot.storage.kubernetes.io/is-default-class: "true" snapshotter: com.example.csi-driver apiVersion: snapshot.storage.k8s.io/v1alpha1 kind: VolumeSnapshotClass metadata: name: csi-snapclass snapshotter: com.example.csi-driver parameters: fakeSnapshotOption: foo csiSnapshotterSecretName: csi-secret csiSnapshotterSecretNamespace: csi-namespace
ãã¹ãŠã®å¿ é ãã©ã¡ãŒã¿ãŒã¯ãCSIãã©ã€ããŒã®ããã¥ã¡ã³ãã«åŸã£ãŠèšå®ããå¿ èŠããããŸãã äžèšã®äŸã§ã¯ãã¹ãããã·ã§ããã®äœæããã³åé€äžã«ã
fakeSnapshotOption: foo
ãã©ã¡ãŒã¿ãŒãšåè¿°ã®ãã¹ãŠã®ã·ãŒã¯ã¬ãããCSIãã©ã€ããŒã«æž¡ãããŸãã CSI external-snapshotter㯠ãããã©ã«ãã§
csiSnapshotterSecretName
ããã³
csiSnapshotterSecretNamespace
ãã©ã¡ãŒã¿ãŒããŒãä¿åããŸãã
æåŸã«ãã¹ãããã·ã§ãããäœæããåã«ãCSIãã©ã€ããŒã䜿çšããŠããªã¥ãŒã ãäœæããããã«è¡šç€ºããããŒã¿ãå ¥åããå¿ èŠããããŸãïŒCSIããªã¥ãŒã ã®äœ¿çšæ¹æ³ã®è©³çŽ°ã«ã€ããŠã¯ã ãã®è³æãåç §ããŠãã ããïŒã
Kubernetesã§æ°ããã¹ãããã·ã§ãããäœæãã
VolumeSnapshotClass
ãªããžã§ã¯ã
VolumeSnapshotClass
å®çŸ©ãããã¹ãããã·ã§ãããåé€ããããªã¥ãŒã ã«ãªã£ããã
VolumeSnapshot
ãªããžã§ã¯ããäœæããŠãã®æäœãå®è¡ã§ããŸãã
ã¹ãããã·ã§ããã®ãœãŒã¹ã¯ã2ã€ã®ãã©ã¡ãŒã¿ãŒã«ãã£ãŠæ±ºå®ãããŸãã
-
kind
-PersistentVolumeClaim
ããã«ç€ºãããŠããŸãã -
name
-PVCãªããžã§ã¯ãã®å®éã®ååã
ã¹ãããã·ã§ãããäœæãããããªã¥ãŒã ã®åå空éã¯ã
VolumeSnapshot
ãªããžã§ã¯ãã®åå空éã«ãã£ãŠæ±ºå®ãããããšãç解ãããŸãã
apiVersion: snapshot.storage.k8s.io/v1alpha1 kind: VolumeSnapshot metadata: name: new-snapshot-demo namespace: demo-namespace spec: snapshotClassName: csi-snapclass source: name: mypvc kind: PersistentVolumeClaim
VolumeSnapshot
ä»æ§ã§ã¯ãã¹ãããã·ã§ããã®äœæã«äœ¿çšãããCSIãã©ã€ããŒã«é¢ããæ å ±ãå«ã
VolumeSnapshotClass
ã
VolumeSnapshot
ã§ã
VolumeSnapshot
ã 以åã«å ±åããããã«ã
VolumeSnapshot
objectãäœæããåŸã
fakeSnapshotOption: foo
ãã©ã¡ãŒã¿ãŒãšåè¿°ã®ãã¹ãŠã®
VolumeSnapshotClass
ã·ãŒã¯ã¬ããã¯ã
CreateSnapshot
åŒã³åºãã§CSIãã©ã°ã€ã³
com.example.csi-driver
ã«æž¡ãããŸãã
ãã®ãããªèŠæ±ã«å¿ããŠãCSIãã©ã€ããŒã¯ããªã¥ãŒã ã®ã¹ãããã·ã§ããã
VolumeSnapshotContent
ãæ°ããã¹ãããã·ã§ãããè¡šã
VolumeSnapshotContent
ãªããžã§ã¯ããèªåçã«äœæãããã®ãªããžã§ã¯ãã
VolumeSnapshot
ã¢ã¿ããããŠäœ¿çšå¯èœã«ããŸãã CSIãã©ã€ããŒãã¹ãããã·ã§ãããäœæã§ããããšã©ãŒãè¿ãå Žåãã¹ãããã·ã§ããã³ã³ãããŒã©ãŒã¯
VolumeSnapshot
ãªããžã§ã¯ãã®ã¹ããŒã¿ã¹ã§ãã®ãšã©ãŒãå ±åããæ°ããè©Šè¡ãè¡ããŸãã ïŒãã®åäœã¯Kubernetesã®ä»ã®ã³ã³ãããŒã©ãŒãšã¯ç°ãªããŸã-äºæž¬ã§ããªãæéã«ã¹ãããã·ã§ãããäœæããªãããã«å®è£ ãããŠããŸãïŒ ã
ã¹ãããã·ã§ããã¯ã©ã¹ãæå®ãããŠããªãå Žåãexternal-snapshotterã¯ããã©ã«ãã¯ã©ã¹ãæ€çŽ¢ããäœæãããã¹ãããã·ã§ããã«äœ¿çšããããšããŸãã ãã®å Žåãããã©ã«ãã¯ã©ã¹ã®
snapshotter
ãæãCSIãã©ã€ããŒã¯ãPVCã¹ãã¬ãŒãžã¯ã©ã¹ã®
provisioner
è ãæãCSIãã©ã€ããŒã«å¯Ÿå¿ããå¿ èŠããããŸãã
Kubernetesã®ã¹ãããã·ã§ããã®ã¢ã«ãã¡ãªãªãŒã¹ã§ã¯ãäžè²«æ§ãä¿èšŒãããªãããšã«æ³šæããŠãã ããã ã¹ãããã·ã§ããã®å®å šãªããŒã¿ã確ä¿ããã«ã¯ãåé€ããåã«ã¢ããªã±ãŒã·ã§ã³ãé©åã«æºåããïŒã¢ããªã±ãŒã·ã§ã³ãåæ¢ããããã¡ã€ã«ã·ã¹ãã ãããªãŒãºãããªã©ïŒå¿ èŠããããŸãã
VolumeSnapshot
ãªããžã§ã¯ããäœæ
VolumeSnapshot
ãã
VolumeSnapshotContent
ã«é¢é£ä»ããããŠ
VolumeSnapshot
ããšã
VolumeSnapshot
ã«ã¯ã
kubectl describe volumesnapshot
䜿çšã§ããŸãã
-
Status
ã§Ready
ãtrue
ã«ãªã£ãŠããã¯ãtrue
ãããã¯ãããªã¥ãŒã ã¹ãããã·ã§ããã䜿çšããæºåãã§ããŠããããšã瀺ããŸãã - [
Creation Time
ãã£ãŒã«ãã«ã¯ãã¹ãããã·ã§ãããå®éã«ãã€Creation Time
ããããã衚瀺ãããŸãã -
Restore Size
ãã£ãŒã«ã-ã¹ãããã·ã§ããã埩å ããããã®æå°ããªã¥ãŒã ãµã€ãºã - ä»æ§ã®
Snapshot Content Name
ãã£ãŒã«ãã¯ããã®ã¹ãããã·ã§ããçšã«äœæãããVolumeSnapshotContent
ãªããžã§ã¯ããVolumeSnapshotContent
ãŸãã
æ¢åã®ã¹ãããã·ã§ãããKubernetesã«ã€ã³ããŒããã
ãã®ã¹ãããã·ã§ãããè¡šã
VolumeSnapshotContent
ãªããžã§ã¯ããæåã§äœæããããšã«ãããæ¢åã®ã¹ãããã·ã§ãããKubernetesã«ã€ã³ããŒãã§ããŸãã
VolumeSnapshotContent
ã¯åå空éã«é¢é£ä»ããããŠããªãAPIãªããžã§ã¯ãã§ãããããã·ã¹ãã 管çè ã®ã¿ããããäœæããæš©éãæã£ãŠããŸãã
VolumeSnapshotContent
ãªããžã§ã¯ã
VolumeSnapshotContent
äœæããããšããŠãŒã¶ãŒã¯ãããæãå¥ã®ãªããžã§ã¯ã
VolumeSnapshot
äœæã§ããŸãã å€éšã¹ãããã·ã§ããã³ã³ãããŒã©ã¯ã
VolumeSnapshotContent
ãš
VolumeSnapshotContent
éã®æ¥ç¶ã®ååšãšæ£ç¢ºæ§ã確èªããåŸãã¹ãããã·ã§ãããæºåå®äºãšããŠããŒã¯ã
VolumeSnapshotContent
ã ãã®æ¥ç¶ã確ç«ããããšãKubernetesã§ã¹ãããã·ã§ããã䜿çšããæºåãæŽããŸãã
VolumeSnapshotContent
ãªããžã§ã¯ãã¯ã äºåããããžã§ãã³ã°ãããã¹ãããã·ã§ãããè¡šã次ã®ãã£ãŒã«ãã䜿çšããŠäœæããå¿ èŠããããŸãã
-
csiVolumeSnapshotSource
ã¹ãããã·ã§ãããèå¥ããæ å ±ïŒ
-
snapshotHandle
åå/èå¥åã å¿ é ãã£ãŒã«ãã - driver-ãã®ããªã¥ãŒã ãæäœããããã«äœ¿çšãããCSIãã©ã€ããŒã å¿
é ãã£ãŒã«ãã ã³ã³ãããŒã©ãŒïŒã¹ãããã·ã§ããã³ã³ãããŒã©ãŒïŒã®ã¹ããã
snapshotter
ã®ååãšäžèŽããå¿ èŠããããŸãã -
creationTime
ããã³restoreSize
âäºåã«ããããžã§ãã³ã°ãããããªã¥ãŒã ã®å Žåããããã®ãã£ãŒã«ãã¯ãªãã·ã§ã³ã§ãã å€éšã¹ãããã·ã§ããã³ã³ãããŒã©ã¯ãã¹ãããã·ã§ããã®äœæåŸã«ããããèªåçã«æŽæ°ããŸãã
-
-
volumeSnapshotRef
ãã®ãªããžã§ã¯ãïŒã€ãŸãVolumeSnapshotContent
ïŒãVolumeSnapshotContent
ããVolumeSnapshot
ãªããžã§ã¯ããžã®ãã€ã³ã¿ãŒïŒ
-
name
ãšnamespace
-ã³ã³ãã³ãããã€ã³ããããŠããVolumeSnapshot
ãªããžã§ã¯ãã®ååãšåå空éã -
UID
ãªãã·ã§ã³ïŒäºåã«æºåãããããªã¥ãŒã çšïŒãã£ãŒã«ãã å€éšã¹ãããã·ã§ããã³ã³ãããŒã©ã¯ããã€ã³ãåŸã«ãã®ãã£ãŒã«ããèªåçã«æŽæ°ããŸãã ãŠãŒã¶ãŒããã®ãã£ãŒã«ããå®çŸ©ããå Žåããã€ã³ãã£ã³ã°ãçºçããã¹ãããã·ã§ããã®UIDãšäžèŽããããšã確èªããå¿ èŠããããŸãã ãã®ãããªå¯Ÿå¿ããªãå Žåãã³ã³ãã³ãã¯ç¡é¢ä¿ïŒå€ç«ãªããžã§ã¯ãïŒãšã¿ãªããããããã³ã³ãããŒã©ãŒã¯ãããšé¢é£ããã¹ãããã·ã§ããã®äž¡æ¹ãåé€ããŸãã
-
-
snapshotClassName
ã¯ãªãã·ã§ã³ã®ãã£ãŒã«ãã§ãã å€éšã¹ãããã·ã§ããã³ã³ãããŒã©ã¯ããã€ã³ãåŸã«èªåçã«æŽæ°ããŸãã
apiVersion: snapshot.storage.k8s.io/v1alpha1 kind: VolumeSnapshotContent metadata: name: static-snapshot-content spec: csiVolumeSnapshotSource: driver: com.example.csi-driver snapshotHandle: snapshotcontent-example-id volumeSnapshotRef: kind: VolumeSnapshot name: static-snapshot-demo namespace: demo-namespace
ãŠãŒã¶ãŒãã¹ãããã·ã§ãããæäœã§ããããã«ã
VolumeSnapshot
ãªããžã§ã¯ããäœæããå¿ èŠããããŸãã ãã®äžïŒ
-
snapshotClassName
ããªã¥ãŒã ã®ã¹ãããã·ã§ããã¯ã©ã¹ã®ååã ãªãã·ã§ã³ã®ãã£ãŒã«ãã èšå®ããå Žåãã¹ãããã·ã§ããã¯ã©ã¹ã®snapshotter
ãã£ãŒã«ãã¯ãã¹ãããã·ã§ããã³ã³ãããŒã©ãŒã®ååãšäžèŽããå¿ èŠããããŸãã èšå®ãããŠããªãå Žåãã³ã³ãããŒã©ãŒã¯ããã©ã«ãã®ã¹ãããã·ã§ããã¯ã©ã¹ãæ¢ããŸãã -
snapshotContentName
ã·ã§ããããªã¥ãŒã ã®ã³ã³ãã³ãã®ååã äºåã«æºåãããããªã¥ãŒã ã®å¿ é ãã£ãŒã«ãã
apiVersion: snapshot.storage.k8s.io/v1alpha1 kind: VolumeSnapshot metadata: name: static-snapshot-demo namespace: demo-namespace spec: snapshotClassName: csi-snapclass snapshotContentName: static-snapshot-content
ãããã®ãªããžã§ã¯ããäœæããããšãã¹ãããã·ã§ããã³ã³ãããŒã©ãŒã¯ãããããã€ã³ããã
Ready
ãã£ãŒã«ãïŒ
Status
ïŒã
True
ã«èšå®ããŠãã¹ãããã·ã§ããã䜿çšå¯èœãªç¶æ ã§ããããšã瀺ããŸãã
Kubernetesã®ã¹ãããã·ã§ããããæ°ããããªã¥ãŒã ãæºåãã
ã¹ãããã·ã§ãããªããžã§ã¯ãããã®ããŒã¿ãäºåå ¥åãããæ°ããããªã¥ãŒã ãäœæããã«ã¯ã
PersistentVolumeClaim
æ°ãã
dataSource
ãã£ãŒã«ãã䜿çšããŸãã 次ã®3ã€ã®ãã©ã¡ãŒã¿ãŒããããŸãã
-
VolumeSnapshot
ãœãŒã¹ã¹ãããã·ã§ãããè¡šãVolumeSnapshot
ãªããžã§ã¯ãã®ååã -
kind
-VolumeSnapshot
ãšããŠèšå®ããå¿ èŠããããŸãã -
apiGroup
å¿ èŠããããŸãã
ãœãŒã¹ã®åå空éâ
VolumeSnapshot
âã
PersistentVolumeClaim
åå空éãšäžèŽããããšãåæãšããŠããŸãã
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-restore Namespace: demo-namespace spec: storageClassName: csi-storageclass dataSource: name: new-snapshot-demo kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io accessModes: - ReadWriteOnce resources: requests: storage: 1Gi
PersistentVolumeClaim
ãªããžã§ã¯ããäœæããããšãæå®ãããã¹ãããã·ã§ããã®ããŒã¿ãäºåã«å ¥åãããæ°ããããªã¥ãŒã ã®ããããžã§ãã³ã°ãåŒã³åºããŸãã
ã¹ãã¬ãŒãžéçºè ã®å ŽåãCSIãã©ã€ããŒã«ã¹ãããã·ã§ãããµããŒããè¿œå ããã«ã¯ã©ãããã°ããã§ããïŒ
ã¹ãããã·ã§ããã®ãµããŒããæäŸããã«ã¯ãè¿œå ã®ã³ã³ãããŒã©ãŒæ©èœãCSIãã©ã€ããŒã«è¿œå ããå¿ èŠããããŸãïŒ
CREATE_DELETE_SNAPSHOT
ããã³
LIST_SNAPSHOTS
ãããã³è¿œå ã®RPCã³ã³ãããŒã©ãŒïŒ
CreateSnapshot
ã
DeleteSnapshot
ã
ListSnapshots
ã 詳现ã«ã€ããŠã¯ãCSIä»æ§ãåç §ããŠãã ããã
Kubernetesã¯CSIããªã¥ãŒã ãã©ã€ããŒã®ããã±ãŒãžåãšå±éã«é¢ããæãåºæ¬çãªã¬ã€ãã©ã€ã³ãæäŸããŠããŸããããã®ããã»ã¹ãç°¡çŽ åããããã«Kubernetesã«ä»»æã®ã³ã³ãããŒåãããCSIãã©ã€ããŒãå±éããæšå¥šã¡ã«ããºã ããããŸãã
æšå¥šãããå±éããã»ã¹ã®äžç°ãšããŠãKubernetesããŒã ã¯ã external-snapshotterãåãããµã€ãã«ãŒã³ã³ãããŒãªã©ãããŸããŸãªãµã€ãã«ãŒïŒã€ãŸããè£å©ïŒã³ã³ãããŒã®äœ¿çšãææ¡ããŠããŸãã
åè¿°ã®å€éšã¹ãããã·ã§ããã¯ãAPIãµãŒããŒã®
VolumeSnapshot
ããã³
VolumeSnapshotContent
ãªããžã§ã¯ããç£èŠããCSIãšã³ããã€ã³ãã®
CreateSnapshot
ããã³
DeleteSnapshot
ãåŒã³åºããŸãã CSI å€éšãããã€ããŒãåãããµã€ãã«ãŒã³ã³ãããŒãæŽæ°ãããæ°ããPVC
dataSource
ãã£ãŒã«ãã䜿çšããã¹ãããã·ã§ããããã®ããªã¥ãŒã ã®å埩ããµããŒããããŸãã
ã¹ãããã·ã§ããæ©èœããµããŒãããã«ã¯ãã¹ãã¬ãŒãžã¡ãŒã«ãŒã¯ãå€éšããããžã§ããŒã«å ããŠå€éšã¹ãããã·ã§ãããåãããµã€ãã«ãŒã³ã³ãããŒãå±éããCSIãã©ã€ããŒã
StatefulSet
ã«é 眮ããããšããå§ãããŸãïŒäžå³ãåç §ïŒã

ãã®å±éã®äŸã§ã¯ã2ã€ã®ãµã€ãã«ãŒã³ã³ãããŒãå€éšããããžã§ãã³ã°ãšå€éšã¹ãããã·ã§ããããããCSIãã©ã€ããŒã¯StatefulSetãããå ã®CSIãã¹ããã¹ãã©ã°ã€ã³ã§å±éãããŸãã CSIãã¹ããã¹ã¯ãå®çšŒåç°å¢ã§ã®äœ¿çšãæå³ããŠããªããã©ã°ã€ã³ã®äŸã§ãã
ã¢ã«ãã¡çã®å¶éã¯äœã§ããïŒ
Kubernetesã®ã¹ãããã·ã§ããå®è£ ã®ã¢ã«ãã¡çã«ã¯ã次ã®å¶éããããŸãã
- ã¹ãããã·ã§ããã§è¡šããã以åã®ç¶æ ãžã®æ¢åã®ããªã¥ãŒã ã®ããŒã«ããã¯ã¯ãµããŒããããŠããŸããïŒã¹ãããã·ã§ããããã®æ°ããããªã¥ãŒã ã®ããããžã§ãã³ã°ã®ã¿ããµããŒããããŠããŸãïŒã
- ã¹ãããã·ã§ããããã®æ¢åã®
PersistentVolumeClaim
ã€ã³ãã¬ãŒã¹ãªã¹ãã¢ã¯ãµããŒããããŠããŸããã ã¹ãããã·ã§ããããã®æ°ããããªã¥ãŒã ã®ããããžã§ãã³ã°ã¯æ©èœããŸãããæ°ããããªã¥ãŒã ãæãããã«æ¢åã®PersistentVolumeClaim
æŽæ°ãããPVCã以åã®ç¶æ ã«ããŒã«ããã¯ããŸãïŒã¹ãããã·ã§ããããäœæãããæ°ããããªã¥ãŒã ã䜿çšããã®ã¯ãæ°ããPV / PVCã®ã¿ã§ãïŒã - ã¹ãããã·ã§ããã®äžè²«æ§ã®ä¿èšŒã¯ãã¹ãã¬ãŒãžã·ã¹ãã ãæäŸããä¿èšŒïŒããšãã°ãããããããããšãã®æŽåæ§ïŒãè¶ ããããšã¯ãããŸããã
次ã¯ïŒ
KubernetesããŒã ã¯ãCSIã®ã¹ãããã·ã§ããã®å®è£ ããåãåã£ããã£ãŒãããã¯ãšãã¯ãããžãŒã®é©å¿ã«å¿ããŠããªãªãŒã¹1.13ãŸãã¯1.14ã®ããŒã¿çã«ç§»è¡ããäºå®ã§ãã
詳现ã調ã¹ãæ¹æ³ã¯ïŒ
k8s.io/docs/concepts/storage/volume-snapshotsããã³kubernetes-csi.github.io/docsã«ããè¿œå ã®ã¹ãããã·ã§ããããã¥ã¡ã³ããåç §ããŠãã ããã
翻蚳è ããã®PS
ããã°ãã芧ãã ããã
- â Kubernetes 1.12ïŒäž»èŠãªã€ãããŒã·ã§ã³ã®æŠèŠ â;
- ã ã³ã³ããã¹ãã¬ãŒãžã€ã³ã¿ãŒãã§ã€ã¹ãç解ããŠããŸãïŒKubernetesã ãã§ãªãïŒ ã
- ã ã«ãŒã¯ã¯ãã»ã«ããµãŒãã¹ãã®Kubernetesã®ããŒã¿ãŠã§ã¢ããŠã¹ã§ã ã
- ã å°èŠæš¡ãããžã§ã¯ãã§ã®Kubernetesã§ã®çµéš ã ïŒã¬ãã¥ãŒããã³ãããªã¬ããŒãïŒ ;
- ã ã¢ãã¿ãªã³ã°ãšKubernetes ã ïŒã¬ãã¥ãŒããã³ãããªã¬ããŒãïŒ ã