[ํ”„๋กœ์ ํŠธ 5]๐Ÿ’พ K3s CronJob์ด CPU๋ฅผ 1291%๊นŒ์ง€ ํญ์ฃผ์‹œํ‚จ ๋‚  – Store-and-Forward ํ‹ฐ์–ด๋ง ๊ตฌํ˜„๊ธฐ

๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด SSD๋Š” ๋ฌดํ•œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. AI ํŒŒ๋“œ๋“ค์ด ๋งค์ดˆ ๋ฐ์ดํ„ฐ๋ฅผ InfluxDB์— ์Œ“์œผ๋ฉด ์–ธ์  ๊ฐ€๋Š” ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ๊ฝ‰ ์ฐน๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ Windows PC์˜ NFS Cold Storage๋กœ ์˜ฎ๊ธฐ๋Š” ํ‹ฐ์–ด๋ง ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•  ๊ฒƒ ๊ฐ™์•˜๋Š”๋ฐ, K3s CronJob์ด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋งˆ๋น„์‹œํ‚ค๊ณ , NFS๊ฐ€ ์œ ๋ น ์—ฐ๊ฒฐ์„ ๋งŒ๋“ค๊ณ , Python ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ปค๋„์— ๊ฐ‡ํ˜€๋ฒ„๋ฆฌ๋Š” ์ผ๋“ค์ด ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”— ๋ฐ์ดํ„ฐ ํ‹ฐ์–ด๋ง ์‹ค์ฆ: GitHub Wiki โ€” Proof Tiering | ๋ฐ์ดํ„ฐ ์ƒ๋ช…์ฃผ๊ธฐ


๐Ÿ“ ์ „์ฒด ์„ค๊ณ„ โ€” Windowing ์ „๋žต

์™œ InfluxDB ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋น„์›Œ์•ผ ํ•˜๋Š”์ง€๋ถ€ํ„ฐ ์„ค๋ช…ํ•˜๋ฉด, Longhorn ๋ณผ๋ฅจ์€ 5Gi๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. AI ํŒŒ๋“œ๊ฐ€ ๊ณ„์† ๋ฐ์ดํ„ฐ๋ฅผ ์Œ“์œผ๋ฉด ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ๊ฐ€๋“ ์ฐจ ์‹œ์Šคํ…œ์ด ๋ฉˆ์ถฅ๋‹ˆ๋‹ค.

โ†โ”€โ”€โ”€โ”€ 5์‹œ๊ฐ„ InfluxDB ๋ณด์กด (Hot) โ”€โ”€โ”€โ”€โ†’ | 5์‹œ๊ฐ„ ์ดˆ๊ณผ โ†’ CSV ๋ณ€ํ™˜ + Cold ์ด๊ด€

  Hot Data                               Cold Data
  InfluxDB ์ƒ์ฃผ                          CSV ๋ณ€ํ™˜ ํ›„
  Grafana ์‹ค์‹œ๊ฐ„ ์‹œ๊ฐํ™” โœ…               NFS Cold Storage ์˜๊ตฌ ๋ณด์กด โœ…

5์‹œ๊ฐ„ ์ด๋‚ด ๋ฐ์ดํ„ฐ๋Š” InfluxDB์—์„œ ์‹ค์‹œ๊ฐ„ ์‹œ๊ฐํ™”ํ•˜๊ณ , 5์‹œ๊ฐ„์ด ์ง€๋‚œ ๋ฐ์ดํ„ฐ๋Š” CSV๋กœ ๋ณ€ํ™˜ํ•ด Windows PC์˜ NFS๋กœ ์ด๊ด€ ํ›„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ตฌ์กฐ๊ฐ€ RPO 0์ดˆ๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ํ•ต์‹ฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค.


๐Ÿ’ฅ Episode 14. K3s CronJob์ด CPU๋ฅผ ํญ์ฃผ์‹œ์ผฐ๋‹ค

