kubernetes_volume
Last updated
Last updated
μ€ν λ¦¬μ§ λ³Όλ₯¨μ νλμ κ°μ μ΅μμ 리μμ€λ μλμ§λ§ νλμ μΌλΆλΆμΌλ‘ μ μλλ©° νλμ λμΌν λΌμ΄νμ¬μ΄ν΄μ κ°μ§λλ€. νλκ° μμλλ©΄ λ³Όλ₯¨μ΄ μμ±λκ³ , νλκ° μμ λλ©΄ λ³Όλ₯¨μ΄ μμ λλ€λ κ²μ μλ―Έν©λλ€.
λ³Όλ₯¨
μΏ λ²λ€ν°μ€ λ³Όλ₯¨μ νλμ κ΅¬μ± μμλ‘ μ»¨ν μ΄λμ λμΌνκ² νλ μ€νμμ μ μλ©λλ€. λ³Όλ₯¨μ λ 립μ μΈ μΏ λ²λ€ν°μ€ μ€λΈμ νΈκ° μλλ―λ‘ μ체μ μΌλ‘ μμ±, μμ λ μ μμ΅λλ€.
λ°μ΄ν°λ₯Ό λ΄λ λλ ν°λ¦¬λ‘ Pod λ΄ μ»¨ν μ΄λλ€μ΄ μ κ·Όκ°λ₯ν©λλ€.
Podμ μμλλ λμ μ μ§λ©λλ€. Pod λ΄μμ ꡬλλλ 컨ν μ΄λλ€λ³΄λ€ μ€λ μ μ§λλ©°, κ·Έ λ°μ΄ν°λ 컨ν μ΄λκ° μ¬μμλλλΌλ κ³μ 보쑴λ©λλ€.
iSCSIλ NFSμ κ°μ OnpremissκΈ°λ°μ μΈμ₯ μ€ν λ¦¬μ§ μ΄μΈμ ν΄λΌμ°λ μΈμ₯ μ€ν 리μ§μΈ AWS EBS, Google PD κ·Έλ¦¬κ³ github, λ±μ μ€νμμ€ κΈ°λ° μΈμ₯μ€ν 리 μλΉμ€λ₯Ό μ§μν©λλ€.
μ¬μ© κ°λ₯ν λ³Όλ₯¨ μ ν μκ°
emptyDir : μΌμμ μΈ λ°μ΄ν°λ₯Ό μ μ₯νλ λ° μ¬μ©λλ κ°λ¨ν λΉ λλ ν°λ¦¬
hostPath : μ컀 λ Έλμ νμΌμμ€ν μ νλμ λλ ν°λ¦¬λ‘ λ§μ΄νΈ νλ λ° μ¬μ©ν¨
gitRepo : κΉ λ¦¬ν¬μ§ν°λ¦¬μ μ½ν μΈ λ₯Ό 체ν¬μμν΄ μ΄κΈ°νν λ³Όλ₯¨
μμ± μμ μ§μ λ git λ νμ§ν 리μ νΉμ 리λΉμ μ λ΄μ©μ cloneμ μ΄μ©ν΄μ λ΄λ €λ°μ νμ λμ€ν¬ λ³Όλ₯¨μ μμ±νλ λ°©μ
물리μ μΌλ‘ emptyDirμ΄ μμ±λκ³ , git λ νμ§ν 리 λ΄μ©μ cloneμΌλ‘ λ€μ΄
nfs :NFS 곡μ λ₯Ό νλμ λ§μ΄νΈν¨
gcePersistentDisk(Google Compute Engine Persistent Disk), awsElasticBlock Store(Amazon Web Services Elastic Block Store Volume), azureDisk(Microsoft Azure Disk Volume): ν΄λΌμ°λ μ 곡μμ μ μ© μ€ν 리μ§λ₯Ό λ§μ΄νΈνλ λ° μ¬μ©ν©λλ€.
cinder, cephfs, iscsi, flocker, glusterfs, quobyte, rdb, flexVolume, vsphere Volume, photonPersistentDisk, ScaleIO : λ€λ₯Έ μ νμ λ€νΈμν¬ μ€ν 리μ§λ₯Ό λ§μ΄νΈ νλ λ° μ¬μ©ν©λλ€.
configMap, secret, downwardAPI : μΏ λ²λ€ν°μ€ 리μμ€λ ν΄λ¬μ€ν° μ 보λ₯Ό νλμ λ ΈμΆνλ λ° μ¬μ©λλ νΉλ³ν μ νμ λ³Όλ₯¨
persistentVolumeClaim : μ¬μ μ νΉμ λμ μΌλ‘ νλ‘λΉμ λ λ νΌμμ€ν΄νΈ μ€ν 리μ§λ₯Ό μ¬μ©νλ λ°©λ²
ν΄λ¬μ€ν° λ΄ μ€ν λ¦¬μ§ μΌλΆ μ‘°κ°μ λνλ΄λ API κ°μ²΄λ‘ κ°λ³ Podμ μλͺ μ£ΌκΈ°λ₯Ό λμ΄ λ³΄μ‘΄λλ λ²μ©, νλ¬κ·Έκ°λ₯ μμμΌλ‘μ κ°μ©ν©λλ€.
λ³Όλ₯¨ μ체λ₯Ό μλ―Ένλ PVλ€μ μ€ν 리μ§λ₯Ό μ¬μ©νκ³ μ ν λ κ·Έ μ 곡방μμ μΈλΆμ¬νλ€μ μΆμννλ APIλ₯Ό μ 곡ν©λλ€.
μ€ν 리μ§κ° μ¬μ μ μμ±λλ μλ리μ€(μ μ νλ‘λΉμ λ)μμλ PVλ€μ΄ μ§μ μ¬μ©λ©λλ€. λ°λ©΄ μ¨λλ©νΈ μ€ν 리μ§λ₯Ό νμλ‘ νλ μλ리μ€(λμ νλ‘λΉμ λ)μμλ PV λμ PVCκ° μ¬μ©λ©λλ€.
PVλ νλνκ³ λ λ³κ°λ‘ κ΄λ¦¬λκ³ λ³λμ μλͺ μ£ΌκΈ°λ₯Ό κ°μ§κ³ μμΌλ©°, PVCλ μ¬μ©μκ° PVμ νλ μμ²
λ³Όλ₯¨μ μ¬μ©ν 컨ν μ΄λ κ° λ°μ΄ν° 곡μ
emptyDir λ³Όλ₯¨ μ¬μ©
Podκ° μμ±λ λ μμ±λκ³ , Podκ° μμ λ λ κ°μ΄ μμ λλ μμ λ³Όλ₯¨μΌλ‘ μμ± λΉμμλ λμ€ν¬μ μ무 λ΄μ©μ΄ μκΈ° λλ¬Έμ emptyDir, λ¨ Pod λ΄μ 컨ν μ΄λ ν¬λμ¬ λμ΄ μμ λκ±°λ μ¬μμλλλΌλ emptyDirμ μλͺ μ£ΌκΈ°λ 컨ν μ΄λ λ¨μκ° μλλΌ Pod λ¨μμ΄κΈ° λλ¬Έμ emptyDirμ μμ λμ§ μκ³ κ³μν΄μ μ¬μ©μ΄ κ°λ₯ν©λλ€.
λ³Όλ₯¨μ΄ λΉ λλ ν°λ¦¬λ‘ μμλ©λλ€. νλμ μ€νμ€μΈ μ ν리μΌμ΄μ μ μ΄λ€ νμΌμ΄λ λ³Όλ₯¨μ μΈ μ μκ³ λ³Όλ₯¨μ λΌμ΄νμ¬μ΄ν΄μ΄ νλμ λ¬Άμ¬ μμΌλ―λ‘ νλκ° μμ λλ©΄ λ³Όλ₯¨μ μ½ν μΈ λ μ¬λΌμ§λλ€.
emptyDir λ³Όλ₯¨μ λμΌ νλμμ μ€ν μ€μΈ 컨ν μ΄λ κ° νμΌμ 곡μ ν λ μ μ©ν©λλ€.
μ¬μ΄λμΉ΄ 컨ν μ΄λ μκ°
https://matthewpalmer.net/kubernetes-app-developer/articles/multi-container-pod-design-patterns.html#sidecar-pattern-example
μ¬μ΄λμΉ΄ 컨ν μ΄λλ νλμ μ£Ό 컨ν μ΄λμ λμμ 보μν©λλ€.
μλ‘μ΄ λ‘μ§μ λ©μΈ μ ν리μΌμ΄μ μ½λμ λ°μ΄ λ£μ΄ 볡μ‘μ±μ λνκ³ μ¬μ¬μ©μ±μ λ¨μ΄λ¨λ¦¬λ λμ μ νλμ μ¬μ΄λμΉ΄λ₯Ό μΆκ°νλ©΄ κΈ°μ‘΄ 컨ν μ΄λ μ΄λ―Έμ§λ₯Ό μ¬μ©ν μ μμ΅λλ€.
μ컀 λ Έλ νμΌ μμ€ν μ νμΌ μ κ·Ό
hostPath λ³Όλ₯¨
hostPath λ³Όλ₯¨μ λ Έλ νμΌμμ€ν μ νΉμ νμΌμ΄λ λλ ν°λ¦¬λ₯Ό κ°λ¦¬ν΅λλ€. λμΌ λ Έλμ μ€ν μ€μΈ νλκ° hostPath λ³Όλ₯¨μ λμΌ κ²½λ‘λ₯Ό μ¬μ© μ€μ΄λ©° λμΌν νμΌμ΄ νμλ©λλ€.
gitRepoλ emptyDir λ³Όλ₯¨μ μ½ν μΈ λ νλκ° μ’ λ£λλ©΄ μμ λλ λ°λ©΄, hostPath λ³Όλ₯¨μ μ½ν μΈ λ μμ λμ§ μμ΅λλ€. νλκ° μμ λλ©΄ λ€μ νλκ° νΈμ€νΈμ λμΌ κ²½λ‘λ₯Ό κ°λ¦¬ν€λ hostPath λ³Όλ₯¨μ μ¬μ©νκ³ , μ΄μ νλμ λμΌν λ Έλμ μ€μΌμ€λ§λλ€λ 쑰건μμ μλ‘μ΄ νλλ μ΄μ νλκ° λ¨κΈ΄ λͺ¨λ νλͺ©μ λ³Ό μ μμ΅λλ€.
λ Έλμ λ‘컬 λμ€ν¬μ κ²½λ‘λ₯Ό Podμμ λ§μ΄νΈ ν΄μ μ¬μ©ν©λλ€. κ°μ hostPathμ μλ λ³Όλ₯¨μ μ¬λ¬ Pod μ¬μ΄μμ 곡μ λμ΄ μ¬μ©
κΈ°λ° μ€ν λ¦¬μ§ κΈ°μ κ³Ό νλ λΆλ¦¬ - νΌμμ€ν΄νΈλ³Όλ₯¨κ³Ό νΌμμ€ν΄νΈλ³Όλ₯¨ν΄λ μ
μΈνλΌμ€νΈλμ²μ μΈλΆ μ¬νμ μ²λ¦¬νμ§ μκ³ μ ν리μΌμ΄μ μ΄ μΏ λ²λ€ν°μ€ ν΄λ¬μ€ν°μ μ€ν 리μ§λ₯Ό μμ²ν μ μλλ‘ νκΈ° μν΄ μλ‘μ΄ λ¦¬μμ€ λ κ°κ° λμ λλλ€. νΌμμ€ν΄νΈλ³Όλ₯¨(PV, PersistentVolume)κ³Ό νΌμμ€ν΄νΈλ³Όλ₯¨ν΄λ μ(PVC, PersistentVolumeClaim)
νΌμμ€ν΄νΈλ³Όλ₯¨ μμ±
PersistentVolumeμ ν΄λ¬μ€ν° κ΄λ¦¬μκ° νλ‘λΉμ λ νκ³ PersistentVolumeClaimμ ν΅ν΄ ν¬λμμ μ¬μ©ν©λλ€.
νΌμμ€ν΄νΈλ³Όλ₯¨μ μμ±ν λ κ΄λ¦¬μλ μΏ λ²λ€ν°μ€μκ² μ©λμ΄ μΌλ§κ° λλμ§ λ¨μΌ λ Έλλ λμμ λ€μ λ Έλμ μ½κΈ°λ μ°κΈ°κ° κ°λ₯νμ§ μ¬λΆλ₯Ό μλ €μΌ ν©λλ€. λν μΏ λ²λ€ν°μ€μκ² νΌμμ€ν΄νΈλ³Όλ₯¨μ΄ ν΄μ λλ©΄ μ΄λ€ λμμ ν΄μΌ ν μ§ μλ €μΌ ν©λλ€.(λ°μΈλ©λ νΌμμ€ν΄νΈλ³Όλ₯¨ν΄λ μμ΄ μμ λλ κ²½μ°)
νΌμμ€ν΄νΈλ³Όλ₯¨μ μ§μνλ μ€μ μ€ν 리μ§μ μ ν, μμΉ, κ·Έ λ°μ μμ± μ 보λ₯Ό μ§μ ν΄μΌ ν©λλ€.
PersistentVolumeμ ν΄λ¬μ€ν° λ Έλμ λ§μ°¬κ°μ§λ‘ ν¬λ λ° PersistentVolumeClaimκ³Ό λ¬λ¦¬ λ€μμ€νμ΄μ€μ μνμ§ μμ΅λλ€
νΌμμ€ν΄νΈλ³Όλ₯¨ν΄λ μ μμ±μ ν΅ν νΌμμ€ν΄νΈλ³Όλ₯¨ μμ²
νΌμμ€ν΄νΈλ³Όλ₯¨ν΄λ μμ΄ μμ±λμλ§μ μΏ λ²λ€ν°μ€λ μ μ ν νΌμμ€ν΄νΈλ³Όλ₯¨μ μ°Ύκ³ ν΄λ μμ λ°μΈλ©ν©λλ€. νΌμμ€ν΄νΈλ³Όλ₯¨μ μ©λμ νΌμμ€ν΄νΈλ³Όλ₯¨ν΄λ μμ μμ²μ μμ©ν λ§νΌ μΆ©λΆν μ»€μΌ ν©λλ€.
RWO(ReadWriteOnce) : λ¨μΌ λ Έλλ§μ΄ μ½κΈ°/μ°κΈ°μ©μΌλ‘ λ³Όλ₯¨μ λ§μ΄νΈ ν μ μμ΅λλ€.
ROX(ReadOnlyMany) : λ€μ λ Έλκ° μ½κΈ°μ©μΌλ‘ λ³Όλ₯¨μ λ§μ΄νΈ ν μ μμ΅λλ€.
RWX(ReadWriteMany) : λ€μ λ Έλκ° μ½κΈ°/μ°κΈ°μ©μΌλ‘ λ³Όλ₯¨μ λ§μ΄νΈ ν μ μμ΅λλ€.
https://www.oreilly.com/library/view/kubernetes-in-action/9781617293726/
https://www.oreilly.com/library/view/cloud-native-devops/9781492040750/