[μΏ λ²„λ„€ν‹°μŠ€] μΏ λ²„λ„€ν‹°μŠ€μ˜ 좔ꡬ미

μΏ λ²„λ„€ν‹°μŠ€μ˜ κΈ°λ³Έ 철학에 λŒ€ν•΄ 정리해본 κΈ€μž…λ‹ˆλ‹€

 

μΏ λ²„λ„€ν‹°μŠ€ ꡬ성 μš”μ†Œ

1. ν΄λŸ¬μŠ€ν„°(Cluster)

  • μΏ λ²„λ„€ν‹°μŠ€ ν΄λŸ¬μŠ€ν„°λŠ” ν•˜λ‚˜ μ΄μƒμ˜ λ§ˆμŠ€ν„° λ…Έλ“œμ™€ μ›Œμ»€ λ…Έλ“œλ‘œ κ΅¬μ„±λœλ‹€.
  • ν΄λŸ¬μŠ€ν„°λŠ” μΏ λ²„λ„€ν‹°μŠ€μ—μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•˜λŠ” κΈ°λ³Έ λ‹¨μœ„μ΄λ‹€.

2. λ§ˆμŠ€ν„° λ…Έλ“œ(Master Node)

λ§ˆμŠ€ν„° λ…Έλ“œλŠ” ν΄λŸ¬μŠ€ν„°λ₯Ό κ΄€λ¦¬ν•œλ‹€.

  • API μ„œλ²„(kube-apiserver): λͺ¨λ“  μΏ λ²„λ„€ν‹°μŠ€ λͺ…령어와 μƒν˜Έμž‘μš©ν•˜λŠ” ν”„λ‘ νŠΈμ—”λ“œμ΄λ©°, μ‚¬μš©μžκ°€ μΏ λ²„λ„€ν‹°μŠ€ ν΄λŸ¬μŠ€ν„°μ™€ μƒν˜Έμž‘μš©ν•  λ•Œ 이 API μ„œλ²„λ₯Ό 톡해 μš”μ²­μ„ μ²˜λ¦¬ν•©λ‹ˆλ‹€.
  • 컨트둀러 λ§€λ‹ˆμ €(kube-controller-manager): μΏ λ²„λ„€ν‹°μŠ€ ν΄λŸ¬μŠ€ν„°μ—μ„œ μƒνƒœλ₯Ό κ΄€λ¦¬ν•˜λŠ” μ»¨νŠΈλ‘€λŸ¬λ“€μ„ μ‹€ν–‰ν•˜λ©°, ν΄λŸ¬μŠ€ν„° μƒνƒœλ₯Ό μ§€μ†μ μœΌλ‘œ ν™•μΈν•˜κ³  νŠΉμ • μƒνƒœλ‘œ μœ μ§€ν•©λ‹ˆλ‹€.
  • μŠ€μΌ€μ€„λŸ¬(kube-scheduler): μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ νŒŒλ“œλ₯Ό μ–΄λ–€ μ›Œμ»€ λ…Έλ“œμ— λ°°μΉ˜ν• μ§€ κ²°μ •ν•œλ‹€.
  • ETCD: ν΄λŸ¬μŠ€ν„°μ˜ μƒνƒœμ™€ ꡬ성 정보λ₯Ό μ €μž₯ν•˜λŠ” λΆ„μ‚° key-value μ €μž₯μ†Œ

3. μ›Œμ»€ λ…Έλ“œ(Worker Node)

μ›Œμ»€ λ…Έλ“œλŠ” μ‹€μ œλ‘œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•˜λŠ” μ»΄ν“¨νŒ… λ¦¬μ†ŒμŠ€μ΄λ‹€

  • Kubelet: 각각의 μ›Œμ»€ λ…Έλ“œμ—μ„œ μ‹€ν–‰λ˜λ©°, λ§ˆμŠ€ν„° λ…Έλ“œμ˜ API μ„œλ²„μ™€ ν†΅μ‹ ν•˜μ—¬ νŒŒλ“œλ₯Ό μƒμ„±ν•˜κ³  κ΄€λ¦¬ν•œλ‹€.
  • Kube-proxy: 각각 μ›Œμ»€ λ…Έλ“œμ—μ„œ μ‹€ν–‰λ˜λ©°, λ„€νŠΈμ›Œν¬ κ·œμΉ™μ„ κ΄€λ¦¬ν•˜μ—¬ νŒŒλ“œ κ°„μ˜ 톡신과 μ™ΈλΆ€ λ„€νŠΈμ›Œν¬μ™€μ˜ 톡신을 μ²˜λ¦¬ν•œλ‹€
  • μ»¨ν…Œμ΄λ„ˆ λŸ°νƒ€μž„: νŒŒλ“œλ₯Ό κ΅¬μ„±ν•˜λŠ” μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄λ‘œ 보톡 Dockerλ‚˜ containerd와 같은 μ»¨ν…Œμ΄λ„ˆ λŸ°νƒ€μž„μ„ μ‚¬μš©ν•©λ‹ˆλ‹€.