์ฒ˜์Œ์—” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์Šค๋Ÿฌ์šด ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. K3s kind: CronJob์œผ๋กœ ๋งค์‹œ๊ฐ„ InfluxDB ๋ฐ์ดํ„ฐ๋ฅผ CSV๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํŒŒ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ Grafana ์ธํ”„๋ผ ๋Œ€์‹œ๋ณด๋“œ์—์„œ ์ด์ƒํ•œ ๊ฑธ ๋ดค์Šต๋‹ˆ๋‹ค.

Master ๋…ธ๋“œ Sys Load: 652% โ†’ 1291%

ํŒŒ๋“œ ๋ชฉ๋ก์„ ํ™•์ธํ•˜๋‹ˆ ์ด๋Ÿฐ ์ƒํƒœ๋“ค์ด ์Œ“์—ฌ ์žˆ์Šต๋‹ˆ๋‹ค.

NAME                                  STATUS
data-tiering-cronjob-29545176-g725b   CreateContainerError
data-tiering-cronjob-29545178-dszqq   ContainerCreating
data-tiering-cronjob-29545180-v64cr   CreateContainerError

์—๋Ÿฌ 3์—ฐ์†:

Error: context deadline exceeded
Error: failed to reserve container name "tiering-worker_..._0":
       name "..." is reserved for "3bb74dbc5b6782c..."
Error: stream terminated by RST_STREAM with error code: CANCEL

์ฒ˜์Œ์—” ์Šคํฌ๋ฆฝํŠธ ๋กœ์ง ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ crictl ps -a๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ™•์ธํ•˜๋ ค ํ•ด๋„ ์กฐํšŒ ์ž์ฒด๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์œ ๋ น ๋ ˆ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

๊ทผ๋ณธ ์›์ธ: CronJob์˜ ๋ณผ๋ฅจ์ด hostPath: /mnt/safe-edge-nfs๋กœ ์„ค์ •๋˜์–ด ์žˆ์—ˆ๋Š”๋ฐ, ์ด ๊ฒฝ๋กœ๊ฐ€ Windows NFS ์„œ๋ฒ„(WinNFSd)๋ฅผ ๋งˆ์šดํŠธํ•œ ๊ฒฝ๋กœ์˜€์Šต๋‹ˆ๋‹ค. containerd๊ฐ€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ณผ๋ฅจ ๋งˆ์šดํŠธ๋ฅผ ์‹œ๋„ํ•˜๋Š” ์ˆœ๊ฐ„, NFS ์‘๋‹ต์ด ๋А๋ฆฌ๋ฉด context deadline exceeded ํƒ€์ž„์•„์›ƒ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ํƒ€์ž„์•„์›ƒ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ์€ ์‹คํŒจํ–ˆ์ง€๋งŒ containerd ๋‚ด๋ถ€ DB์— ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„ ์˜ˆ์•ฝ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋‚จ์•„๋ฒ„๋ฆฝ๋‹ˆ๋‹ค. ์ดํ›„ ์žฌ์‹œ๋„ํ•  ๋•Œ ์ด๋ฆ„ ์ถฉ๋Œ โ†’ ๋ฌดํ•œ ๋ฐ˜๋ณต โ†’ CPU ํญ์ฃผ์˜ ์—ฐ์‡„๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

[ํƒ€์ž„์•„์›ƒ ๋ฐœ์ƒ]
    โ””โ†’ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ์‹คํŒจ
    โ””โ†’ containerd DB์— ์œ ๋ น ๋ ˆ์ฝ”๋“œ ์ž”์กด
        โ””โ†’ ์žฌ์‹œ๋„ ์‹œ ์ด๋ฆ„ ์ถฉ๋Œ ๋ฐ˜๋ณต
            โ””โ†’ CPU 1291% ํญ์ฃผ ๐Ÿ”ด

10๊ฐ€์ง€ ์‹œ๋„๋ฅผ ๊ฑฐ์ณ ๋‚ด๋ฆฐ ๊ฒฐ๋ก : CronJob์„ ์™„์ „ํžˆ ํฌ๊ธฐํ•˜๊ณ  ๋ฆฌ๋ˆ…์Šค crontab์œผ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

