• toc {:toc}

Controller

  • μΏ λ²„λ„€ν‹°μŠ€μ˜ μ»¨νŠΈλ‘€λŸ¬λŠ” μš΄μ˜μžκ°€ μ›ν•˜λŠ” μƒνƒœλ₯Ό μΏ λ²„λ„€ν‹°μŠ€κ°€ λ°›μ•„μ„œ μ›ν•˜λŠ” μƒνƒœλ‘œ λ§Œλ“œλŠ” 역할을 ν•œλ‹€.

  • Desired stateλ₯Ό λ°›μ•„μ„œ μ›ν•˜λŠ” 개수의 팟, μ„œλΉ„μŠ€ λ“±μ˜ λ™μž‘μ„ μˆ˜ν–‰ν•˜κ³  λ™μž‘μ΄ 잘 μ§„ν–‰λ˜λŠ”μ§€ κ΄€λ¦¬ν•˜λŠ” 역할을 ν•œλ‹€.

  • Label : 객체에 λΆ™μ—¬μ§€λŠ” key/value μŒμ΄λ‹€. kind - 클래슀 λͺ…

  • 라벨은 그룹핑을 ν•œλ‹€.

  • μΏ λ²„λ„€ν‹°μŠ€λŠ” 팟, λ‹€μ–‘ν•œ 객체의 집합이닀.

  • 라벨은 νŒŸμ„ λ§Œλ“œλŠ” μ‹œμ μ— λ§Œλ“€μ–΄μ§ˆ 수 있고 μ–Έμ œλ‚˜ 더해지고 μˆ˜μ •λ  수 μžˆλ‹€.

Pods Selection using Label

  • μΏ λ²„λ„€ν‹°μŠ€ νŒŸλ“€μ€ metadataλ₯Ό ν†΅ν•΄μ„œ μ‘°μž‘ν•˜κ³  IP μ£Όμ†Œκ°€ μ•„λ‹Œ 이름을 μ‚¬μš©ν•œλ‹€.
  • μΏ λ²„λ„€ν‹°μŠ€μ˜ νŒŸμ€ mortalν•˜λ‹€. 팟이 죽을 수 μžˆλ‹€. Deploymentλ₯Ό μ‚¬μš©ν•œλ‹€λ©΄ νŒŸμ„ λ™μ μœΌλ‘œ λ§Œλ“€κ³  μ‚­μ œν•˜λ©° μ‘°μ •ν•œλ‹€.
    • λ•Œλ¬Έμ— μƒˆλ‘œ λ§Œλ“œλŠ” 경우 κ·Έλ•Œλ§ˆλ‹€ IP μ£Όμ†Œκ°€ λ‹¬λΌμ§ˆ 것이고, 맀번 μˆ˜μ •ν•΄μ€˜μ•Ό ν•˜λ―€λ‘œ IP μ£Όμ†Œκ°€ μ•„λ‹Œ 라벨을 톡해 이름을 μ„€μ •ν•΄ μ‚¬μš©ν•œλ‹€.
  • PrefixλŠ” λ™μΌν•˜λ‚˜ Postfix의 μˆ«μžκ°€ 달라진닀.
  • Ingress, NodePort β†’ μ„œλΉ„μŠ€, μ™ΈλΆ€μ˜ IPμ—μ„œ 받아와 load balancing을 μ§„ν–‰ν•œλ‹€.
  • μ„œλΉ„μŠ€λ₯Ό λ§Œλ“€ λ•Œ key 값이 app:myapp인 κ²½μš°μ— μ „λ‹¬ν•˜λ„λ‘ μ„€μ •ν•˜μ—¬ ν•΄λ‹Ή νŒŸμ—λ§Œ load balancing ν•  수 있게 λœλ‹€.
  • 라벨 μ‚¬μš© μ˜ˆμ‹œ
    • ν˜„μž¬ 운용 쀑인 μ„œλΉ„μŠ€λ₯Ό release 라벨을 톡해 λ¬ΆλŠ”λ‹€. κΈ°λŠ₯을 κ°œλ°œν•΄ ν…ŒμŠ€νŠΈ μš©λ„λ‘œ beta의 라벨을 μ£Όκ³  μž‘λ™μ‹œμΌœ κ΅¬λΆ„ν•˜μ—¬ κ°œλ°œν•  수 μžˆλ‹€.

