๐จ Error :
๐จ
Pod๋ฅผ ์ฌ๋ฌ ๊ฐ ๋์ฐ๊ณ ํ ์คํธํ๋ ๋์ค์ ์ Pod๋ฅผ ์์ฑํ์ Pending ์ํ๊ฐ ์ง์๋๋ค๊ฐ ํ์ฐธ ์ง๋์ Running์ผ๋ก ๋ณ๊ฒฝ๋๋ ์ํฉ์ด ๋ฐ์ํ๋ค.
Pod์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ Running ์ํ๊ฐ ๋์ง ๋ชปํ๋ฉด ์๋ ๋ช ๋ น์ด๋ก Pod์ Event๋ฅผ ํ์ธํ ์ ์๋ค.
$ kubectl describe po <pod๋ช
>
# ์ถ๋ ฅ
...
Warning FailedScheduling 6m21s default-scheduler 0/2 nodes are available:
1 node(s) had untolerated taint {node-role.kubernetes.io/control-plane: },
1 node(s) had untolerated taint {node.kubernetes.io/disk-pressure: }.
preemption: 0/2 nodes are available: 2 Preemption is not helpful for scheduling.
- Pod๋ฅผ ๋ ธ๋์ ๋์ธ ๋ ํด๋น Pod๊ฐ ์ด๋ ๋ ธ๋์ ๋์์ง์ง๋ฅผ ๊ฒฐ์ ํ๋ ์ฌ๋ฌ ์์ธ ์ค ํ๋๊ฐ taint์ toleration์ด๋ค.
- ์์ฃผ ๊ฐ๋จํ๊ฒ ์ค๋ช
ํ๋ฉด taint๋ ์ผ๋ฃฉ์ด๋ผ๋ ์๋ฏธ๋ก node์ ์ผ๋ฃฉ์ ๋ฌปํ๋ ๊ฒ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
- ์ด ์ผ๋ฃฉ์ด๋ ์๋ฅผ ๋ค์ด ๋ชจ๊ธฐ ๊ธฐํผ์ ์ด๋ค.
- ๋ฐ๋๋ก toleraiton์ taint์ ์ ํญํ ์ ์์์ ์๋ฏธํ๋ค.
- ์๋ฅผ ๋ค์ด ๋ชจ๊ธฐ ๊ธฐํผ์ ์ ๋ด์ฑ์ด ์๋ ๋ชจ๊ธฐ์ด๋ค.
- ๋ชจ๊ธฐ ๊ธฐํผ์ ๊ฐ ๋ฐ๋ฆฐ ๋ ธ๋์๋ ์ผ๋ฐ ๋ชจ๊ธฐ๊ฐ ์ ๊ทผํ์ง ๋ชปํ๋ค.
- ์ด๋ฅผ Pod๋ก ๋ฐ๊ฟ ์๊ธฐํ๋ฉด, ๋ชจ๊ธฐ ๊ธฐํผ์ ์ ๋ด์ฑ์ ๊ฐ์ง๊ณ ์์ง ์์ Pod(๋ชจ๊ธฐ)๋ ํด๋น ๋ ธ๋์ ์ค์ผ์ค๋ง(์คํ)๋ ์ ์๋ค.
๐ค ์์ธ :
- ๋ฐ๋ผ์ ์ ์๋ฌ๋ node-role.kubernetes.io/control-plane, node.kubernetes.io/disk-pressure๋ผ๋ ๋ taint์ ๋ด์ฑ์ ๊ฐ์ง์ง ๋ชปํ Pod๊ฐ ํด๋น ๋ ธ๋์ ์ค์ผ์ค๋ง๋์ง ๋ชปํ ๊ฒ์ด๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก control-plane(๋ง์คํฐ ๋
ธ๋)์๋ ํ๋๊ฐ ์ค์ผ์ค๋ง๋์ง ์๋๋ค.
- ๊ทธ ์ด์ ์ญ์ node-role.kubernetes.io/control-plane์ด taint ๋๋ฌธ์ด๋ค.
- ์ด๋ ๋ง์คํฐ ๋
ธ๋์ ์ค์ ๋์ด ์๋ ๊ธฐ๋ณธ taint์ด๋ค.
- describe ๋ช ๋ น์ด๋ก ๋ง์คํฐ๋ ธ๋์ taint ๋ถ๋ถ์ ์ดํด๋ณด๋ฉด
- Taints: node-role.kubernetes.io/control-plane:NoSchedule๋ผ๊ณ ๋์ด์๋ค.
- ์ด์ ์๋ฌ๊ฐ ๋ฐ์ํ ์ด์ ๋ฅผ ์ถ์ธกํด๋ณด์.
- ์์ node.kubernetes.io/disk-pressure์ด๋ผ๋ taint๋ก ์ธํด Pod๊ฐ ์์ปค ๋ ธ๋๋ก์ ์ค์ผ์ค๋ง์ ์คํจํ์ ๊ฒ์ด๋ค.
- ์ดํ control-plane(๋ง์คํฐ๋ ธ๋)์ ์ค์ผ์ค๋ง์ ํ๋ ค๋ค๊ฐ node-role.kubernetes.io/control-plane๋ผ๋ taint๋ก ์ธํด ๋ ์คํจํ์ฌ ์์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
๐ ํด๊ฒฐ :
node.kubernetes.io/disk-pressure
- node.kubernetes.io/disk-pressure๋ ๋ ธ๋์ ๋์คํฌ ์ฌ์ฉ๋์ด ๋์์ ์ถ๊ฐ์ ์ธ ๋ฆฌ์์ค๋ฅผ ํ ๋นํ ์ ์๋ค๋ ๊ฒ์ ๋ํ๋ธ๋ค.
- ๋์คํฌ ์๋ฐ ์ํ์์๋ ํด๋น ๋ ธ๋์ Pod๋ฅผ ์ค์ผ์ค๋งํ ์ ์๋ค.
๐ก
์์ปค ๋ ธ๋์ ๋์คํฌ ์ฉ๋์ ๋นํด Pod๊ฐ ๋๋ฌด ๋ง์ด ๋์์ ธ ์์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ์ง ์๋ Pod๋ ๋ชจ๋ ์ ๊ฑฐํด ์ฃผ์๋ค.์ด ๋ฌธ์ ๋ ์์ปค๋ ธ๋์ ์ผ๋ง๋งํผ์ ๊ฐ์ฉ๋์ด ์๋์ง ์์ง ๋ชปํด ๋ฐ์ํ ๋ฌธ์ ์ด๋ฏ๋ก, ์ด๋ฒ ๊ธฐํ์ ์์ปค๋ ธ๋ ๋์คํฌ์ ๊ฐ์ฉ๋์ ํ์ธํด ๋ณด์.
$ k describe nodes <์์ปค ๋
ธ๋๋ช
>
# ์ถ๋ ฅ
Conditions:
Type Status LastHeartbeatTime LastTransitionTime Reason Message
---- ------ ----------------- ------------------ ------ -------
NetworkUnavailable False Mon, 06 Jan 2025 11:16:31 +0000 Mon, 06 Jan 2025 11:16:31 +0000 FlannelIsUp Flannel is running on this node
MemoryPressure False Wed, 15 Jan 2025 03:58:07 +0000 Mon, 06 Jan 2025 11:15:42 +0000 KubeletHasSufficientMemory kubelet has sufficient memory available
DiskPressure False Wed, 15 Jan 2025 03:58:07 +0000 Wed, 15 Jan 2025 03:49:07 +0000 KubeletHasNoDiskPressure kubelet has no disk pressure
PIDPressure False Wed, 15 Jan 2025 03:58:07 +0000 Mon, 06 Jan 2025 11:15:42 +0000 KubeletHasSufficientPID kubelet has sufficient PID available
Ready True Wed, 15 Jan 2025 03:58:07 +0000 Mon, 06 Jan 2025 11:16:29 +0000 KubeletReady kubelet is posting ready status
...
Capacity:
cpu: 8
ephemeral-storage: 37206272Ki
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 24306844Ki
pods: 110
Allocatable:
cpu: 8
ephemeral-storage: 34289300219
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 24204444Ki
pods: 110
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning EvictionThresholdMet 16m (x2 over 27m) kubelet Attempting to reclaim ephemeral-storage
Normal NodeHasDiskPressure 16m (x2 over 27m) kubelet Node k8s-worker1 status is now: NodeHasDiskPressure
Normal NodeHasNoDiskPressure 10m (x3 over 7d1h) kubelet Node k8s-worker1 status is now: NodeHasNoDiskPressure
Conditions
- Conditions๋ฅผ ํ์ธํด ๋ณด๋ฉด ํด๋น ๋ ธ๋์ ๋คํธ์ํฌ. ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ ๋ฑ์ ํ๊ณ๊ฐ ํ์ ๋ณ๋ก ๋๋์ด ์๊ณ , ํ์ฌ ์ํ๊ฐ ํ์๋์ด ์๋ค.
- Ready์ ๊ฒฝ์ฐ๋ ๋ ธ๋๊ฐ ์ ์์ ์ผ๋ก ํ์ฑํ๋์ด์๋ค๋ฉด True๋ก ๋์ด์๋ ๊ฒ์ด ๋ง๋ค.
- ๋ค๋ฅธ ํ์ ์ ๋ช ์นญ์ ๋ณด๋ฉด False๋ก ๋์ด์์ด์ผ ์ ์์์ ์ง์ํ ์ ์๊ณ ํ์ฌ ์ ์์์ ํ์ธํ ์ ์๋ค.
Capacity & Allocatable
- ๊ฐ ๋ฆฌ์์ค ๋ณ ์ ์ฒด ์ฉ๋๊ณผ ํ ๋น ๊ฐ๋ฅ ์ฉ๋์ ํ์ํ๋ค.
- ์ฌ๊ธฐ์ ephemeral-storage์ ๋ํด ๊ฐ๋จํ ์์๋ณด์.
- ephemeral-storage๋ Kubernetes์์ ์ปจํ ์ด๋๊ฐ ์ฌ์ฉํ๋ ์์ ์ ์ฅ์๋ฅผ ์๋ฏธํ๋ค.
- ์ด ์ ์ฅ์๋ ์ปจํ ์ด๋๊ฐ ์คํ๋๋ ๋์๋ง ๋ฐ์ดํฐ๋ฅผ ์ ์งํ๋ฉฐ ์ปจํ ์ด๋๊ฐ ์ญ์ ๋๊ฑฐ๋ ์ฌ์์๋๋ฉด ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง๋ค.
- ์ปจํ ์ด๋์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ํจ๊ปํ๋ ๊ฒ์ด๋ค.
- ์ฆ, ํ ๋ ธ๋์ ์ฌ๋ฌ Pod๋ฅผ ๋์ธ์๋ก ์คํ ์ค์ธ ์ปจํ ์ด๋์ ์์ด ๋ง์์ ธ ํ ๋น ๊ฐ๋ฅํ ์ ์ฅ ์ฉ๋์ด ์ ์ ์ค์ด๋ค ๊ฒ์ด๋ค.
- ์ด ์ฉ๋์ ์ธ์คํด์ค์ ๋์คํฌ ์ฉ๋๊ณผ ๊ด๋ จ์ด ์์ผ๋ฏ๋ก ์ด ๋ถ๋ถ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ค.
Events
- ๊ธฐ๋ก ์์๋ฅผ ๋ณด๋ฉด ephemeral-storage์ ์ฉ๋ ํ๊ณ๋ก ์ธํ ๊ฒฝ๊ณ ๊ฐ ๋ฐ์ํ๊ณ , ์ดํ DiskPressure๊ฐ True๋ก ๋์ด ๋์คํฌ ์ฌ์ฉ๋์ด ์๊ณ์น์ ๋๋ฌํ์ฌ Pod๊ฐ ์์ฑ์ด ๋ถ๊ฐ๋ฅํด์ก๋ค๊ฐ ํ๋ ธ์์ ํ์ธํ ์ ์๋ค.
- ์๋ง ํ๋ฆฐ ์์ ์ด ๋ด๊ฐ ์ฌ์ฉํ์ง ์์ Pod๋ฅผ ์ง์ด ์์ ์ผ ๊ฒ์ด๋ค.
๊ฒฐ๋ก
- ํ์ฌ๋ ํ ์คํธ ์ค์ธ ์๋น์ค์ด๊ธฐ ๋๋ฌธ์ ์ฃผ๊ธฐ์ ์ผ๋ก Pod๋ฅผ ์ญ์ ํ๋ฉด ์ด๋ ์ ๋ ํด๊ฒฐ๋ ๋ฌธ์ ์ด์ง๋ง ์ถํ์๋ ๋์คํฌ ์ฉ๋์ ๋๋ฆด ํ์๊ฐ ์์ด ๋ณด์ธ๋ค.
https://suzuworld.tistory.com/453
kubernetes node : kubelet has disk pressure ํด๊ฒฐ ๋ฐฉ๋ฒ ์ด์ ๋ฆฌ(pod status evicted, Attempting to reclaim ephemeral-storage)
์ง๋ ๊ธ์์ ์์ปค ๋ ธ๋์ ๋์คํฌ ๊ฐ์ฉ๋์ด ๋ถ์กฑํ์ฌ ํด๋น ๋ ธ๋์ Pod๋ฅผ ์ค์ผ์ค๋งํ ์ ์๋ ๋ฌธ์ ์ ๋ํ ์ด์๋ฅผ ์ ๋ฆฌํ๋ค. ํ์ฌ ์ฌ๋ด์์ ์ฌ์ฉ ์ค์ธ ์ฟ ๋ฒ๋คํฐ์ค๋ ํด๋ผ์ฐ๋ ๋ด์์ ์๋ ์ค์ด๋ฉฐ
suzuworld.tistory.com
- ์ข ๋ ๋ค์ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ๊ณ ์๋ค๋ฉด ๋ค์ ๊ธ์ ์ฐธ๊ณ ํ์.
๐ค ์๋ฌธ์ :
์์!
์ฐธ๊ณ
chatGPT