[๊ธฐ์กด] K3s CronJob โ†’ ๋งค๋ฒˆ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ โ†’ NFS ๋งˆ์šดํŠธ ํƒ€์ž„์•„์›ƒ ์œ„ํ—˜
[๋ณ€๊ฒฝ] ๋ฆฌ๋ˆ…์Šค crontab โ†’ ์ด๋ฏธ ๋– ์žˆ๋Š” host์—์„œ Python ์ง์ ‘ ์‹คํ–‰ โ†’ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ์—†์Œ
# root ํฌ๋ก ํƒญ์— ๋“ฑ๋ก (๋งค์‹œ ์ •๊ฐ ์‹คํ–‰)
sudo crontab -e
0 * * * * /home/minsoo/safe-edge-tiering/run_tiering.sh >> /home/minsoo/safe-edge-tiering/tiering.log 2>&1

๐Ÿ’ก ๊ตํ›ˆ: ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ์ฃผ๊ธฐ์  ์ž‘์—…์˜ ์ •์„์€ CronJob์ด์ง€๋งŒ, ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด์ฒ˜๋Ÿผ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ œํ•œ์ ์ธ ์—ฃ์ง€ ํ™˜๊ฒฝ์—์„œ๋Š” ๋งค๋ฒˆ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์น˜๋ช…์ ์ž…๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์ •์„๋ณด๋‹ค ํ™˜๊ฒฝ์˜ ์ œ์•ฝ์„ ๋จผ์ € ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ’ฅ Episode 15. NFS STALE โ€” ์—ฐ๊ฒฐ์ด ์‚ด์•„์žˆ๋Š” ์ฒ™ํ•˜๋Š” ์œ ๋ น ๋งˆ์šดํŠธ

์žฌ๋ถ€ํŒ… ํ›„ tiering ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ–ˆ๋”๋‹ˆ ๋ฐ์ดํ„ฐ๊ฐ€ Windows PC๋กœ ๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š”๋ฐ ์‹ค์ œ Windows C:\safe-edge-nfs ํด๋”๋Š” ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

minsoo@master:/mnt/safe-edge-nfs $ ls
acoustic_detection_cold_20260305_110742.csv  # ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž„

minsoo@master:/mnt/safe-edge-nfs $ touch tt.txt
touch: cannot touch 'tt.txt': Permission denied  # ์‹ค์ œ๋กœ๋Š” ๋Š๊ธด ์ƒํƒœ

WinNFSd ๋กœ๊ทธ์—๋Š” STALE ์—๋Ÿฌ๊ฐ€ ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค.

STALE์ด๋ž€: ๋ฆฌ๋ˆ…์Šค๊ฐ€ ์˜ˆ์ „์— ์—ฐ๊ฒฐํ–ˆ๋˜ NFS File Handle์ด ์‚ด์•„์žˆ๋‹ค๊ณ  ์ฐฉ๊ฐํ•˜์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” Windows์™€์˜ ์—ฐ๊ฒฐ์ด ๋Š๊ธด ์ƒํƒœ์ž…๋‹ˆ๋‹ค. WinNFSd๋Š” ์žฌ์‹œ์ž‘ ํ›„ ๊ธฐ์กด ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ๋ณต๊ตฌํ•˜๋Š” Grace Period๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์•„์„œ, ์žฌ๋ถ€ํŒ…ํ•  ๋•Œ๋งˆ๋‹ค ๋ชจ๋“  ์—ฐ๊ฒฐ์ด STALE์ด ๋ฉ๋‹ˆ๋‹ค.

์ฆ‰์‹œ ๋ณต๊ตฌ:

# ์œ ๋ น ๋งˆ์šดํŠธ ๊ฐ•์ œ ํ•ด์ œ (-l: lazy unmount, ์‘๋‹ต ์—†์–ด๋„ ๊ฐ•์ œ ํ•ด์ œ)
sudo umount -l /mnt/edge-nfs/nfs-complete

# ์ƒˆ๋กœ ๋งˆ์šดํŠธ
sudo mount -t nfs -o vers=3,nolock \
  10.10.10.100:/C/safe-edge-nfs /mnt/edge-nfs/nfs-complete