4. νŒŒλ“œ(Pod)

  • νŒŒλ“œλŠ” μΏ λ²„λ„€ν‹°μŠ€μ—μ„œ 배포되고 κ΄€λ¦¬λ˜λŠ” κ°€μž₯ μž‘μ€ λ‹¨μœ„μ΄λ‹€.
  • ν•˜λ‚˜μ˜ νŒŒλ“œλŠ” ν•˜λ‚˜ μ΄μƒμ˜ μ»¨ν…Œμ΄λ„ˆλ₯Ό 포함할 수 μžˆλ‹€.
  • λ™μΌν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•˜λŠ” μ»¨ν…Œμ΄λ„ˆλ“€μ€ 일반적으둜 ν•˜λ‚˜μ˜ νŒŒλ“œμ— ν¬ν•¨λœλ‹€.
  • νŒŒλ“œ λ‚΄μ˜ μ»¨ν…Œμ΄λ„ˆλ“€μ€ 같은 λ„€νŠΈμ›Œν¬ λ„€μž„μŠ€νŽ˜μ΄μŠ€λ₯Ό 곡유(톡신)ν•œλ‹€

5. λ„€μž„μŠ€νŽ˜μ΄μŠ€(Namespace)

  • λ„€μž„μŠ€νŽ˜μ΄μŠ€λŠ” ν•˜λ‚˜μ˜ ν΄λŸ¬μŠ€ν„° μ•ˆμ—μ„œ λ¦¬μ†ŒμŠ€λ₯Ό λ…Όλ¦¬μ μœΌλ‘œ κ΅¬λΆ„ν•˜λŠ” 방법이닀.
  • μ„œλ‘œ λ‹€λ₯Έ νŒ€μ΄λ‚˜ ν”„λ‘œμ νŠΈκ°€ 같은 ν΄λŸ¬μŠ€ν„°μ—μ„œ λ…λ¦½μ μœΌλ‘œ λ¦¬μ†ŒμŠ€λ₯Ό μ‚¬μš© κ°€λŠ₯ν•˜λ„λ‘ ν•œλ‹€.

6. 컨트둀러

μ»¨νŠΈλ‘€λŸ¬λŠ” μΏ λ²„λ„€ν‹°μŠ€ ν΄λŸ¬μŠ€ν„°μ—μ„œ μ›ν•˜λŠ” μƒνƒœλ₯Ό μœ μ§€ν•œλ‹€.

  • λ””ν”Œλ‘œμ΄λ¨ΌνŠΈ 컨트둀러(Deployment Controller):
    • μ‚¬μš©μžκ°€ μ •μ˜ν•œ νŒŒλ“œμ˜ μˆ˜μ™€ ν˜„μž¬ μ‹€ν–‰ 쀑인 νŒŒλ“œμ˜ 수λ₯Ό λΉ„κ΅ν•œλ‹€.
    • 예λ₯Ό λ“€μ–΄, μ‚¬μš©μžκ°€ 3개의 νŒŒλ“œλ₯Ό μš”μ²­ν–ˆμ§€λ§Œ ν•˜λ‚˜μ˜ νŒŒλ“œκ°€ λ‹€μš΄λ  경우 λ””ν”Œλ‘œμ΄λ¨ΌνŠΈ μ»¨νŠΈλ‘€λŸ¬λŠ” μžλ™μœΌλ‘œ μƒˆλ‘œμš΄ νŒŒλ“œλ₯Ό μƒμ„±ν•˜μ—¬ λ‹€μ‹œ 3개의 νŒŒλ“œκ°€ μ‹€ν–‰λ˜λ„λ‘ 보μž₯ν•œλ‹€.
  • λ ˆν”Œλ¦¬μΉ΄μ…‹ 컨트둀러(ReplicaSet Controller):
    • νŠΉμ • νŒŒλ“œμ˜ 볡제본 수(=λ ˆν”Œλ¦¬μΉ΄μ…‹)λ₯Ό μœ μ§€ν•œλ‹€.
    • μ‚¬μš©μžκ°€ λ ˆν”Œλ¦¬μΉ΄μ…‹μ— 5개의 νŒŒλ“œλ₯Ό μš”μ²­ν–ˆλŠ”λ° ν˜„μž¬ 4개의 νŒŒλ“œλ§Œ μ‹€ν–‰ 쀑이면, λ ˆν”Œλ¦¬μΉ΄μ…‹ μ»¨νŠΈλ‘€λŸ¬λŠ” μƒˆλ‘œμš΄ νŒŒλ“œλ₯Ό 생성해 볡제본 수λ₯Ό λ™μΌν•˜κ²Œ λ§žμΆ˜λ‹€
  • λ…Έλ“œ 컨트둀러(Node Controller):
    • λ…Έλ“œμ— λ¬Έμ œκ°€ λ°œμƒν•˜λ©΄ ν•΄λ‹Ή λ…Έλ“œμ—μ„œ μ‹€ν–‰ 쀑인 νŒŒλ“œλ“€μ„ λ‹€λ₯Έ λ…Έλ“œλ‘œ μ΄λ™μ‹œν‚€κ±°λ‚˜ λ‹€μ‹œ μŠ€μΌ€μ€„λ§ν•œλ‹€.
  • 작 컨트둀러(Job Controller):
    • νŠΉμ • μž‘μ—…μ„ 일정 횟수 이상 μ™„λ£Œν•΄μ•Ό ν•˜λŠ” 경우 작 μ»¨νŠΈλ‘€λŸ¬λŠ” μž‘μ—…μ΄ μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλ  λ•ŒκΉŒμ§€ μƒˆλ‘œμš΄ νŒŒλ“œλ₯Ό 생성해 μž‘μ—…μ„ μž¬μ‹œλ„ν•œλ‹€.

