Post

[Kubernetes] ๐Ÿงน GitHub Actions Runner Pod ๋””์Šคํฌ ์ •๋ฆฌ: kubectl exec + docker prune ์ผ๊ด„ ์‹คํ–‰

Kubernetes์— ์˜ฌ๋ฆฐ GitHub Actions self-hosted runner Pod์— ์Œ“์ธ Docker ๋นŒ๋“œ ์ฐŒ๊บผ๊ธฐ๋ฅผ, label selector์™€ xargs๋กœ ์—ฌ๋Ÿฌ Pod์— ํ•œ ๋ฒˆ์— docker system prune ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

[Kubernetes] ๐Ÿงน GitHub Actions Runner Pod ๋””์Šคํฌ ์ •๋ฆฌ: kubectl exec + docker prune ์ผ๊ด„ ์‹คํ–‰

Kubernetes์— ์˜ฌ๋ฆฐ GitHub Actions self-hosted runner๋Š” CI ๋นŒ๋“œ๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ Docker ์ด๋ฏธ์ง€ยท๋นŒ๋“œ ์บ์‹œ๊ฐ€ ์Œ“์—ฌ ๋…ธ๋“œ ๋””์Šคํฌ๋ฅผ ๊ฐ€๋“ ์ฑ„์šฐ๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” kubectl get pods -l๋กœ runner Pod๋ฅผ ๊ณจ๋ผ xargs๋กœ ๋ฌถ์–ด, ์—ฌ๋Ÿฌ Pod์— ํ•œ ๋ฒˆ์— docker system prune์„ ์‹คํ–‰ํ•˜๋Š” ํ•œ ์ค„ ๋ช…๋ น์–ด๋ฅผ ๋ถ„ํ•ดํ•˜๊ณ , ์•ˆ์ „ํ•œ ์˜ต์…˜ ์„ ํƒ๊ณผ CronJob ์ž๋™ํ™”๊นŒ์ง€ ์‹ค๋ฌด ๊ด€์ ์œผ๋กœ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๐ŸŽฏ ํ•ต์‹ฌ ๋ช…๋ น์–ด ํ•œ ์ค„

1
2
kubectl get -n github-runner pods -l app=githubrunner-cs -o name \
  | xargs -I {} kubectl exec -n github-runner {} -c githubrunner-cs -- docker system prune -f

์ด ํ•œ ์ค„์€ github-runner ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ app=githubrunner-cs ๋ผ๋ฒจ์ด ๋ถ™์€ ๋ชจ๋“  runner Pod๋ฅผ ์ฐพ์•„, ๊ฐ Pod์˜ githubrunner-cs ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ docker system prune -f๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ชจ๋“  runner์˜ Docker ์ฐŒ๊บผ๊ธฐ๋ฅผ ํ•œ ๋ฒˆ์— ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.


๐Ÿง ์™œ runner Pod์— ์ฐŒ๊บผ๊ธฐ๊ฐ€ ์Œ“์ผ๊นŒ?

self-hosted runner๋Š” CI ๋นŒ๋“œ๋งˆ๋‹ค Docker ์ด๋ฏธ์ง€๋ฅผ ๋ฐ›๊ณ  ๋นŒ๋“œ ์บ์‹œ๋ฅผ ๋‚จ๊ธฐ๋Š”๋ฐ, ์ด๊ฒŒ ์ •๋ฆฌ๋˜์ง€ ์•Š๊ณ  ๋ˆ„์ ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ runner Pod ์•ˆ์—์„œ Docker ๋นŒ๋“œ๋ฅผ ๋Œ๋ฆฌ๋Š” DinD(Docker-in-Docker) ๊ตฌ์กฐ์—์„œ๋Š” ๋‹ค์Œ์ด ์Œ“์ž…๋‹ˆ๋‹ค.

  • ๋นŒ๋“œ ์ค‘๊ฐ„ ๋‹จ๊ณ„ ์ด๋ฏธ์ง€์™€ dangling ์ด๋ฏธ์ง€(ํƒœ๊ทธ๊ฐ€ ๋–จ์–ด์ง„ <none> ์ด๋ฏธ์ง€)
  • docker build ๊ณผ์ •์—์„œ ์ƒ๊ธฐ๋Š” ๋นŒ๋“œ ์บ์‹œ
  • ์ข…๋ฃŒ๋œ ์ปจํ…Œ์ด๋„ˆ, ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋„คํŠธ์›Œํฌ

