1๏ธโฃ ๋ฌธ์ ์ํฉ
Kubernetes v1.27 + containerd ํ๊ฒฝ์์ PostgreSQL ์ปจํ ์ด๋๊ฐ CrashLoopBackOff ์ํ์ ๋น ์ง๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์ด๋ก ์ธํด ์๋น์ค๋ค์ด ์ ์์ ์ผ๋ก ๋์ํ์ง ์์๊ณ , ์ปจํ ์ด๋์ ๋ก๊ทธ๋ฅผ ํ์ธํด๋ณด๋ ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ ๋ฉ์์ง๊ฐ ์ถ๋ ฅ ๋์์ต๋๋ค.
ERROR: could not open file "pg_wal/00000001000000000000000A": Too many open files
LOG: could not create file "base/pgsql_tmp/pgsql_tmp1234": Too many open files
FATAL: too many open files in system
๐ ์์ธ ๋ถ์
์ค๋ฅ ๋ฉ์์ง์์ “Too many open files”๋ผ๋ ๋ฌธ๊ตฌ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
์ด๋ ์ปจํ ์ด๋ ๋๋ ํธ์คํธ OS์์ ํ์ผ ํธ๋ค(file descriptors) ๊ฐ์ ์ ํ์ ์ด๊ณผํ๋ค๋ ์๋ฏธ์ ๋๋ค.
ํ์ผ ํธ๋ค ๊ฐ์ ์ ํ์ ๋ฆฌ๋
์ค ์ปค๋์ fs.file-max ๊ฐ๊ณผ ๊ด๋ จ์ด ์์ผ๋ฉฐ,
containerd ์๋น์ค์์๋ nofile ์ค์ ์ด ๋ฎ๊ฒ ์กํ ์๋ค๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
2๏ธโฃ ํด๊ฒฐ ๋ฐฉ๋ฒ
โ
1. OS์ ํ์ผ ํธ๋ค ๊ฐ์ ์ ํ(fs.file-max) ์ฆ๊ฐ
์ฐ์ , ํ์ฌ ์์คํ ์์ ์ค์ ๋ ํ์ผ ํธ๋ค ๊ฐ์ ์ ํ์ ํ์ธํฉ๋๋ค.
$ cat /proc/sys/fs/file-max
์ ํ์ ์ฆ๊ฐ์ํค๊ธฐ ์ํด /etc/sysctl.conf ํ์ผ์ ์์ ํฉ๋๋ค.
$ vi /etc/sysctl.conf
์๋ ๊ฐ์ ์ถ๊ฐํ๊ฑฐ๋ ์์ ํฉ๋๋ค.
fs.file-max = 500000
๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํฉ๋๋ค.
$ sysctl
์ด์ OS์์ ํ์ฉํ๋ ํ์ผ ํธ๋ค ๊ฐ์๊ฐ ์ฆ๊ฐํ์ต๋๋ค.
โ
2. containerd์ nofile ์ ํ ๊ฐ ์ฆ๊ฐ
containerd ์๋น์ค์์๋ ์ด๋ฆฐ ํ์ผ ๊ฐ์๋ฅผ ๋๋ ค์ผ ํฉ๋๋ค.
์๋ ํ์ผ์ ์์ ํฉ๋๋ค.
$ vi /usr/lib/systemd/system/containerd.service
๋ค์ ์ค์ ์ ์ถ๊ฐํฉ๋๋ค.
```
LimitCORE=infinity
LimitNOFILE=500000
```
์ดํ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ์ํ๊ณ containerd ์๋น์ค๋ฅผ ์ฌ์์ํฉ๋๋ค.
$ systemctl daemon-reload
$ systemctl restart containerd
3๏ธโฃ ์ ์ฉ ํ์ธ
์ค์ ์ด ์ ์์ ์ผ๋ก ์ ์ฉ๋์๋์ง ํ์ธํ๊ธฐ ์ํด ๋ค์ ํ์ผ ํธ๋ค ๊ฐ์๋ฅผ ์ฒดํฌํฉ๋๋ค.
$ cat /proc/sys/fs/file-max
PostgreSQL ์ปจํ ์ด๋๊ฐ ์ ์์ ์ผ๋ก ์คํ๋๋์ง๋ ํ์ธํฉ๋๋ค.
$ kubectl get pods -n <namespace>
๋ง์ฝ Running ์ํ๋ก ๋ณ๊ฒฝ๋์๋ค๋ฉด, CrashLoopBackOff ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ ๊ฒ์
๋๋ค.
4๏ธโฃ ๊ฒฐ๋ก
“Too many open files” ์ค๋ฅ๋ ํ์ผ ํธ๋ค ๊ฐ์ ์ ํ์ด ๋๋ฌด ๋ฎ๊ฒ ์ค์ ๋์ด ๋ฐ์ํ๋ ๋ฌธ์ ์์ต๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด OS์ fs.file-max ๊ฐ์ ์กฐ์ ํ๊ณ , containerd์ nofile ์ค์ ์ ์ฆ๊ฐํ์ฌ ์ปจํ
์ด๋๊ฐ ์ถฉ๋ถํ ํ์ผ์ ์ด ์ ์๋๋ก ํ์ต๋๋ค.
๐น ์ด๋ฒ ๊ฒฝํ์ ํตํด ์ป์ ๊ตํ
- Kubernetes์์ ์ปจํ ์ด๋ ์คํ ์, ๋ฆฌ์์ค ์ ํ ์ค์ ์ ๋ฏธ๋ฆฌ ์ ๊ฒํ์.
fs.file-max,nofile๊ฐ์ด ๋๋ฌด ๋ฎ์ผ๋ฉด PostgreSQL ๊ฐ์ DB ์ปจํ ์ด๋์์Too many open files์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋ค.- ์ปจํ ์ด๋ ํ๊ฒฝ์์๋ OS๋ฟ๋ง ์๋๋ผ containerd์ ์ค์ ๋ ํจ๊ป ์กฐ์ ํด์ผ ํ๋ค.
์์ผ๋ก๋ Kubernetes ํ๊ฒฝ์์ ๋ฐ์ํ๋ ๋ค์ํ ๋ฌธ์ ํด๊ฒฐ ๊ฒฝํ์ ๊ณต์ ํ๊ฒ ์ต๋๋ค. ๐
๋น์ทํ ๋ฌธ์ ๋ฅผ ๊ฒช์ผ์ จ๋ค๋ฉด ๋๊ธ๋ก ๊ฒฝํ์ ๋๋ ์ฃผ์ธ์! ๐