๊ทผ๋ณธ ํ•ด๊ฒฐ โ€” run_tiering.sh์— ์ž๋™ ์žฌ์—ฐ๊ฒฐ ๋กœ์ง ๋‚ด์žฅ:

#!/bin/bash
# ๋งค ์‹คํ–‰๋งˆ๋‹ค ๊ธฐ์กด ๋งˆ์šดํŠธ ๊ฐ•์ œ ํ•ด์ œ ํ›„ ์ƒˆ๋กœ ์—ฐ๊ฒฐ
sudo umount -l /mnt/edge-nfs/nfs-complete 2>/dev/null
sudo timeout 5 mount -t nfs -o vers=3,nolock \
  10.10.10.100:/C/safe-edge-nfs /mnt/edge-nfs/nfs-complete

NFS_STATUS=$?

๐Ÿ’ก ๊ตํ›ˆ: umount -l์€ STALE ๋งˆ์šดํŠธ์˜ ๋งŒ๋Šฅ ํ•ด๊ฒฐ์‚ฌ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  “์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ์‹œ ํ•ญ์ƒ ๋งˆ์šดํŠธ๋ฅผ ๊ฐฑ์‹ ”ํ•˜๋Š” ๋ฐฉ์–ด ๋กœ์ง์ด ์šด์˜ ์ž๋™ํ™”์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.


๐Ÿ’ฅ Episode 16. stat์€ NFS ๋Š๊น€์„ ๊ฐ์ง€ ๋ชปํ•œ๋‹ค โ€” ์ปค๋„ ๋ ˆ๋ฒจ ๋ธ”๋กœํ‚น

NFS๊ฐ€ ๋Š๊ฒผ๋Š”์ง€ Python ์ฝ”๋“œ์—์„œ ๊ฒ€์ฆํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

# 1์ฐจ ์‹œ๋„: stat์œผ๋กœ ๊ฒ€์ฆ
def check_nfs_alive(mount_path):
    result = subprocess.run(['timeout', '3', 'stat', mount_path], ...)
    return result.returncode == 0  # NFS ๋Š๊ฒจ๋„ True ๋ฐ˜ํ™˜ โ† ๋ฌธ์ œ!

NFS๊ฐ€ ๋Š๊ธด ์ƒํƒœ์—์„œ๋„ stat์€ True๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. stat์€ ์‹ค์ œ NFS ์„œ๋ฒ„์— I/O ์š”์ฒญ์„ ๋ณด๋‚ด์ง€ ์•Š๊ณ  ๋ฆฌ๋ˆ…์Šค ๋กœ์ปฌ ์บ์‹œ๋ฅผ ์ฝ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

touch๋กœ ๋ฐ”๊ฟ”๋ดค๋”๋‹ˆ ์ด๋ฒˆ์—” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์•„์˜ˆ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค.

๐Ÿ” NFS ๋งˆ์šดํŠธ ์ƒํƒœ ๊ฒ€์ฆ ์ค‘...   โ† ์—ฌ๊ธฐ์„œ ์˜์›ํžˆ ๋ฉˆ์ถค

touch๋Š” ์‹ค์ œ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋ฏ€๋กœ NFS ์„œ๋ฒ„์— I/O ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. NFS๊ฐ€ ๊บผ์ง„ ์ƒํƒœ์—์„œ๋Š” ์ปค๋„์ด ์‘๋‹ต์„ ๋ฌดํ•œ ๋Œ€๊ธฐํ•˜๋Š” **D-State(์–ธ์ธํ„ฐ๋Ÿฝํ„ฐ๋ธ” ์Šฌ๋ฆฝ)**์— ๋น ์ง‘๋‹ˆ๋‹ค. subprocess.run(timeout=3) ๊ฐ™์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ๋ฒจ ํƒ€์ž„์•„์›ƒ์œผ๋กœ๋Š” ์ปค๋„์ด ์žก๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘๋‹จ์‹œํ‚ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ตœ์ข… ํ•ด๊ฒฐ: ๊ฒ€์ฆ ์ฑ…์ž„์„ shell ์Šคํฌ๋ฆฝํŠธ ํ•œ ๊ณณ์— ์ง‘์ค‘์‹œํ‚ค๊ณ , ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

