๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
[DevOps]/Kubernetes

Kubernetes ImageGCFailed, FreeDiskSpaceFailed ์›์ธ ์ƒ๊ฐ ํ•ด๋ณด๊ธฐ(์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜)

by ํŒกํŽ‘ํ 2025. 1. 24.
728x90

๐Ÿšจ Error 

# ์ถœ๋ ฅ
...

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   Thu, 23 Jan 2025 04:29:31 +0000   Mon, 06 Jan 2025 11:15:42 +0000   KubeletHasSufficientMemory   kubelet has sufficient memory available
  DiskPressure         False   Thu, 23 Jan 2025 04:29:31 +0000   Thu, 23 Jan 2025 04:04:01 +0000   KubeletHasNoDiskPressure     kubelet has no disk pressure
  PIDPressure          False   Thu, 23 Jan 2025 04:29:31 +0000   Mon, 06 Jan 2025 11:15:42 +0000   KubeletHasSufficientPID      kubelet has sufficient PID available
  Ready                True    Thu, 23 Jan 2025 04:29:31 +0000   Mon, 06 Jan 2025 11:16:29 +0000   KubeletReady                 kubelet is posting ready status
  
...

Events:
  Type     Reason                 Age                    From     Message
  ----     ------                 ----                   ----     -------
  Warning  FreeDiskSpaceFailed    51m                    kubelet  Failed to garbage collect required amount of images. Attempted to free 1731492249 bytes, but only found 0 bytes eligible to free.
  Warning  FreeDiskSpaceFailed    46m                    kubelet  Failed to garbage collect required amount of images. Attempted to free 2140416409 bytes, but only found 0 bytes eligible to free.
  Warning  ImageGCFailed          46m                    kubelet  Failed to garbage collect required amount of images. Attempted to free 2140416409 bytes, but only found 0 bytes eligible to free.
  Warning  ImageGCFailed          41m                    kubelet  Failed to garbage collect required amount of images. Attempted to free 1884924313 bytes, but only found 0 bytes eligible to free.
  Normal   NodeHasDiskPressure    34m (x11 over 8d)      kubelet  Node <node-name> status is now: NodeHasDiskPressure
  Warning  EvictionThresholdMet   34m (x25 over 8d)      kubelet  Attempting to reclaim ephemeral-storage
  Warning  ImageGCFailed          31m                    kubelet  Failed to garbage collect required amount of images. Attempted to free 1867794841 bytes, but only found 0 bytes eligible to free.
  Warning  FreeDiskSpaceFailed    31m                    kubelet  Failed to garbage collect required amount of images. Attempted to free 1867794841 bytes, but only found 0 bytes eligible to free.
  Normal   NodeHasNoDiskPressure  29m (x12 over 15d)     kubelet  Node <node-name> status is now: NodeHasNoDiskPressure
  Warning  FreeDiskSpaceFailed    26m                    kubelet  Failed to garbage collect required amount of images. Attempted to free 1872329113 bytes, but only found 0 bytes eligible to free.
  Warning  ImageGCFailed          26m                    kubelet  Failed to garbage collect required amount of images. Attempted to free 1872329113 bytes, but only found 0 bytes eligible to free.
  Warning  FreeDiskSpaceFailed    113s (x271 over 4d5h)  kubelet  (combined from similar events): Failed to garbage collect required amount of images. Attempted to free 1898916249 bytes, but only found 0 bytes eligible to free.
  • DiskPressure ๊ด€๋ จ ์—๋Ÿฌ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ์ค‘ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ์ด๋‹ค.
  • Kubernetes๋Š” ํŒŒ๋“œ์—์„œ ์šด์šฉํ•  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์œ„ํ•œ ์ž„์‹œ ์ €์žฅ์†Œ์ธ ephemeral-storage๋ฅผ ํ™œ์šฉํ•œ๋‹ค.
    • ephemeral-storage๋Š” ์šด์šฉ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ผ์‹œ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ €์žฅ ๊ณต๊ฐ„์ด๋‹ค.
    • ๋”ฐ๋ผ์„œ Pod๋ฅผ ๋„์šฐ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ปจํ…Œ์ด๋„ˆ ์ž„์‹œ ์ €์žฅ์†Œ๋กœ ์‚ฌ์šฉํ•  ์—ฌ์œ  ๋””์Šคํฌ ๊ณต๊ฐ„์„ ํ•„์š”๋กœ ํ•œ๋‹ค.
  • ๊ทธ๋Ÿฐ๋ฐ, ์ด ephemeral-storage๋กœ ์‚ฌ์šฉํ•  ๋””์Šคํฌ ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•˜๋ฉด DiskPressure ์ƒํƒœ๊ฐ€ True๊ฐ€ ๋˜์–ด ํ•ด๋‹น ์ธ์Šคํ„ด์Šค(์›Œ์ปค ๋…ธ๋“œ)์— ํŒŒ๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ค์ง€ ๋ชปํ•œ๋‹ค.
    • ์ •ํ™•ํžˆ๋Š” ์ธ์Šคํ„ด์Šค์˜ ๋””์Šคํฌ ์šฉ๋Ÿ‰์ด 90%๋ฅผ ๋„˜์–ด๊ฐ€๊ฑฐ๋‚˜(๋…ธ๋“œ ์‹œ์Šคํ…œ ๊ฐ€์šฉ ์šฉ๋Ÿ‰), ์ด๋ฏธ์ง€ ์‹œ์Šคํ…œ ๊ฐ€์šฉ ์šฉ๋Ÿ‰(85%)์„ ๋„˜๊ธฐ๋ฉด DiskPressure๊ฐ€ true๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค.
  • ์ด ์ƒํƒœ์—์„œ ๋ฉˆ์ถ”์ง€ ์•Š๊ณ  ๊ณ„์† Pod ์ƒ์„ฑ์„ ์‹œ๋„ํ•˜๊ฒŒ ๋˜๋ฉด ImageGCFailed๋ผ๋Š” ์ด์œ ๋กœ Failed to garbage collect required amount of images.์™€ ๊ฐ™์€ ๋ฉ”์‹œ์ง€์˜ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.
  • ๊ทธ๋Ÿฐ๋ฐ DiskPressure๊ฐ€ False๋กœ ๋Œ์•„์™€๋„ ๊ณ„์† ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
  • ์ด ๋ฌธ์ œ๋Š” ์™œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ผ๊นŒ?
 