GitHub Actions์˜ ๊ณต์‹ ํ˜ธ์Šคํ‹ฐ๋“œ runner๋Š” ๋งค๋ฒˆ ๊นจ๋—ํ•œ VM์—์„œ ์‹œ์ž‘ํ•˜์ง€๋งŒ, self-hosted runner๋Š” ํ™˜๊ฒฝ์ด ์œ ์ง€๋˜๋ฏ€๋กœ ์ง์ ‘ ์ฒญ์†Œํ•˜์ง€ ์•Š์œผ๋ฉด ๊ณ„์† ๋ˆ„์ ๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๋…ธ๋“œ์˜ ๋””์Šคํฌ๊ฐ€ ๊ฐ€๋“ ์ฐจ๋ฉด ImagePull ์‹คํŒจ๋‚˜ Pod Evicted๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

โš ๏ธ ๋””์Šคํฌ๊ฐ€ ์ด๋ฏธ ๊ฐ€๋“ ์ฐฌ ๋’ค์—๋Š” Pod๊ฐ€ Evicted๋˜์–ด ์ •๋ฆฌ ๋ช…๋ น์กฐ์ฐจ ๋ชป ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ๊ธฐ์  ์ •๋ฆฌ(์ž๋™ํ™”)๊ฐ€ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.


๐Ÿ”ฌ ๋ช…๋ น์–ด ํ•œ ์ค„ ๋ถ„ํ•ดํ•˜๊ธฐ

๋ช…๋ น์–ด๋Š” ์„ธ ํ† ๋ง‰์œผ๋กœ ๋‚˜๋ˆ  ๋ณด๋ฉด ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค.

1๏ธโƒฃ ๋Œ€์ƒ Pod ๊ณ ๋ฅด๊ธฐ โ€” kubectl get -l

1
kubectl get -n github-runner pods -l app=githubrunner-cs -o name

-l app=githubrunner-cs๋Š” label selector๋กœ runner Pod๋งŒ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. -o name์€ ์ถœ๋ ฅ์„ pod/์ด๋ฆ„ ํ˜•์‹์œผ๋กœ ๋‹จ์ˆœํ™”ํ•ด ๋‹ค์Œ ๋‹จ๊ณ„์— ๋„˜๊ธฐ๊ธฐ ์ข‹๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

1
2
3
pod/githubrunner-cs-0
pod/githubrunner-cs-1
pod/githubrunner-cs-2

2๏ธโƒฃ ๊ฐ Pod๋กœ ํŽผ์น˜๊ธฐ โ€” xargs -I {}

1
| xargs -I {} kubectl exec ... {} ...

xargs -I {}๋Š” ์•ž ๋‹จ๊ณ„์—์„œ ๋ฐ›์€ ์ค„(Pod ์ด๋ฆ„)์„ ํ•˜๋‚˜์”ฉ {} ์ž๋ฆฌ์— ๋ผ์›Œ ๋„ฃ์–ด ๋ช…๋ น์„ Pod ๊ฐœ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. Pod๊ฐ€ 3๊ฐœ๋ฉด kubectl exec๊ฐ€ 3๋ฒˆ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

3๏ธโƒฃ ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ ์‹คํ–‰ โ€” kubectl exec -c ... -- docker ...

1
kubectl exec -n github-runner pod/githubrunner-cs-0 -c githubrunner-cs -- docker system prune -f
  • -c githubrunner-cs: Pod์— ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ(์˜ˆ: runner + DinD ์‚ฌ์ด๋“œ์นด)์ผ ๋•Œ ์–ด๋А ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰ํ• ์ง€ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ƒ๋žตํ•˜๋ฉด ์ฒซ ๋ฒˆ์งธ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  • -- ๋’ค๊ฐ€ ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ ์‹ค์ œ๋กœ ๋Œ๋ฆด ๋ช…๋ น(docker system prune -f)์ž…๋‹ˆ๋‹ค.

Tip: Docker ๋ฐ๋ชฌ์ด ๋ณ„๋„ ์‚ฌ์ด๋“œ์นด(์˜ˆ: dind)์— ์žˆ๋‹ค๋ฉด -c ๊ฐ’์„ ๊ทธ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์œผ๋กœ ๋งž์ถฐ์•ผ ํ•ฉ๋‹ˆ๋‹ค. kubectl get pod <name> -o jsonpath='{.spec.containers[*].name}'๋กœ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์„ ํ™•์ธํ•˜์„ธ์š”.


๐Ÿ—‘๏ธ docker system prune์€ ์ •ํ™•ํžˆ ๋ฌด์—‡์„ ์ง€์šฐ๋‚˜

