์ผ๋ถ ์์ฉ ํ๋ก๊ทธ๋จ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด์ผ ํ์ง๋ง ๋ค์ ์์ํ ํ์๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋์ง ์๋๋ค๋ ์ ์ ๋งค์ฐ ๋ง์กฑํฉ๋๋ค.
์๋ฅผ ๋ค์ด ์บ์ฑ ์๋น์ค๋ RAM์ ์ํด ์ ํ๋์ง๋ง, ๊ฑฐ์ ์ฌ์ฉ๋์ง ์๋ ๋ฐ์ดํฐ๋ฅผ RAM๋ณด๋ค ๋๋ฆฐ ์คํ ๋ฆฌ์ง๋ก ์ด๋ํ ์๋ ์์ด ์ ์ฒด ์ฑ๋ฅ์ ๊ฑฐ์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค. ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ํ์ผ์ ์ค์ ์ด๋ ๋น๋ฐ ํค์ ๊ฐ์ ์ผ๋ถ ์ฝ๊ธฐ ์ ์ฉ ์ ๋ ฅ์ด ์์ ์ ์๋ค๋ ์ ์ ์ธ์ํด์ผ ํฉ๋๋ค.
Kubernetes์๋ ์ด๋ฏธ ์ฌ๋ฌ ์ ํ์ด ์์ต๋๋ค.
์์
์ด๋ ์๋นํ ํธ์คํธ ๋ฆฌ์์ค๋ฅผ ์๋นํ๋ ๋ณผ๋ฅจ์ด๋ ์ผ๋ถ ํธ์คํธ์์๋ง ์ฌ์ฉํ ์ ์๋ ์คํ ๋ฆฌ์ง์ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก Kubernetes 1.19์ ๋นDir ๋ณผ๋ฅจ๊ณผ ๊ฐ๋ ์ ์ผ๋ก ์ ์ฌํ ๋ ๊ฐ์ง ์๋ก์ด ์ํ ํ ์คํธ ๋ณผ๋ฅจ ๊ธฐ๋ฅ์ด ๋์ ๋ ์ด์ ์ ๋๋ค.
-
๋ฒ์ฉ ์์ ๋ณผ๋ฅจ;
-
CSI ์คํ ๋ฆฌ์ง ์ฉ๋ ์ถ์ .
์๋ก์ด ์ ๊ทผ ๋ฐฉ์์ ์ฅ์ :
-
์ ์ฅ์๋ ๋ก์ปฌ์ด๊ฑฐ๋ ๋คํธ์ํฌ๋ฅผ ํตํด ์ฐ๊ฒฐ๋ ์ ์์ต๋๋ค.
-
๋ณผ๋ฅจ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด๊ณผํ ์ ์๋ ์ง์ ๋ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.
-
์๊ตฌ ๋ณผ๋ฅจ ํ๋ก๋น์ ๋์ ์ง์ํ๊ณ (์ฉ๋ ์ถ์ ์ ์ง์ํ๊ธฐ ์ํด) ํธ์ถ์ ๊ตฌํํ๋ ๋ชจ๋ CSI ๋๋ผ์ด๋ฒ์ ํจ๊ป ์๋ํฉ๋๋ค.
GetCapacity
; -
๋ณผ๋ฅจ์๋ ๋๋ผ์ด๋ฒ ๋ฐ ์ค์ ์ ๋ฐ๋ผ ์ผ๋ถ ์ด๊ธฐ ๋ฐ์ดํฐ๊ฐ ์์ ์ ์์ต๋๋ค.
-
๋ณผ๋ฅจ์ ๋ํ ๋ชจ๋ ํ์ค ์์ (์ค๋ ์ท ์์ฑ, ํฌ๊ธฐ ์กฐ์ ๋ฑ)์ด ์ง์๋ฉ๋๋ค.
-
๋ณผ๋ฅจ์ ๋ชจ๋ ๋๋ ๋ณผ๋ฅจ ์ฌ์์ ํ์ฉํ๋ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ปจํธ๋กค๋ฌ์ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.
-
Kubernetes ์ค์ผ์ค๋ฌ๋ ์์ฒด์ ์ผ๋ก ์ ํฉํ ๋ ธ๋๋ฅผ ์ ํํ๋ฏ๋ก ๋ ์ด์ ์ค์ผ์ค๋ฌ ํ์ฅ์ ํ๋ก๋น์ ๋ ๋ฐ ๊ตฌ์ฑํ๊ฑฐ๋ ์นํํฌ๋ฅผ ์์ ํ ํ์๊ฐ ์์ต๋๋ค.
์์ฉ ํ๋ก๊ทธ๋จ ์ต์
๋ฐ๋ผ์ ๋ฒ์ฉ ์์ ๋ณผ๋ฅจ์ ๋ค์ ์ฌ์ฉ ์ฌ๋ก์ ์ ํฉํฉ๋๋ค.
memcached์ RAM์ ๋์ฒดํ๋ ์๊ตฌ ๋ฉ๋ชจ๋ฆฌ
memcached์ ์ต์ ๋ฆด๋ฆฌ์ค
์์ ๊ณต๊ฐ์ผ๋ก์์ LVM ๋ก์ปฌ ์ ์ฅ์
RAM๋ณด๋ค ํฐ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์
์๋ Kubernetes์ ์ผ๋ฐ ๋นDir ๋ณผ๋ฅจ์ด ์ ๊ณตํ ์ ์๋ ํฌ๊ธฐ ๋๋ ์ฑ๋ฅ ์งํ๋ฅผ ๊ฐ์ถ ๋ก์ปฌ ์คํ ๋ฆฌ์ง๊ฐ ํ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ด ๋ชฉ์ ์ ์ํด ๋ค์๊ณผ ๊ฐ์ด ์์ฑ๋์์ต๋๋ค.
๋ฐ์ดํฐ ๋ณผ๋ฅจ์ ๋ํ ์ฝ๊ธฐ ์ ์ฉ ์ก์ธ์ค
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๋ณผ๋ฅจ์ ํ ๋นํ๋ฉด ์ ์ฒด ๋ณผ๋ฅจ์ด ์์ฑ๋ ์ ์์ต๋๋ค.
-
๋ณต๊ตฌ
๋ณผ๋ฅจ ์ค๋ ์ท ; -
์ฐฝ์กฐ
๋ณผ๋ฅจ ์ฌ๋ณธ ; -
์์
๋ฐ์ดํฐ ์๋ฆฌ ํ์์ .
์ด๋ฌํ ๋ณผ๋ฅจ์ ์ฝ๊ธฐ ์ ์ฉ ๋ชจ๋๋ก ๋ง์ดํธํ ์ ์์ต๋๋ค.
์ด๊ฑฐ ์ด๋ป๊ฒ ์๋ ์์ผ์
๋ฒ์ฉ ์์ ๋ณผ๋ฅจ
๋ฒ์ฉ ์์ ๋ณผ๋ฅจ์ ์ฃผ์ ํน์ง์ ์๋ก์ด ๋ณผ๋ฅจ ์์ค์
๋๋ค. EphemeralVolumeSource
, ๋ณผ๋ฅจ ์์ฒญ(์ญ์ฌ์ ์ผ๋ก๋ ์๊ตฌ ๋ณผ๋ฅจ ์์ฒญ, PVC๋ผ๊ณ ํจ)์ ์์ฑํ๊ธฐ ์ํ ๋ชจ๋ ํ๋๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์๋ก์ด ์ปจํธ๋กค๋ฌ kube-controller-manager
๊ทธ๋ฌํ ๋ณผ๋ฅจ ์์ค๋ฅผ ์์ฑํ๋ ํฌ๋๋ฅผ ์ดํด๋ณธ ๋ค์ ํด๋น ํฌ๋์ ๋ํ PVC๋ฅผ ์์ฑํฉ๋๋ค. CSI ๋๋ผ์ด๋ฒ์ ๊ฒฝ์ฐ ์ด ์์ฒญ์ ๋ค๋ฅธ ์์ฒญ๊ณผ ๋์ผํด ๋ณด์ด๋ฏ๋ก ์ฌ๊ธฐ์๋ ํน๋ณํ ์ง์์ด ํ์ํ์ง ์์ต๋๋ค.
์ด๋ฌํ PVC๊ฐ ์กด์ฌํ๋ ํ ๋ณผ๋ฅจ์ ๋ค๋ฅธ ์์ฒญ์ฒ๋ผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํนํ ๋ณผ๋ฅจ์ ๋ณต์ฌํ๊ฑฐ๋ ๋ณผ๋ฅจ์์ ์ค๋ ์ท์ ์์ฑํ ๋ ๋ฐ์ดํฐ ์์ค๋ก ์ฐธ์กฐ๋ ์ ์์ต๋๋ค. PVC ๊ฐ์ฒด์๋ ๋ณผ๋ฅจ์ ํ์ฌ ์ํ๋ ํฌํจ๋์ด ์์ต๋๋ค.
์๋์ผ๋ก ์์ฑ๋ PVC์ ์ด๋ฆ์ ์ฌ์ ์ ์๋์ด ์์ต๋๋ค. ์ด๋ ํฌ๋ ์ด๋ฆ๊ณผ ๋ณผ๋ฅจ ์ด๋ฆ์ ์กฐํฉ์ด๋ฉฐ ํ์ดํ์ผ๋ก ๊ตฌ๋ถ๋ฉ๋๋ค. ์ฌ์ ์ ์๋ ์ด๋ฆ์ ์ฌ์ฉํ๋ฉด ํฌ๋ ์ด๋ฆ๊ณผ ๋ณผ๋ฅจ ์ด๋ฆ์ ์๊ณ ์์ผ๋ฉด PVC๋ฅผ ์ฐพ์ ํ์๊ฐ ์์ผ๋ฏ๋ก PVC์ ๋ ์ฝ๊ฒ ์ํธ ์์ฉํ ์ ์์ต๋๋ค. ๋จ์ ์ ์ด๋ฆ์ด ์ด๋ฏธ ์ฌ์ฉ ์ค์ผ ์ ์์ผ๋ฉฐ, ์ด๋ Kubernetes์์ ๊ฐ์ง๋์ด ๊ฒฐ๊ณผ์ ์ผ๋ก Pod ์์์ด ์ฐจ๋จ๋๋ค๋ ๊ฒ์ ๋๋ค.
ํฌ๋์ ํจ๊ป ๋ณผ๋ฅจ์ด ์ญ์ ๋์๋์ง ํ์ธํ๊ธฐ ์ํด ์ปจํธ๋กค๋ฌ๋ ์์ ์ ์๋์ ๋ณผ๋ฅจ์ ์์ฒญํฉ๋๋ค. Pod๊ฐ ์ญ์ ๋๋ฉด ํ์ค ๊ฐ๋น์ง ์์ง ๋ฉ์ปค๋์ฆ์ด ์๋ํ์ฌ ์์ฒญ๊ณผ ๋ณผ๋ฅจ์ ๋ชจ๋ ์ญ์ ํฉ๋๋ค.
์์ฒญ์ ์ ์ฅ์ ํด๋์ค์ ์ผ๋ฐ์ ์ธ ๋ฉ์ปค๋์ฆ์ ํตํด ์ ์ฅ์ ๋๋ผ์ด๋ฒ์ ์ผ์น๋ฉ๋๋ค. ์ฆ๊ฐ ๋ฐ์ธ๋ฉ๊ณผ ์ง์ฐ ๋ฐ์ธ๋ฉ์ด ์๋ ํด๋์ค(์ผ๋ช
WaitForFirstConsumer
)์ด ์ง์๋ฉ๋๋ค. ์์ ๋ณผ๋ฅจ์ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์
๋๋ค. WaitForFirstConsumer
๊ทธ๋ฌ๋ฉด ์ค์ผ์ค๋ฌ๋ ๋
ธ๋๋ฅผ ์ ํํ ๋ ๋
ธ๋ ์ฌ์ฉ๋๊ณผ ์คํ ๋ฆฌ์ง ๊ฐ์ฉ์ฑ์ ๋ชจ๋ ๊ณ ๋ คํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ ์๋ก์ด ๊ธฐ๋ฅ์ด ๋ํ๋ฉ๋๋ค.
์คํ ๋ฆฌ์ง ์ฉ๋ ์ถ์
์ผ๋ฐ์ ์ผ๋ก ์ค์ผ์ค๋ฌ๋ CSI ๋๋ผ์ด๋ฒ๊ฐ ๋ณผ๋ฅจ์ ์์ฑํ ์์น๋ฅผ ์์ง ๋ชปํฉ๋๋ค. ๋ํ ์ค์ผ์ค๋ฌ๊ฐ ์ด์ ์์๊ฒ ์ง์ ์ฐ๋ฝํ์ฌ ์ด ์ ๋ณด๋ฅผ ์์ฒญํ ์ ์๋ ๋ฐฉ๋ฒ๋ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ค์ผ์ค๋ฌ๋ ๋ณผ๋ฅจ์ ์ก์ธ์คํ ์ ์๋ ๋ณผ๋ฅจ์ ์ฐพ์ ๋๊น์ง ๋ ธ๋๋ฅผ ํด๋งํ๊ฑฐ๋(์ง์ฐ ๋ฐ์ธ๋ฉ) ์์น ์ ํ์ ์ ์ ์ผ๋ก ๋๋ผ์ด๋ฒ์ ๋งก๊น๋๋ค(์ฆ์ ๋ฐ์ธ๋ฉ).
์๋ก์ด CSIStorageCapacity
์ํ ๋จ๊ณ์ ์๋ ๋ ํ์ํ ๋ฐ์ดํฐ๋ฅผ etcd์ ์ ์ฅํ์ฌ ์ค์ผ์ค๋ฌ์์ ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค. ๋ฒ์ฉ ์์ ๋ณผ๋ฅจ์ ๋ํ ์ง์๊ณผ ๋ฌ๋ฆฌ ๋๋ผ์ด๋ฒ๋ฅผ ๋ฐฐํฌํ ๋ ์คํ ๋ฆฌ์ง ์ฉ๋ ์ถ์ ์ ํ์ฑํํด์ผ ํฉ๋๋ค. external-provisioner
์ผ๋ฐ์ ํตํด ์ด์ ์๋ก๋ถํฐ ์์ ๋ ์ฉ๋ ์ ๋ณด๋ฅผ ๊ฒ์ํด์ผ ํฉ๋๋ค. GetCapacity
.
์ค์ผ์ค๋ฌ๊ฐ ์ง์ฐ ๋ฐ์ธ๋ฉ์ ์ฌ์ฉํ๋ ๋ฐ์ธ๋ฉ๋์ง ์์ ๋ณผ๋ฅจ์ด ์๋ Pod์ ๋ํ ๋
ธ๋๋ฅผ ์ ํํด์ผ ํ๊ณ ๋๋ผ์ด๋ฒ๊ฐ ํ๋๊ทธ๋ฅผ ์ค์ ํ์ฌ ๋ฐฐํฌ ์ค์ ์ด ๊ธฐ๋ฅ์ ํ์ฑํํ ๊ฒฝ์ฐ CSIDriver.storageCapacity
, ์ ์ฅ ์ฉ๋์ด ๋ถ์กฑํ ๋
ธ๋๋ ์๋์ผ๋ก ํ๊ธฐ๋ฉ๋๋ค. ์ด๋ ๋ฒ์ฉ ์์ ๋ณผ๋ฅจ๊ณผ ์๊ตฌ ๋ณผ๋ฅจ ๋ชจ๋์ ์๋ํ์ง๋ง Kubernetes์์ ํด๋น ๋งค๊ฐ๋ณ์๋ฅผ ์ฝ์ ์ ์๊ธฐ ๋๋ฌธ์ CSI ์์ ๋ณผ๋ฅจ์๋ ์๋ํ์ง ์์ต๋๋ค.
ํ์์ ๊ฐ์ด ํฌ๋๊ฐ ์์ฝ๋๊ธฐ ์ ์ ์ฆ์ ์ฐ๊ฒฐ๋ ๋ณผ๋ฅจ์ด ์์ฑ๋๊ณ ํด๋น ๋ฐฐ์น๋ ์คํ ๋ฆฌ์ง ๋๋ผ์ด๋ฒ์ ์ํด ์ ํ๋๋ฏ๋ก ๊ตฌ์ฑํ ๋ external-provisioner
๊ธฐ๋ณธ์ ์ผ๋ก ์ฆ์ ๋ฐ์ธ๋ฉ์ด ํฌํจ๋ ์คํ ๋ฆฌ์ง ํด๋์ค๋ ๊ฑด๋๋๋๋ค. ์ด ๋ฐ์ดํฐ๋ ์ด์จ๋ ์ฌ์ฉ๋์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค.
Kubernetes ์ค์ผ์ค๋ฌ๋ ์ ์ฌ์ ์ผ๋ก ์ค๋๋ ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํด์ผ ํ๋ฏ๋ก ๋ณผ๋ฅจ์ด ์์ฑ๋ ๋๋ง๋ค ์ฉ๋์ ์ฌ์ฉํ ์ ์๋ค๋ ๋ณด์ฅ์ ์์ง๋ง ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์ฌ์๋ ์์ด ์์ฑ๋ ๊ฐ๋ฅ์ฑ์ ๋์์ง๋๋ค.
NB ๋ ์์ธํ ์ ๋ณด๋ฅผ ์ป์ ์ ์์ ๋ฟ๋ง ์๋๋ผ ์์ ํ๊ฒ "๊ณ ์์ด ์คํ ๋์์ ์ฐ์ต"ํ ์ ์์ผ๋ฉฐ, ์์ ํ ์ดํดํ ์ ์๋ ์ํฉ์ ๊ฒฝ์ฐ ์ง์ค ๊ณผ์ ์์ ์๊ฒฉ์ ๊ฐ์ถ ๊ธฐ์ ์ง์ ์ง์์ ๋ฐ์ ์ ์์ต๋๋ค.
ะะตะทะพะฟะฐัะฝะพััั
CSIS์คํ ๋ฆฌ์ง ์ฉ๋
CSIStorageCapacity ๊ฐ์ฒด๋ ๋ค์์คํ์ด์ค์ ์์ฃผํฉ๋๋ค. ๊ฐ CSI ๋๋ผ์ด๋ฒ๋ฅผ ์์ฒด ๋ค์์คํ์ด์ค์ ๋กค์์ํ ๋ ๋ฐ์ดํฐ์ ์ถ์ฒ๊ฐ ๋ถ๋ช ํ๋ฏ๋ก ํด๋น ๊ณต๊ฐ์ CSIStorageCapacity์ ๋ํ RBAC ๊ถํ์ ์ ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. Kubernetes๋ ์ด์จ๋ ์ด๋ฅผ ํ์ธํ์ง ์์ผ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ๋๋ผ์ด๋ฒ๋ ๋์ผํ ๋ค์์คํ์ด์ค์ ๋ฐฐ์น๋๋ฏ๋ก ๊ถ๊ทน์ ์ผ๋ก ๋๋ผ์ด๋ฒ๋ ์๋ํ๊ณ ์๋ชป๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ์ง ์์ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค(์ฌ๊ธฐ์ ๋ด ์นด๋๊ฐ ์คํจํ์ต๋๋ค. ๋๋ต. ์์ผ๋ ๋๋ด์ ๋ฐํ์ผ๋ก ํ ๋ฒ์ญ๊ธฐ)
๋ฒ์ฉ ์์ ๋ณผ๋ฅจ
์ฌ์ฉ์๊ฐ ํฌ๋๋ฅผ ์ง์ ๋๋ ๊ฐ์ ์ ์ผ๋ก ์์ฑํ ์ ์๋ ๊ถํ์ด ์๋ ๊ฒฝ์ฐ ํด๋น ๋ณผ๋ฅจ์ ๋ํ ์์ฒญ์ ์์ฑํ ์ ์๋ ๊ถํ์ด ์๋๋ผ๋ ๋ฒ์ฉ ์์ ๋ณผ๋ฅจ์ ์์ฑํ ์๋ ์์ต๋๋ค. ์ด๋ RBAC ๊ถํ ํ์ธ์ด ์ฌ์ฉ์๊ฐ ์๋ PVC๋ฅผ ์์ฑํ๋ ์ปจํธ๋กค๋ฌ์ ์ ์ฉ๋๊ธฐ ๋๋ฌธ์
๋๋ค. ์ด๊ฒ์ด ์ถ๊ฐํ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์
๋๋ค.
์
๋ณ๊ฐ์
์ ํฉํ ๋จธ์ (Linux, ์ผ๋ฐ ์ฌ์ฉ์๋
git clone --branch=kubernetes-1-19-blog-post https://github.com/intel/pmem-csi.git
cd pmem-csi
export TEST_KUBERNETES_VERSION=1.19 TEST_FEATURE_GATES=CSIStorageCapacity=true,GenericEphemeralVolume=true TEST_PMEM_REGISTRY=intel
make start && echo && test/setup-deployment.sh
๋ชจ๋ ๊ฒ์ด ์๋ํ๋ฉด ์ถ๋ ฅ์ ์ฌ์ฉ ์ง์นจ์ด ํฌํจ๋ฉ๋๋ค.
The test cluster is ready. Log in with [...]/pmem-csi/_work/pmem-govm/ssh.0, run
kubectl once logged in. Alternatively, use kubectl directly with the
following env variable:
KUBECONFIG=[...]/pmem-csi/_work/pmem-govm/kube.config
secret/pmem-csi-registry-secrets created
secret/pmem-csi-node-secrets created
serviceaccount/pmem-csi-controller created
...
To try out the pmem-csi driver ephemeral volumes:
cat deploy/kubernetes-1.19/pmem-app-ephemeral.yaml |
[...]/pmem-csi/_work/pmem-govm/ssh.0 kubectl create -f -
CSIStorageCapacity ๊ฐ์ฒด๋ ์ฌ๋์ด ์ฝ์ ์ ์์ผ๋ฏ๋ก ์ผ๋ถ ์ฒ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค. Golang ํ ํ๋ฆฟ ํํฐ๋ ์คํ ๋ฆฌ์ง ํด๋์ค๋ฅผ ํ์ํ๋ฉฐ, ์ด ์์์๋ ์ด๋ฆ, ํ ํด๋ก์ง ๋ฐ ์ฉ๋์ ํ์ํฉ๋๋ค.
$ kubectl get
-o go-template='{{range .items}}{{if eq .storageClassName "pmem-csi-sc-late-binding"}}{{.metadata.name}} {{.nodeTopology.matchLabels}} {{.capacity}}
{{end}}{{end}}'
csistoragecapacities
csisc-2js6n map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker2] 30716Mi
csisc-sqdnt map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker1] 30716Mi
csisc-ws4bv map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker3] 30716Mi
๋จ์ผ ๊ฐ์ฒด์๋ ๋ค์๊ณผ ๊ฐ์ ๋ด์ฉ์ด ์์ต๋๋ค.
$ kubectl describe csistoragecapacities/csisc-6cw8j
Name: csisc-sqdnt
Namespace: default
Labels: <none>
Annotations: <none>
API Version: storage.k8s.io/v1alpha1
Capacity: 30716Mi
Kind: CSIStorageCapacity
Metadata:
Creation Timestamp: 2020-08-11T15:41:03Z
Generate Name: csisc-
Managed Fields:
...
Owner References:
API Version: apps/v1
Controller: true
Kind: StatefulSet
Name: pmem-csi-controller
UID: 590237f9-1eb4-4208-b37b-5f7eab4597d1
Resource Version: 2994
Self Link: /apis/storage.k8s.io/v1alpha1/namespaces/default/csistoragecapacities/csisc-sqdnt
UID: da36215b-3b9d-404a-a4c7-3f1c3502ab13
Node Topology:
Match Labels:
pmem-csi.intel.com/node: pmem-csi-pmem-govm-worker1
Storage Class Name: pmem-csi-sc-late-binding
Events: <none>
๋จ์ผ ๋ฒ์ฉ ์์ ๋ณผ๋ฅจ์ ์ฌ์ฉํ์ฌ ๋ฐ๋ชจ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. ํ์ผ ๋ด์ฉ pmem-app-ephemeral.yaml
:
# This example Pod definition demonstrates
# how to use generic ephemeral inline volumes
# with a PMEM-CSI storage class.
kind: Pod
apiVersion: v1
metadata:
name: my-csi-app-inline-volume
spec:
containers:
- name: my-frontend
image: intel/pmem-csi-driver-test:v0.7.14
command: [ "sleep", "100000" ]
volumeMounts:
- mountPath: "/data"
name: my-csi-volume
volumes:
- name: my-csi-volume
ephemeral:
volumeClaimTemplate:
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 4Gi
storageClassName: pmem-csi-sc-late-binding
์ ์ง์นจ์ ํ์๋ ๋๋ก ์์ฑ ํ ์ด์ ์ถ๊ฐ ํฌ๋์ PVC๊ฐ ์๊ฒผ์ต๋๋ค.
$ kubectl get pods/my-csi-app-inline-volume -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-csi-app-inline-volume 1/1 Running 0 6m58s 10.36.0.2 pmem-csi-pmem-govm-worker1 <none> <none>
$ kubectl get pvc/my-csi-app-inline-volume-my-csi-volume
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
my-csi-app-inline-volume-my-csi-volume Bound pvc-c11eb7ab-a4fa-46fe-b515-b366be908823 4Gi RWO pmem-csi-sc-late-binding 9m21s
PVC ์์ ์ - ์๋:
$ kubectl get -o yaml pvc/my-csi-app-inline-volume-my-csi-volume
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
pv.kubernetes.io/bind-completed: "yes"
pv.kubernetes.io/bound-by-controller: "yes"
volume.beta.kubernetes.io/storage-provisioner: pmem-csi.intel.com
volume.kubernetes.io/selected-node: pmem-csi-pmem-govm-worker1
creationTimestamp: "2020-08-11T15:44:57Z"
finalizers:
- kubernetes.io/pvc-protection
managedFields:
...
name: my-csi-app-inline-volume-my-csi-volume
namespace: default
ownerReferences:
- apiVersion: v1
blockOwnerDeletion: true
controller: true
kind: Pod
name: my-csi-app-inline-volume
uid: 75c925bf-ca8e-441a-ac67-f190b7a2265f
...
๋ค์์ ๋ํ ์ ๋ณด๊ฐ ์
๋ฐ์ดํธ๋ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. pmem-csi-pmem-govm-worker1
:
csisc-2js6n map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker2] 30716Mi
csisc-sqdnt map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker1] 26620Mi
csisc-ws4bv map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker3] 30716Mi
๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์
์ 26620Mi ์ด์์ด ํ์ํ ๊ฒฝ์ฐ ์ค์ผ์ค๋ฌ๋ ์ด๋ฅผ ๊ณ ๋ คํ์ง ์์ต๋๋ค. pmem-csi-pmem-govm-worker1
์ด์จ๋ .
๋ค์์ ๋ญ์ง?
๋ ๊ธฐ๋ฅ ๋ชจ๋ ์์ง ๊ฐ๋ฐ ์ค์ ๋๋ค. ์ํ ํ ์คํธ ์ค์ ์ฌ๋ฌ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์ด๋ ธ์ต๋๋ค. ๊ฐ์ ์ ์ ๋งํฌ๋ ๋ฒ ํ ๋จ๊ณ๋ก ์ด๋ํ๊ธฐ ์ํด ์ํํด์ผ ํ๋ ์์ ๊ณผ ์ด๋ฏธ ๊ณ ๋ ค ๋ฐ ๊ฑฐ๋ถ๋ ๋์์ ๋ฌธ์ํํฉ๋๋ค.
์ถ์ฒ : habr.com