(5) Probe μ΄ν΄νκΈ°
β μΏ λ²λ€ν°μ€ μ΄λλ ν΄λμ€ (μ§μνΈ) - Spring 1, 2 μ λ£κ³ μμ±νλ λ³΅μ΅ λΈλ‘κ·Έ μ λλ€.
1. Probe μ κΈ°λ³Έ κ°λ

- Pod μμ probe μ€μ νκΈ°
- startUpProbe, readinessProbe, livenessProbe μ΄ 3κ°μ Probe λ₯Ό μ€μ ν μ μλ€.
- κ°κ° μ±κ³΅μ΄λ μ€ν¨μ λν μμΉλ μ€μ κ°λ₯ (success Threshold, failure Threshold)
- 컨ν μ΄λ μμ μ±μ κ° path μ λν url μ΄ μ¬μ μ λ§λ€μ΄μ Έ μμ΄μΌ νλ€.
- μΌλ°μ μΌλ‘ App κΈ°λ μκ°μ λ°λΌ startup Probe μ€ν¨μλ§ μ‘°μ ν΄μ μ¬μ©νλ€.

Pod κ° λ§λ€μ΄μ§μλ§μ probe κΈ°λ₯λ€μ΄ λμνλ€.
| App κΈ°λμ€ |
|
| App κΈ°λ μλ£ |
|
| App μ₯μ λ°μ |
|
2. Application λ‘κ·Έλ₯Ό ν΅ν νλ‘λΈ λμ λΆμ
2-1. μ€μ΅ μ μ¬μ μ€λΉ μμ (HPA minReplica λ₯Ό 1λ‘ λ°κΎΈκΈ° - Master Node)
kubectl patch -n anotherclass-123 hpa api-tester-1231-default -p '{"spec":{"minReplicas":1}}'
- π€ μ¬κΈ°μ HPA λ ? λΆνμ λ°λΌ pod λ₯Ό λλ €μ£Όκ³ , μ€μ¬μ£Όλ μ€μΌμΌλ§ μν
- κΈ°μ‘΄μ HPA μ minReplica λ 2λ‘ λμ΄ μμλ€.
- μ΄ μμΉκ° Deployment μ μν₯μ μ€λ€.
- Deployment → replica = 1
- HPA μ minReplica = 2 μ΄λΌλ©΄ Deployment → replica = 2
- HPA μ minReplica = 1 μ΄λΌλ©΄ Deployment → replica = 1
- Pod κ° λ κ°λ©΄ λ‘κ·Έλ₯Ό λ³Ό λ ν·κ°λ¦΄ μ μκΈ° λλ¬Έμ νλλ‘ λ§λ€κΈ° μν΄μ μ¬μ μμ μ ν΄μ€λ€.
2-2. Pod λ₯Ό μμ ν λ€μ Application λ‘κ·Έ νμΈ

- App μ΄κΈ°ν
- startUpProbe κ° 5μ΄ κ°κ²©μΌλ‘ νΈμΆ
- μ±κ³΅ : readinessProbe, livenessProbe μμ
- μ€ν¨ : μ±κ³΅ν λκΉμ§ λ°λ³΅
- λμ νμΈμ μν΄ μμλ‘ μ½λ ꡬμ±, μ€μ App μ κΈ°λλκΈ° μ μ API λ₯Ό λ°μ§ λͺ»ν¨
- User μ΄κΈ°ν μ€ μ΄κΈ° λ°μ΄ν° λ‘λ© μμ
- μ΄ μμ μ΄ λ€ λλμΌ App κΈ°λ μλ£
- readinessProbe λ μ²μ μ€ν¨ ν 3λ²μ΄ μλ£λκ³ , κΈ°λμλ£κ° λμμΌ μ±κ³΅ (10μ΄ κ°κ²© νΈμΆ)
- livenessProbe λ λ°λ‘ μ±κ³΅ (10μ΄ κ°κ²© νΈμΆ)
3. Application λμ μ€μ¬μ νλ‘λΈ μ΄ν΄
probe κΈ°λ₯μ΄ μκΈ΄ μ΄μ
μΏ λ²λ€ν°μ€ → Aplication μ νΈνκ² κ΄λ¦¬νκΈ° μν¨
Application μ λμμ΄ μκ³ , κ·Έ λμμΌλ‘λΆν° μλν λκΈΈ λ°λΌλ μꡬ μ¬νμ΄ μλ€.