๐Ÿ’ก ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜

  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(Garbage Collection)์€ JVM์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜๊ณผ ๊ฐ™์ด ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ž๋™์œผ๋กœ ์ •๋ฆฌํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.
  • ์ด๋ฅผ ํ†ตํ•ด ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ค„์ด๊ณ  ๋ฆฌ์†Œ์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿค” ์ข…๋ฅ˜

์˜ค๋ธŒ์ ํŠธ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜

  • ์†Œ์œ ์ž-์ข…์†์ž ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ, ์†Œ์œ ์ž(Owner)๊ฐ€ ์‚ญ์ œ๋˜๋ฉด ์ข…์†์ž(Dependent)๋„ ์ž๋™์œผ๋กœ ์‚ญ์ œ๋œ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, Deployment๊ฐ€ ์‚ญ์ œ๋˜๋ฉด ๊ด€๋ จ๋œ ReplicaSet๊ณผ Pod๋„ ์‚ญ์ œ๋œ๋‹ค.

 

์ปจํ…Œ์ด๋„ˆ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜

  • ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋‚˜ ์ค‘์ง€๋œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
  • ์ด๋ฅผ ํ†ตํ•ด ๋…ธ๋“œ์˜ ๋””์Šคํฌ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•œ๋‹ค.

 

๐Ÿš—  ์˜ˆ์ƒํ•˜๋Š” ์—๋Ÿฌ ๋ฐœ์ƒ ๊ณผ์ •

1. ๋””์Šคํฌ ์šฉ๋Ÿ‰ ๋ถ€์กฑ ๋ฌธ์ œ๋กœ DiskPressure ๋ฌธ์ œ ๋ฐœ์ƒ

2. ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์†์ ์œผ๋กœ ๋™์ผ ๊ธฐ๋Šฅ์˜ Pod ์ƒ์„ฑ ์‹œ๋„(๋™์ผ ์ด๋ฏธ์ง€ ์‚ฌ์šฉ)

3. ํŠน์ • or ๋‹ค์ˆ˜์˜ Pod์— Error ๋ฐœ์ƒ, ๋ณต๊ตฌ ๋ถˆ๊ฐ€

4. ๋ณต๊ตฌ ๋ถˆ๊ฐ€ Pod๊ฐ€ Kubelet์— ์˜ํ•ด ๊ณ ์•„ Pod๋กœ ์ธ์‹๋˜์–ด ํ•ด๋‹น Pod์—์„œ ์‚ฌ์šฉ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ด ์ •๋ฆฌ ์‹œ๋„.

5. ๊ทธ๋Ÿฌ๋‚˜, ์‹คํ–‰ ์ค‘์ธ ๋‹ค๋ฅธ Pod์—์„œ ๊ฐ™์€ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์— ์˜ํ•œ ์ด๋ฏธ์ง€ ์ •๋ฆฌ ๋ฐ ์šฉ๋Ÿ‰ ํ™•๋ณด ์‹คํŒจ

6. ImageGCFailed, FreeDiskSpaceFailed ์—๋Ÿฌ ๋ฐœ์ƒ

 

๐Ÿฅธ ๊ฒฐ๋ก 

  • ์ •๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
  • ImageGCFailed, FreeDiskSpaceFailed๋Š” ํŠน๋ณ„ํ•œ ์ด์œ ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•œ ๊ฒƒ์ด ์•„๋‹Œ ๋™์ผํ•œ ์ด๋ฏธ์ง€๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ง€์†์ ์œผ๋กœ Pod๋ฅผ ์ƒ์„ฑํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. 
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ์ง€์†์ ์œผ๋กœ ์ƒ์„ฑํ•œ Pod๊ฐ€ RepicaSet, Deployment ๋“ฑ์˜ ๋ฆฌ์†Œ์Šค์— ๊ด€๋ฆฌ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ƒ์„ฑ๋œ Pod ์ค‘ ์ผ๋ถ€์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ ๋™์ž‘ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ํ•ด๋‹น Pod๋Š” ๊ณ ์•„ Pod๊ฐ€ ๋˜์–ด๋ฒ„๋ฆฐ๋‹ค.
  • ์ด๋•Œ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์— ์˜ํ•ด ํ•ด๋‹น Pod์˜ ์ด๋ฏธ์ง€๊ฐ€ ์‚ฌ์šฉ ์ค‘์ด ์•„๋‹Œ ๊ฒƒ์œผ๋กœ ์ธ์‹๋˜์–ด ์ •๋ฆฌ๋˜๋ ค๊ณ  ํ•  ๊ฒƒ์ด๋‹ค.
  • ๊ทธ๋Ÿฌ๋‚˜, ์‹คํ–‰ ์ค‘์ธ ๋‹ค๋ฅธ Pod์—์„œ ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๊ธฐ ๋•Œ๋ฌธ์— ImageGCFailed, FreeDiskSpaceFailed ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋“ฏํ•˜๋‹ค.

 

 

 

728x90