docker system prune์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฉˆ์ถ˜ ์ปจํ…Œ์ด๋„ˆยท๋ฏธ์‚ฌ์šฉ ๋„คํŠธ์›Œํฌยทdangling ์ด๋ฏธ์ง€ยท๋ฏธ์‚ฌ์šฉ ๋นŒ๋“œ ์บ์‹œ๋ฅผ ์‚ญ์ œํ•˜์ง€๋งŒ, ๋ณผ๋ฅจ๊ณผ ํƒœ๊ทธ๊ฐ€ ๋ถ™์€ ๋ฏธ์‚ฌ์šฉ ์ด๋ฏธ์ง€๋Š” ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ต์…˜์— ๋”ฐ๋ผ ์‚ญ์ œ ๋ฒ”์œ„๊ฐ€ ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง€๋ฏ€๋กœ ํ‘œ๋กœ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋ช…๋ น๋ฉˆ์ถ˜ ์ปจํ…Œ์ด๋„ˆdangling ์ด๋ฏธ์ง€ํƒœ๊ทธ๋œ ๋ฏธ์‚ฌ์šฉ ์ด๋ฏธ์ง€๋นŒ๋“œ ์บ์‹œ๋ณผ๋ฅจ
docker system pruneโœ…โœ…โŒโœ…(๋ฏธ์‚ฌ์šฉ)โŒ
docker system prune -aโœ…โœ…โœ…โœ…(์ „์ฒด)โŒ
docker system prune -a --volumesโœ…โœ…โœ…โœ…(์ „์ฒด)โœ…
  • -f / --force: ํ™•์ธ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธยท์ผ๊ด„ ์‹คํ–‰์—๋Š” ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.
  • -a / --all: dangling๋ฟ ์•„๋‹ˆ๋ผ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ฐธ์กฐํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“  ์ด๋ฏธ์ง€๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ๋””์Šคํฌ๋Š” ๋” ํ™•๋ณด๋˜์ง€๋งŒ, ๋‹ค์Œ ๋นŒ๋“œ์—์„œ ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์‹œ ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค(์บ์‹œ ์†์‹ค).
  • --volumes: ๋ฏธ์‚ฌ์šฉ ๋ณผ๋ฅจ๊นŒ์ง€ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์œ ์‹ค ์œ„ํ—˜์ด ์žˆ์œผ๋‹ˆ runner ์บ์‹œ ๋ณผ๋ฅจ ๊ตฌ์กฐ๋ฅผ ๋ชจ๋ฅด๋ฉด ์“ฐ์ง€ ๋งˆ์„ธ์š”.

โš ๏ธ runner์—์„œ๋Š” ๋ณดํ†ต docker system prune -f(๊ธฐ๋ณธ)๊ฐ€ ์•ˆ์ „ํ•œ ๊ท ํ˜•์ ์ž…๋‹ˆ๋‹ค. ๋””์Šคํฌ๋ฅผ ๋” ๋น„์›Œ์•ผ ํ•˜๋ฉด -a๊นŒ์ง€ ๊ณ ๋ คํ•˜๋˜, --volumes๋Š” ๋ฌด์—‡์ด ์ง€์›Œ์ง€๋Š”์ง€ ํ™•์ธ ํ›„์—๋งŒ ์‚ฌ์šฉํ•˜์„ธ์š”.


๐Ÿ”Ž ์ •๋ฆฌ ์ „ํ›„ ํ™•์ธํ•˜๊ธฐ

์ •๋ฆฌ ํšจ๊ณผ๋ฅผ ์ˆ˜์น˜๋กœ ํ™•์ธํ•˜๋ ค๋ฉด docker system df๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

1
2
# ํŠน์ • runner Pod์˜ ๋””์Šคํฌ ์‚ฌ์šฉ ํ˜„ํ™ฉ
kubectl exec -n github-runner pod/githubrunner-cs-0 -c githubrunner-cs -- docker system df
1
2
3
4
5
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          42        5         12.3GB    9.8GB (79%)
Containers      8         2         1.2GB     0.9GB (75%)
Local Volumes   15        3         4.1GB     3.0GB (73%)
Build Cache     120       0         6.5GB     6.5GB (100%)

RECLAIMABLE ๊ฐ’์ด prune์œผ๋กœ ํšŒ์ˆ˜ ๊ฐ€๋Šฅํ•œ ์šฉ๋Ÿ‰์ž…๋‹ˆ๋‹ค. ๋…ธ๋“œ ๋””์Šคํฌ ์ž์ฒด๋Š” ๋‹ค์Œ์œผ๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