# run_tiering.sh
sudo timeout 5 mount -t nfs ... /mnt/edge-nfs/nfs-complete
NFS_STATUS=$?

# NFS ์ƒํƒœ๋ฅผ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ Python์— ์ „๋‹ฌ
NFS_CONNECTED=$NFS_STATUS python3 /home/minsoo/scripts/tiering_host.py
# tiering_host.py โ€” Python ๋‚ด๋ถ€์—์„œ NFS I/O ์™„์ „ ๊ธˆ์ง€
nfs_connected = os.environ.get('NFS_CONNECTED', '1') == '0'

if nfs_connected:
    move_buffer_to_nfs(NFS_READY, NFS_COMPLETE)  # Forward
else:
    print("NFS ๋‹จ์ ˆ โ€” nfs-ready ๋ฒ„ํผ์— ๋ณด๊ด€ ์ค‘")  # Store
์ƒํ™ฉmount ๊ฒฐ๊ณผPython ํŒ๋‹จ๊ฒฐ๊ณผ
NFS ์ •์ƒ์„ฑ๊ณต (0)nfs_connected=Truenfs-complete๋กœ ์ „์†ก โœ…
NFS ๋Š๊น€timeout (124)nfs_connected=Falsenfs-ready ๋ฒ„ํผ์— ๋ณด๊ด€ โœ…

๐Ÿ’ก ๊ตํ›ˆ: stat์€ NFS ์—ฐ๊ฒฐ ๊ฒ€์ฆ ์ˆ˜๋‹จ์ด ์•„๋‹™๋‹ˆ๋‹ค. NFS I/O๋Š” ์ปค๋„ ๋ ˆ๋ฒจ์—์„œ ๋ธ”๋กœํ‚น๋˜๋ฏ€๋กœ Python ํƒ€์ž„์•„์›ƒ์œผ๋กœ ๋ง‰์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฒ€์ฆ ์ฑ…์ž„์€ ํ•œ ๊ณณ(shell)์—์„œ๋งŒ ์ง€๊ฒŒ ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ’ฅ Episode 17. ์žฌ๋ถ€ํŒ… ํ›„ KUBECONFIG ๊ถŒํ•œ ์ดˆ๊ธฐํ™” โ€” ์—๋Ÿฌ ์œ„์žฅ

์žฌ๋ถ€ํŒ… ์ „๊นŒ์ง€ ์ •์ƒ ๋™์ž‘ํ•˜๋˜ ์‚ฌ์ง„ ๋ฐฑ์—… ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žฌ๋ถ€ํŒ… ์ดํ›„ ์ด๋Ÿฐ ๋ฉ”์‹œ์ง€๋ฅผ ๋‚ด๊ณ  ์ฆ‰์‹œ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

โš ๏ธ ์‹คํ–‰ ์ค‘์ธ AI ํŒŒ๋“œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค

ํŒŒ๋“œ๋Š” ์‹ค์ œ๋กœ ๋ฉ€์ฉกํžˆ ๋Œ๊ณ  ์žˆ๋Š”๋ฐ “ํŒŒ๋“œ ์—†์Œ”์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์›์ธ: ์Šคํฌ๋ฆฝํŠธ๊ฐ€ kubectl ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ด ๊ฒฝ๋กœ๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

export KUBECONFIG=/etc/rancher/k3s/k3s.yaml

K3s๋Š” ๋ณด์•ˆ ์ •์ฑ…์ƒ ์žฌ๋ถ€ํŒ…ํ•  ๋•Œ๋งˆ๋‹ค ์ด ํŒŒ์ผ์˜ ๊ถŒํ•œ์„ 600(root ์ „์šฉ)์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ๊ณ„์ •(minsoo)์œผ๋กœ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด Permission Denied๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ , kubectl get pod๊ฐ€ ์•„๋ฌด ๊ฒฐ๊ณผ๋„ ๋ฐ˜ํ™˜ํ•˜์ง€ ๋ชปํ•ด “ํŒŒ๋“œ ์—†์Œ”์œผ๋กœ ํŒ๋‹จํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ: ๊ฐœ์ธ ์ „์šฉ kubeconfig ๊ฒฝ๋กœ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

