Search
πŸ‘†

[CKA] 32. Init Containers

Date
2025/01/01
Category
Devops
Tag
Kubernetes
CKA
Management
λͺ©μ°¨

Β Init Containers

Multi-Container Podμ—μ„œ 각 μ»¨ν…Œμ΄λ„ˆλŠ” Pod의 생λͺ… μ£ΌκΈ°λ™μ•ˆ μ‚΄μ•„ μžˆμ–΄μ•Ό ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹€ν–‰ν•  κ²ƒμœΌλ‘œ κΈ°λŒ€λœλ‹€. [CKA] 31. Multi-Container Pods μ—μ„œ μ‚¬μš©λœ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό λ‘œκΉ… μ—μ΄μ „νŠΈκ°€ μ‚¬μš©λ˜λŠ” 닀쀑 μ»¨ν…Œμ΄λ„ˆ νŒŒλ“œλŠ” 두 μ»¨ν…Œμ΄λ„ˆ λͺ¨λ‘κ°€ 항상 μ‚΄μ•„ μžˆμ–΄μ•Ό ν•œλ‹€. λ‘˜ 쀑 ν•˜λ‚˜λΌλ„ Fail μƒνƒœκ°€ λœλ‹€λ©΄ PodλŠ” μž¬μ‹œμž‘λœλ‹€.
ν•˜μ§€λ§Œ λ•Œλ•Œλ‘œ 계속 μ‹€ν–‰λ˜λŠ” ν”„λ‘œμ„ΈμŠ€κ°€ μ•„λ‹Œ ν•œ 번만 μ‹€ν–‰λ˜κ³  μ™„λ£Œλ˜λŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹€ν–‰ν•  ν•„μš”κ°€ μžˆλ‹€. 예λ₯Ό λ“€μ–΄, μ£Όμš” μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ‚¬μš©ν•  μ½”λ“œλ‚˜ λ°”μ΄λ„ˆλ¦¬λ₯Ό Repositoryμ—μ„œ κ°€μ Έμ˜€λŠ” ν”„λ‘œμ„ΈμŠ€κ°€ μžˆλ‹€. λ˜λŠ” μ‹€μ œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ‹œμž‘λ˜κΈ° 전에 μ™ΈλΆ€ μ„œλΉ„μŠ€λ‚˜ λ°μ΄ν„°λ² μ΄μŠ€κ°€ 쀀비될 λ•ŒκΉŒμ§€ κΈ°λ‹€λ €μ•Ό ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€κ°€ μžˆμ„ 수 μžˆλ‹€. μ΄λ•Œ initContainersκ°€ ν•„μš”ν•˜λ‹€.

Β Configure initContainer

initContainerλŠ” λ‹€λ₯Έ μ»¨ν…Œμ΄λ„ˆμ™€ λ§ˆμ°¬κ°€μ§€λ‘œ Pod에 κ΅¬μ„±λ˜μ§€λ§Œ, initContainers μ„Ήμ…˜ 내에 μ§€μ •λœλ‹€.
# pod-definition.yaml apiVersion: v1 kind: Pod metadata: name: myapp-pod labels: app: myapp spec: containers: - name: myapp-container image: busybox:1.28 command: ['sh', '-c', 'echo The app is running! && sleep 3600'] initContainers: - name: init-myservice image: busybox command: ['sh', '-c', 'git clone <some-repository-that-will-be-used-by-application> ; done;']
YAML
볡사
Podκ°€ 처음 생성될 λ•Œ initContainerκ°€ μ‹€ν–‰λ˜λ©°, initContainer의 ν”„λ‘œμ„ΈμŠ€κ°€ μ™„λ£Œλ˜μ–΄μ•Ό μ‹€μ œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ν˜ΈμŠ€νŒ…ν•˜λŠ” μ»¨ν…Œμ΄λ„ˆκ°€ μ‹œμž‘λœλ‹€.

Β Configure Multi-initContainers

μ—¬λŸ¬ 개의 initContainersλ₯Ό ꡬ성할 수 있으며, 이 경우 각 initContainerλŠ” 순차적으둜 ν•˜λ‚˜μ”© μ‹€ν–‰λœλ‹€. initContainerκ°€ ν•˜λ‚˜λΌλ„ μ™„λ£Œλ˜μ§€ μ•ŠμœΌλ©΄, μΏ λ²„λ„€ν‹°μŠ€λŠ” initContainerκ°€ 성곡할 λ•ŒκΉŒμ§€ Podλ₯Ό 반볡적으둜 μž¬μ‹œμž‘ν•œλ‹€.
apiVersion: v1 kind: Pod metadata: name: myapp-pod labels: app: myapp spec: containers: - name: myapp-container image: busybox:1.28 command: ['sh', '-c', 'echo The app is running! && sleep 3600'] initContainers: - name: init-myservice image: busybox:1.28 command: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done;'] - name: init-mydb image: busybox:1.28 command: ['sh', '-c', 'until nslookup mydb; do echo waiting for mydb; sleep 2; done;']
YAML
볡사