1
2
# ๋…ธ๋“œ ํŒŒ์ผ์‹œ์Šคํ…œ ์‚ฌ์šฉ๋ฅ 
kubectl exec -n github-runner pod/githubrunner-cs-0 -c githubrunner-cs -- df -h /

โฐ CronJob์œผ๋กœ ์ž๋™ํ™”ํ•˜๊ธฐ

์ˆ˜๋™ ์‹คํ–‰์€ ๊นŒ๋จน๊ธฐ ์‰ฌ์šฐ๋‹ˆ, CronJob์œผ๋กœ ์ฃผ๊ธฐ์  ์ •๋ฆฌ๋ฅผ ๊ฑฐ๋Š” ๊ฒƒ์ด ์‹ค๋ฌด์—์„œ ๊ฐ€์žฅ ๊น”๋”ํ•ฉ๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ์•ˆ์—์„œ kubectl์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด ํ•ด๋‹น ๋ช…๋ น์— ๋Œ€ํ•œ ๊ถŒํ•œ(RBAC)์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# ServiceAccount + RBAC (pods ์กฐํšŒ + exec ๊ถŒํ•œ)
apiVersion: v1
kind: ServiceAccount
metadata:
  name: runner-pruner
  namespace: github-runner
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: runner-pruner
  namespace: github-runner