7. μ„œλΉ„μŠ€(Service)

  • μ„œλΉ„μŠ€λŠ” νŒŒλ“œ κ°„μ˜ 톡신을 μΆ”μƒν™”ν•˜μ—¬ νŒŒλ“œκ°€ λ™μ μœΌλ‘œ μƒμ„±λ˜κ±°λ‚˜ μ‚­μ œλ˜λ”λΌλ„ μΌμ •ν•œ λ„€νŠΈμ›Œν¬ μ—”λ“œν¬μΈνŠΈλ₯Ό μ œκ³΅ν•˜λŠ” λ„€νŠΈμ›Œν¬ 좔상화이며, νŒŒλ“œ κ°„μ˜ 톡신 및 μ™ΈλΆ€ νŠΈλž˜ν”½μ΄ νŠΉμ • νŒŒλ“œμ— 전달될 수 μžˆλ„λ‘ ν•œλ‹€.
  • μΏ λ²„λ„€ν‹°μŠ€μ˜ μ΄λŸ¬ν•œ κΈ°λ³Έ κ΅¬μ‘°λŠ” λ³΅μž‘ν•œ μ»¨ν…Œμ΄λ„ˆ 기반 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 배포, ν™•μž₯ 및 관리λ₯Ό μžλ™ν™”ν•œλ‹€.

 

선언적 관리에 λŒ€ν•΄

μΏ λ²„λ„€ν‹°μŠ€μ˜ μ€‘μš”ν•œ μ² ν•™ 쀑.. 선언적 κ΄€λ¦¬λΌλŠ” ν‘œν˜„μ΄ μžˆλ‹€.

 

μ„ μ–Έμ μ΄λž€ 단어가 λ‹€μ†Œ 와닿지 μ•ŠλŠ”λ° λ‚˜λ¦„ mzμš©μ–΄λ‘œ ν•΄μ„ν•΄λ³΄μžλ©΄ '좔ꡬ미'에 κ°€κΉŒμš΄ 단어라 μƒκ°ν•œλ‹€ (κΈ€μ˜ 제λͺ©μ΄κΈ°λ„ ν•˜λ‹€ ^_^)

  • μœ„μ—μ„œ μ»¨νŠΈλ‘€λŸ¬κ°€ 선언적 관리λ₯Ό 톡해 μ‹œμŠ€ν…œμ˜ ν˜„μž¬ μƒνƒœλ₯Ό μ›ν•˜λŠ” λͺ©ν‘œ μƒνƒœμ™€ μΌμΉ˜μ‹œν‚€κΈ° μœ„ν•΄ μ§€μ†μ μœΌλ‘œ μƒνƒœλ₯Ό μ‘°μ •ν•œλ‹€κ³  ν•˜μ˜€λ‹€.
  • 즉 μ‚¬μš©μžκ°€ μ‹œμŠ€ν…œμ˜ λͺ©ν‘œ μƒνƒœλ₯Ό μ •μ˜ν•˜κ³ , μΏ λ²„λ„€ν‹°μŠ€κ°€ 이λ₯Ό λ‹¬μ„±ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ λͺ¨λ“  쑰치λ₯Ό μˆ˜ν–‰ν•˜λŠ” 방식이닀.
  • λ”°λΌμ„œ μ‚¬μš©μžλŠ” "무엇을 ν•΄μ•Ό ν•˜λŠ”μ§€"만 λͺ…μ‹œν•˜κ³ , "μ–΄λ–»κ²Œ ν•  것인지"에 λŒ€ν•œ 세뢀사항은 μΏ λ²„λ„€ν‹°μŠ€κ°€ μ²˜λ¦¬ν•œλ‹€.