# ๋ณ€๊ฒฝ ์ „ (์žฌ๋ถ€ํŒ… ํ›„ root ์ „์šฉ์œผ๋กœ ์ดˆ๊ธฐํ™”๋จ)
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml

# ๋ณ€๊ฒฝ ํ›„ (minsoo ๊ณ„์ • ์†Œ์œ , ์žฌ๋ถ€ํŒ… ํ›„์—๋„ ๊ถŒํ•œ ์œ ์ง€)
export KUBECONFIG=/home/minsoo/.kube/config

๐Ÿ’ก ๊ตํ›ˆ: “ํŒŒ๋“œ ์—†์Œ” ๊ฐ™์€ ๋กœ์ง ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€ ์‹ค์ œ๋กœ๋Š” ๊ถŒํ•œ ๋ฌธ์ œ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์žฌ๋ถ€ํŒ… ํ›„์—๋งŒ ๋ฐœ์ƒํ•˜๋Š” ๋ฒ„๊ทธ๋Š” ํŒŒ์ผ ๊ถŒํ•œ, ํ™˜๊ฒฝ๋ณ€์ˆ˜, ์„œ๋น„์Šค ๊ธฐ๋™ ์ˆœ์„œ๋ฅผ ๋จผ์ € ์˜์‹ฌํ•˜์„ธ์š”.


โœ… Store-and-Forward ํŒŒ์ดํ”„๋ผ์ธ ์™„์„ฑ

๋ชจ๋“  ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…์„ ๊ฑฐ์นœ ์ตœ์ข… ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

InfluxDB (Hot, Worker2)
    โ”‚ run_tiering.sh โ€” ๋งค์‹œ ์ •๊ฐ
    โ–ผ
nfs-ready (๋กœ์ปฌ ๋ฒ„ํผ)
    โ”‚
    โ”œโ”€โ”€ NFS ์ •์ƒ โ†’ nfs-complete (NFS ๋งˆ์šดํŠธ) โ†’ Cold Storage โœ…
    โ””โ”€โ”€ NFS ๋Š๊น€ โ†’ ์—ฌ๊ธฐ์„œ ๋Œ€๊ธฐ (Store)
                       โ””โ”€โ”€ NFS ๋ณต๊ตฌ ์‹œ ์ž๋™ ์ „์†ก (Forward) โœ…

AI ํŒŒ๋“œ ์Šค๋ƒ…์ƒท โ†’ run_photo_tiering.sh (10๋ถ„๋งˆ๋‹ค) โ†’ Cold Storage/photos โœ…
Windows Cold Storage์— CSV ํŒŒ์ผ์ด ์Œ“์ธ ํ™”๋ฉด

crontab ๋“ฑ๋ก ํ™•์ธ ํ™”๋ฉด

NFS๊ฐ€ ๋Š๊ฒจ๋„ ๋กœ์ปฌ ๋ฒ„ํผ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€ํ•˜๊ณ , ๋ณต๊ตฌ๋˜๋ฉด ์ž๋™์œผ๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๊ณ ๊ฐ€ ๋‚˜์„œ ๋„คํŠธ์›Œํฌ๊ฐ€ ๋Š๊ธฐ๋Š” ๋ฐ”๋กœ ๊ทธ ์ˆœ๊ฐ„์—๋„ ๋ฐ์ดํ„ฐ๋Š” ๋ณด์กด๋ฉ๋‹ˆ๋‹ค.

๐Ÿ”— ๋‹ค์Œ ํŽธ: 6ํŽธ โ€” Failover ์‹ค์ฆ: ๋žœ์„ ์„ ๋ฝ‘์•˜๋‹ค, ์‹œ์Šคํ…œ์€ ์‚ด์•„๋‚จ์•˜๋‹ค
๐Ÿ”— ํ‹ฐ์–ด๋ง ์‹ค์ฆ ์ „์ฒด: GitHub Wiki โ€” Proof Tiering