rules:
  - apiGroups: [""]
    resources: ["pods"]
    verbs: ["get", "list"]
  - apiGroups: [""]
    resources: ["pods/exec"]
    verbs: ["create"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: runner-pruner
  namespace: github-runner
subjects:
  - kind: ServiceAccount
    name: runner-pruner
    namespace: github-runner
roleRef:
  kind: Role
  name: runner-pruner
  apiGroup: rbac.authorization.k8s.io
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# CronJob โ€” ๋งค์ผ ์ƒˆ๋ฒฝ 4์‹œ์— ๋ชจ๋“  runner Pod ์ •๋ฆฌ
apiVersion: batch/v1
kind: CronJob
metadata:
  name: runner-docker-prune
  namespace: github-runner
spec:
  schedule: "0 4 * * *"           # ๋งค์ผ 04:00 (ํด๋Ÿฌ์Šคํ„ฐ ํƒ€์ž„์กด ๊ธฐ์ค€)
  concurrencyPolicy: Forbid
  jobTemplate:
    spec:
      template:
        spec:
          serviceAccountName: runner-pruner
          restartPolicy: Never
          containers:
            - name: pruner
              image: bitnami/kubectl:latest
              command:
                - /bin/sh
                - -c
                - >
                  kubectl get -n github-runner pods -l app=githubrunner-cs -o name
                  | xargs -I {} kubectl exec -n github-runner {} -c githubrunner-cs
                  -- docker system prune -f

Tip: schedule์˜ ํƒ€์ž„์กด์€ ๊ธฐ๋ณธ์ ์œผ๋กœ kube-controller-manager ๊ธฐ์ค€(UTC์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ)์ž…๋‹ˆ๋‹ค. KST ๊ธฐ์ค€์œผ๋กœ ๋Œ๋ฆฌ๋ ค๋ฉด spec.timeZone: "Asia/Seoul"(Kubernetes 1.27+ ์•ˆ์ •ํ™”)์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”.


๐Ÿ“ ํ•œ ์ค„ ์š”์•ฝ

  • self-hosted GitHub Actions runner๋Š” ํ™˜๊ฒฝ์ด ์œ ์ง€๋˜์–ด Docker ์ด๋ฏธ์ง€ยท๋นŒ๋“œ ์บ์‹œ๊ฐ€ ๋ˆ„์ ๋˜๋ฏ€๋กœ ์ฃผ๊ธฐ์  ์ •๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • kubectl get -l ... -o name | xargs -I {} kubectl exec ... -- docker system prune -f๋กœ ์—ฌ๋Ÿฌ runner Pod๋ฅผ ํ•œ ๋ฒˆ์— ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ prune -f๊ฐ€ ์•ˆ์ „ํ•˜๋ฉฐ, -a(์ „์ฒด ์ด๋ฏธ์ง€)ยท--volumes(๋ณผ๋ฅจ)๋Š” ์˜ํ–ฅ ๋ฒ”์œ„๋ฅผ ์ดํ•ดํ•˜๊ณ  ์จ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์šด์˜์—์„œ๋Š” RBAC + CronJob์œผ๋กœ ์ž๋™ํ™”ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํ™•์‹คํ•ฉ๋‹ˆ๋‹ค.

โ“ ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

Q. docker system prune -f๋Š” ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๋„ ์ง€์šฐ๋‚˜์š”?

์•„๋‹™๋‹ˆ๋‹ค. ๋ฉˆ์ถ˜(stopped) ์ปจํ…Œ์ด๋„ˆ, dangling ์ด๋ฏธ์ง€, ๋ฏธ์‚ฌ์šฉ ๋„คํŠธ์›Œํฌ, ๋ฏธ์‚ฌ์šฉ ๋นŒ๋“œ ์บ์‹œ๋งŒ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ์™€ ๊ทธ๊ฒƒ์ด ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฏธ์ง€ยท๋ณผ๋ฅจ์€ ๋ณด์กด๋ฉ๋‹ˆ๋‹ค.

Q. -c ์˜ต์…˜์€ ๊ผญ ์จ์•ผ ํ•˜๋‚˜์š”?

Pod์— ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•˜๋‚˜๋ฉด ์ƒ๋žตํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค. runner + DinD ์‚ฌ์ด๋“œ์นด์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ์œผ๋ฉด Docker ๋ฐ๋ชฌ์ด ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ -c๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ƒ๋žต ์‹œ ์ฒซ ๋ฒˆ์งธ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

Q. Pod๊ฐ€ ์•„์ฃผ ๋งŽ์„ ๋•Œ ํ•œ ๋ฒˆ์— ๋Œ๋ ค๋„ ๋˜๋‚˜์š”?

xargs๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ˆœ์ฐจ ์‹คํ–‰์ด๋ผ ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค. ๋” ๋น ๋ฅด๊ฒŒ ๋ณ‘๋ ฌ ์‹คํ–‰ํ•˜๋ ค๋ฉด xargs -P 4์ฒ˜๋Ÿผ ๋™์‹œ ์‹คํ–‰ ์ˆ˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, API ์„œ๋ฒ„ยท๋…ธ๋“œ ๋ถ€ํ•˜๋ฅผ ๊ณ ๋ คํ•ด ์ ๋‹นํžˆ ์ œํ•œํ•˜์„ธ์š”.

Q. ๋””์Šคํฌ๋ฅผ ๋” ํ™•๋ณดํ•˜๋ ค๋ฉด -a๋ฅผ ์จ์•ผ ํ•˜๋‚˜์š”?

-a๋Š” ํƒœ๊ทธ๊ฐ€ ์žˆ์–ด๋„ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ฐธ์กฐํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“  ์ด๋ฏธ์ง€๋ฅผ ์ง€์›๋‹ˆ๋‹ค. ๋””์Šคํฌ๋Š” ๋” ๋น„์ง€๋งŒ ๋‹ค์Œ ๋นŒ๋“œ์—์„œ ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์‹œ ๋ฐ›์•„์•ผ ํ•ด ๋นŒ๋“œ๊ฐ€ ๋А๋ ค์ง‘๋‹ˆ๋‹ค. ์ •๊ธฐ ์ •๋ฆฌ๋Š” ๊ธฐ๋ณธ prune, ๋””์Šคํฌ ์œ„๊ธฐ ์‹œ์—๋งŒ -a๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

Q. ARC(Actions Runner Controller)๋ฅผ ์“ฐ๋ฉด ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?

ARC์˜ ephemeral runner๋Š” ์žก๋งˆ๋‹ค Pod๊ฐ€ ์ƒˆ๋กœ ๋–  ๋น„๊ต์  ๊นจ๋—ํ•˜์ง€๋งŒ, DinD ์บ์‹œ๋ฅผ ๊ณต์œ  ๋ณผ๋ฅจ์— ๋‘๋Š” ๊ตฌ์„ฑ์ด๋ฉด ์—ฌ์ „ํžˆ ๋ˆ„์ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๊ณต์œ  ์บ์‹œ ๋ณผ๋ฅจ์— ๋Œ€ํ•œ ์ •๋ฆฌ ์ •์ฑ…์„ ๋ณ„๋„๋กœ ๋‘๊ฑฐ๋‚˜ ์œ„ CronJob ๋ฐฉ์‹์„ ์ ์šฉํ•˜์„ธ์š”.


๐Ÿ“š ์ฐธ๊ณ 

</content>

This post is licensed under CC BY 4.0 by the author.