Application λμ
- App μ΄κΈ°ν (νΈλν½ λ°μ μ€λΉ)
- pod μμ± → Jar μ€ν → Spring μ΄κΈ°ν → DB μ°κ²°
- μ΄ κ³Όμ μ΄ λλμΌ App μ΄ μ€λΉλκ³ , νΈλν½μ λ°μ μ μλ μ€λΉλ₯Ό μλ£
- User μ΄κΈ°ν (App μ μ κΈ°λ)
- App μ μ΄κΈ° λ°μ΄ν° λ‘λ©, μ°λ μμ€ν 체ν¬, DB λ°μ΄ν° Validation
- User μ΄κΈ°ν κ³Όμ κΉμ§ λλμΌ App μ΄ μ ννκ² κΈ°λ
μλν μꡬμ¬ν
- API λ₯Ό λ°μ μ μλ μν
- App μν μ²΄ν¬ (μ΄κΈ°ν λ?)
- μΈλΆ API μ κ·Ό π βοΈ
- API λ₯Ό λ°μ μ μλ μν (User μ΄κΈ°ν μ )
- App μν μ²΄ν¬ (App μ΄ μ΄μ μλμ§?)
- μΈλΆ API μ κ·Ό π βοΈ
- API λ₯Ό λ°μ μ μλ μν (User μ΄κΈ°ν ν)
- App μν μ²΄ν¬ (App μ΄ μ΄μ μλμ§?)
- μΈλΆ API μ κ·Ό πβοΈ
- App μ₯μ λ°μ μ
- App μ¬κΈ°λ π
Kubernetes μ 곡 κΈ°λ₯
- API λ₯Ό λ°μ μ μλ μν
- /startUp API νΈμΆ (μ±κ³΅ν λκΉμ§)
- Service μ Pod λ λ―Έμ°κ²°
- API λ₯Ό λ°μ μ μλ μν (User μ΄κΈ°ν μ )
- /liveness API νΈμΆ
- λ§μ½ μ€ν¨μ Pod μ¬κΈ°λ
- API λ₯Ό λ°μ μ μλ μν (User μ΄κΈ°ν ν)
- /readiness API νΈμΆ
- λ§μ½ μ±κ³΅ μ Service μ Pod μ°κ²°
⇒ redinessProbe, livenessProbe λ μ£½μ λκΉμ§ νΈμΆνκΈ° λλ¬Έμ νΈμΆνλ API λ₯Ό κ°λ³κ² λ§λ€μ΄μΌ νλ€.
Probe λμ μ 리
| startupProbe | "App μ΄κΈ°νκ° λλ¬λ?" πβοΈ (μ±κ³΅) : livenessProbe, readinessProbe νΈμΆ π βοΈ (μ€ν¨) : λ€μ νΈμΆ |
| livenessProbe | "App μ΄ μ΄μμλ?" πβοΈ (μ±κ³΅) : λ€μ νΈμΆ π βοΈ (μ€ν¨) : Pod μ¬κΈ°λ |
| readinessProbe | "App μ΄ νΈλν½μ λ°μ μ μλ ?" πβοΈ (μ±κ³΅) : λ€μ νΈμΆ (Service, Pod μ°κ²°) π βοΈ (μ€ν¨) : Service, Pod μ°κ²° ν΄μ (νΈλν½ λ°μ μ μμ) |
4. μΌμμ μΈ μ₯μ μν©μμμ νλ‘λΈ νμ©
μ±μ΄ μ κΈ°λλμ μλΉμ€ μ€μΈ μν → π¨ μΌμμ μΈ μ₯μ κ° μκ²Όλ€
- μμ€ν μ΄ λ©μΆμλ μκ³
- μκ°μ΄ μ§λλ€λ³΄λ©΄ μ€μ€λ‘ ν΄κ²°λ μλ μλ€
livenessProbe κ° μ€ν¨νλ©΄ → Pod μ¬κΈ°λ
- probe κ° μμμΌλ©΄ μ μμΌλ‘ λμμμ μ μλ μν© → Pod λ₯Ό μ¬κΈ°λ μν€λ©΄μ App μμ μ²λ¦¬ μ€μΈ μμ λ€μ λͺ¨λ μ€ν¨
readinessProbe κ° μ€ν¨νλ©΄ → μΈλΆ νΈλν½ κΈμ§
- μ€ν¨μ μΈλΆ API μ κ·Όμ κΈμ§μν€κΈ° λλ¬Έμ App λΆλ΄ κ°μ (κ·Έλλ‘ λμ΄λ λ¨)
⇒ livenessProbe μ 체ν¬μ£ΌκΈ°λ₯Ό readinessProbe μ κ°μ§ μλλ‘ μ€μ
⇒ μ€ν¨νλλ° κ±Έλ¦¬λ μκ°μ κΈΈκ² μ€μ ν΄μ Pod κ° μ½κ² μ¬κΈ°λ λλ κ±Έ λ°©μ§