ReplicaSet

  • ReplicaSet은 컨트둀러 이닀.

  • λͺ©μ 

    • 팟의 ν¬λ§ν•˜λŠ” 개수만큼 μ‹€ν–‰μ‹œν‚€κ³  3개λ₯Ό μ§€μ •ν•΄λ†¨λŠ”λ° ν•˜λ‚˜κ°€ 죽으면 μƒˆλ‘œ ν•˜λ‚˜ λ§Œλ“€μ–΄ μ›ν•˜λŠ” 개수λ₯Ό μœ μ§€μ‹œν‚€λŠ” 역할을 ν•œλ‹€.
  • Replicaset

    • μš΄μ˜μžκ°€ μš”μ²­ν•œ νŒŸμ„ μ›ν•˜λŠ” 개수만큼 n개λ₯Ό μ‹€ν–‰ν•˜κ³  μœ μ§€ν•œλ‹€.
    • selector : μš΄μ˜μžκ°€ μš”κ΅¬ν•œ 무언가λ₯Ό λͺ…λ Ήν•˜κΈ° μœ„ν•œ 이름 μ„€μ •ν•œλ‹€.
    • replicas : μƒμ„±ν•˜κ³ μž ν¬λ§ν•˜λŠ” 팟의 개수λ₯Ό μ„€μ •ν•œλ‹€.
    • template : λ³΅μ œν•  μƒˆλ‘œμš΄ 팟의 데이터λ₯Ό ꡬ체적으둜 μž‘μ„±ν•œ ν…œν”Œλ¦Ώμ„ μ„€μ •ν•œλ‹€.
    • μΏ λ²„λ„€ν‹°μŠ€λŠ” μž…λ ₯ νŒŒλΌλ―Έν„°λ₯Ό λ°›μ•„ ReplicaSet을 μž‘λ™μ‹œν‚¨λ‹€.
  • Set-based Requirement

  • μ£Όμ–΄μ§„ 라벨을 replicasetμ—μ„œ 보면 μ–΄λŠ μœ„μΉ˜, μ–΄λŠ 지점, λ…Έλ“œμ— μ μš©ν• μ§€λ₯Ό κ΅¬λΆ„ν•˜λŠ” μ—­ν• λ‘œλ„ μ‚¬μš©ν•  수 μžˆλ‹€.

  • λ§Žμ€ 정보 쀑 μ„ νƒν•΄μ„œ μ›ν•˜λŠ” 정보λ₯Ό λ³Ό λ•Œ 라벨을 μ‚¬μš©ν•  수 μžˆλ‹€.

Service Distribution in ReplicaSet

image

image

  • μ„œλ²„ μ—…λ°μ΄νŠΈ Blue β†’ Green, μœ„μͺ½μ΄ μœ μ €, μ•„λž˜μͺ½μ΄ 개발자라고 ν•˜μž.
  • μ΄ˆλ‘μƒ‰ Replica Controllerκ°€ 제일 λ¨Όμ € μƒμ„±λœλ‹€.
  • νŒŸμ„ 3개λ₯Ό λ§Œλ“€κ³  잘 λ™μž‘ν•˜λŠ”μ§€λ₯Ό ν™•μΈν•˜κ³  κ΄€λ¦¬ν•œλ‹€.
  • μ‚¬μš©μžμ˜ μ„œλΉ„μŠ€λŠ” NodePort or Ingressλ₯Ό λ§Œλ“€μ–΄ load balancing ν•˜λ©° νŒŸμ— μž‘λ™μ„ μš”μ²­ν•œλ‹€.
  • κ·Έλ¦° ν•˜λ‚˜ 생성 블루 ν•˜λ‚˜ 죽이고 β†’ 기쑴에 κ°€μ§€κ³  있던 것을 λ°œμ „ μ—…λ°μ΄νŠΈ μ‹œν‚€λŠ” 것이 μ•„λ‹ˆλ‹€.
  • μƒˆλ‘œμš΄ Replicaset Controllerλ₯Ό λ„μ›Œ μƒˆλ‘œμš΄ νŒŸμ„ λ„μš°κ³  μ„œλΉ„μŠ€κ°€ μƒˆλ‘œμš΄ 팟과 μ—°κ²°λ˜κ³  κΈ°μ‘΄ νŒŸμ€ κ·ΈλŒ€λ‘œ λ‘κ±°λ‚˜ μ£½λŠ” μͺ½μœΌλ‘œ λ§Œλ“ λ‹€.

image

  • 2개 μ΄μƒμ˜ 볡수의 ReplicaSet Controllerλ₯Ό Deploymentκ°€ μž‘λ™μ‹œν‚¨λ‹€.