uuuhhh
μ•„μ£Όμ‘°μ½”
uuuhhh
  • 전체 (68)
    • Cloud (22)
      • AWS (17)
      • NCP (4)
      • Tech (1)
    • Kubernetes (16)
    • Docker (1)
    • CI/CD (13)
    • Network (4)
    • OS (10)
      • Linux (9)
      • Concepts (1)
    • Language (0)
      • Golang (0)
    • Project (1)
      • Drone (1)
    • μš”λͺ¨μ‘°λͺ¨ (1)

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • νƒœκ·Έ
  • λ°©λͺ…둝

곡지사항

  • ⚠️ 2022/11/08 - 11/13 λΈ”λ‘œκ·Έ 이관 μž‘μ—… β‹―

인기 κΈ€

νƒœκ·Έ

  • λ°μ΄ν„°λ² μ΄μŠ€
  • Iam
  • pod
  • build
  • NKS
  • argocd
  • AWS
  • Linux
  • minikube
  • docker
  • network
  • LoadBalancer
  • Instance
  • NodePort
  • ncp
  • Jenkins
  • kubernetes
  • EC2
  • CI
  • service

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
uuuhhh

μ•„μ£Όμ‘°μ½”

Pod μ•ˆμ „ν•˜κ²Œ 생성/배포 및 QoS μ •μ±… μ„€μ •
Kubernetes

Pod μ•ˆμ „ν•˜κ²Œ 생성/배포 및 QoS μ •μ±… μ„€μ •

2022. 11. 10. 16:57

πŸ“ Epilogue


  • κ°„λ‹¨ν•œ JAR μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°€μ§€κ³  μΏ λ²„λ„€ν‹°μŠ€ νŒŒλ“œ 배포λ₯Ό μ‹œλ„ν•˜μ˜€λ‹€ !
  • 그런데 νŒŒλ“œ μƒνƒœκ°€.. μ—„μ²­λ‚œ λ©”λͺ¨λ¦¬ λΆ€μ‘±..
    • OOM Killed.. CrashLoopBackOff μƒνƒœ 반볡..
  • νŒŒλ“œ μŠ€νŽ™ 늘리고 λ‹€μ‹œ λ°°ν¬ν•˜λ‹ˆ 정상 μƒνƒœ !
  • κ·Έλž˜μ„œ μ—¬κΈ°μ„œ 의문점 ❗️
    • μ»¨ν…Œμ΄λ„ˆ μžμ› μŠ€νŽ™μ„ μ •ν•  λ•Œ μ–΄λ–€ κΈ°μ€€/μ „λž΅ λ˜λŠ” μ˜΅μ…˜μ΄ μžˆμ„κΉŒ?
    • λ˜λŠ” Stableν•œ 배포 μ „λž΅μ΄ μžˆμ„κΉŒ?

 

β–ͺ︎ Plan


  1. νŒŒλ“œμ— μ μ ˆν•œ μžμ› 할당을 톡해 μ•ˆμ •λœ μ„œλΉ„μŠ€ ν’ˆμ§ˆ(QoS) κ΅¬μ„±ν•˜κΈ°
  2. Probe κΈ°λŠ₯을 톡해 μ•ˆμ •μ μΈ Pod Life-Cycle 보μž₯ν•˜κΈ°

 

β–ͺ︎ μ„œλΉ„μŠ€ ν’ˆμ§ˆ (QoS)


  • νŒŒλ“œμ— νŠΉμ •ν•œ μ„œλΉ„μŠ€ ν’ˆμ§ˆ(QoS) 클래슀λ₯Ό ν• λ‹Ήν•΄ 쀄 수 μžˆλ‹€.
    • Guaranteed
    • Burstable
    • BestEffort
  • νŒŒλ“œμ˜ QoS 클래슀λ₯Ό 톡해 μΏ λ²„λ„€ν‹°μŠ€λŠ” νŒŒλ“œ μŠ€μΌ€μ€„λ§κ³Ό μΆ•μΆœμ„ κ²°μ •ν•œλ‹€.

 

β–ͺ︎ Guaranteed QoS 클래슀


  • Guaranteed QoS 클래슀 할당을 μœ„ν•œ 쑰건
    • νŒŒλ“œ λ‚΄ λͺ¨λ“  μ»¨ν…Œμ΄λ„ˆλŠ” [λ©”λͺ¨λ¦¬ μƒν•œ & μš”μ²­λŸ‰] & [CPU μƒν•œ & μš”μ²­λŸ‰]을 κ°€μ§€κ³  μžˆμ–΄μ•Ό ν•œλ‹€.
    • νŒŒλ“œ λ‚΄ λͺ¨λ“  μ»¨ν…Œμ΄λ„ˆλŠ” [λ©”λͺ¨λ¦¬ (μƒν•œ = μš”μ²­λŸ‰)] & [CPU (μƒν•œ = μš”μ²­λŸ‰)] 이어야 ν•œλ‹€.
apiVersion: v1
kind: Pod
metadata:
  name: cn-app-pod
  labels:
    name: cn-app-pod
spec:
  containers:
  - name: cn-app
    image: uh2959/cn-action
    resources:
      limits:
        cpu: 500m
        memory: 512Mi
      requests:
        cpu: 500m
        memory: 512Mi

 

  • μœ„ μž‘μ„±ν•œ λ§€λ‹ˆνŽ˜μŠ€νŠΈλ‘œ pod 생성 !

 

  • QoS Classκ°€ Guaranteed둜 ν• λ‹Ήλœ 것을 확인 !

 

πŸ’‘ λ§Œμ•½ μ»¨ν…Œμ΄λ„ˆμ˜ μŠ€νŽ™μ— λ©”λͺ¨λ¦¬ λ˜λŠ” CPU의 μƒν•œμ„±(limits)만 μ§€μ •ν•˜μ˜€μ„ 경우
     → ν•΄λ‹Ή μ§€μ •ν•œ λ©”λͺ¨λ¦¬λ‚˜ CPU의 μƒν•œμ„±(limits)κ³Ό λ™μΌν•˜κ²Œ μš”μ²­λŸ‰(requests)을 μžλ™μœΌλ‘œ ν• λ‹Ήν•΄μ€€λ‹€.

 

 

β–ͺ︎ Burstable QoS 클래슀


  • Burstable QoS 클래슀 할당을 μœ„ν•œ 쑰건
    • νŒŒλ“œκ°€ Guaranteed QoS 클래슀 쑰건을 λ§Œμ‘±ν•˜μ§€ μ•ŠλŠ” 경우
    • νŒŒλ“œ λ‚΄ μ΅œμ†Œ ν•˜λ‚˜μ˜ μ»¨ν…Œμ΄λ„ˆκ°€ [λ©”λͺ¨λ¦¬ μƒν•œ & μš”μ²­λŸ‰] λ˜λŠ” [CPU μƒν•œ & μš”μ²­λŸ‰]을 κ°€μ§€κ³  μžˆλŠ” 경우
apiVersion: v1
kind: Pod
metadata:
  name: cn-app-pod
  labels:
    name: cn-app-pod
spec:
  containers:
  - name: cn-app
    image: uh2959/cn-action
    resources:
      limits:
        cpu: 500m
      requests:
        cpu: 300m

 

  • μœ„ μž‘μ„±ν•œ λ§€λ‹ˆνŽ˜μŠ€νŠΈ 파일둜 pod 생성 ν›„ Qos Classκ°€ Burstable둜 ν• λ‹Ήλœ 것을 확인 !

 

 

β–ͺ︎ BestEffort QoS 클래슀


  • BestEffort QoS 클래슀 할당을 μœ„ν•œ 쑰건
    • νŒŒλ“œ λ‚΄ μ»¨ν…Œμ΄λ„ˆμ— [λ©”λͺ¨λ¦¬ μƒν•œ & μš”μ²­λŸ‰] λ˜λŠ” [CPU μƒν•œ & μš”μ²­λŸ‰]이 μ—†λŠ” 경우
apiVersion: v1
kind: Pod
metadata:
  name: cn-app-pod
  labels:
    name: cn-app-pod
spec:
  containers:
  - name: cn-app
    image: uh2959/cn-action

 

  • μœ„ μž‘μ„±ν•œ λ§€λ‹ˆνŽ˜μŠ€νŠΈ 파일둜 pod 생성 ν›„ Qos Classκ°€ BestEffort둜 ν• λ‹Ήλœ 것을 확인 !

 

 

 

β–ͺ︎ Probe


  • λ§Œμ•½ νŒŒλ“œκ°€ μ™„λ²½ν•˜κ²Œ 배포가 λ˜μ§€ μ•Šμ€ μƒνƒœμ—μ„œ νŠΈλž˜ν”½ μš”μ²­μ΄ λ“€μ–΄κ°„ 상황인 경우 ?
    • νŒŒλ“œκ°€ ν˜„μž¬ μš”μ²­μ„ 받을 수 μžˆλŠ” μƒνƒœμΈμ§€ 확인이 ν•„μš”ν•˜λ‹€ !
    • νŒŒλ“œμ˜ μƒνƒœλ₯Ό νŒŒμ•…ν•˜κΈ° μœ„ν•΄ ν”„λ‘œλΈŒ(Probe)λ₯Ό μ‚¬μš©ν•œλ‹€.
  • ν”„λ‘œλΈŒλž€ μ»¨ν…Œμ΄λ„ˆμ—μ„œ kubelet에 μ˜ν•΄ 주기적으둜 μˆ˜ν–‰λ˜λŠ” 진단이닀.
    • 진단 : μ»¨ν…Œμ΄λ„ˆ μ•ˆμ—μ„œ μ½”λ“œ μˆ˜ν–‰ / λ„€νŠΈμ›Œν¬ μš”μ²­ 전솑
  • ν”„λ‘œλΈŒλŠ” 총 μ„Έ κ°€μ§€ μ’…λ₯˜κ°€ μ‘΄μž¬ν•œλ‹€.
    • livenessProbe
    • readinessProbe
    • startupProbe

 

 

β–ͺ︎ livenessProbe


  • ν™œμ„± ν”„λ‘œλΈŒ
  • μ»¨ν…Œμ΄λ„ˆκ°€ λ™μž‘ 쀑인지 μ—¬λΆ€ 확인
  • λ§Œμ•½ Failureμ‹œ, kubelet은 μ»¨ν…Œμ΄λ„ˆλ₯Ό 죽이고 ν•΄λ‹Ή μ»¨ν…Œμ΄λ„ˆλŠ” μž¬μ‹œμž‘
  • livenessProbe λ―Έμ„€μ • μ‹œ, κΈ°λ³Έ μƒνƒœλŠ” Success

 

β–ͺ︎ readinessProbe


  • μ€€λΉ„μ„± ν”„λ‘œλΈŒ
  • μ»¨ν…Œμ΄λ„ˆκ°€ μš”μ²­μ„ μ²˜λ¦¬ν•  μ€€λΉ„κ°€ λ˜μ—ˆλŠ”μ§€ μ—¬λΆ€ 확인
  • λ§Œμ•½ Failure, Endpoint Controller은 νŒŒλ“œμ— μ—°κ²°λœ λͺ¨λ“  μ„œλΉ„μŠ€λ“€μ˜ μ—”λ“œν¬μΈνŠΈμ—μ„œ νŒŒλ“œ IP μ£Όμ†Œ 제거
  • ⇒ νŠΈλž˜ν”½ μ „λ‹¬ν•˜μ§€ μ•ŠμŒ
  • readinessProbe 초기 μ§€μ—° 이전 κΈ°λ³Έ μƒνƒœλŠ” Failure
  • readinessProbe λ―Έμ„€μ • μ‹œ, κΈ°λ³Έ μƒνƒœλŠ” Success

 

β–ͺ︎ startupProbe


  • μŠ€νƒ€νŠΈμ—… ν”„λ‘œλΈŒ
  • μ»¨ν…Œμ΄λ„ˆ λ‚΄μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ‹œμž‘λ˜μ—ˆλŠ”μ§€ μ—¬λΆ€ 확인
  • startupProbeκ°€ success 될 λ•Œ κΉŒμ§€ λ‹€λ₯Έ λ‚˜λ¨Έμ§€ ν”„λ‘œλΈŒλŠ” ν™œμ„± X
  • λ§Œμ•½ Failureμ‹œ, kubelet은 μ»¨ν…Œμ΄λ„ˆλ₯Ό 죽이고 ν•΄λ‹Ή μ»¨ν…Œμ΄λ„ˆλŠ” μž¬μ‹œμž‘
  • startupProbe λ―Έμ„€μ • μ‹œ, κΈ°λ³Έ μƒνƒœλŠ” Success

 

 

 

 

Ref.


νŒŒλ“œμ— λŒ€ν•œ μ„œλΉ„μŠ€ ν’ˆμ§ˆ(QoS) ꡬ성

νŒŒλ“œ 라이프사이클

K8S ν™˜κ²½μ—μ„œ pod을 μ•ˆμ „ν•˜κ²Œ λ°°ν¬ν•˜λŠ” 방법

 

μ €μž‘μžν‘œμ‹œ (μƒˆμ°½μ—΄λ¦Ό)

'Kubernetes' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

μ»¨ν…Œμ΄λ„ˆμ—μ„œ JVM은 μ™œ λ©”λͺ¨λ¦¬ λ¨ΉλŠ” ν•˜λ§ˆμ˜€μ„κΉŒ?  (1) 2022.11.10
λ¦¬μ†ŒμŠ€μ˜ λ©”λͺ¨λ¦¬μ™€ CPU μžμ› 관리  (0) 2022.11.10
Pod의 μš°μ„  μˆœμœ„  (0) 2022.11.10
K8S Service Network - μ‹€μŠ΅  (0) 2022.11.10
K8S Service Network  (0) 2022.11.08
    'Kubernetes' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • λ¦¬μ†ŒμŠ€μ˜ λ©”λͺ¨λ¦¬μ™€ CPU μžμ› 관리
    • Pod의 μš°μ„  μˆœμœ„
    • K8S Service Network - μ‹€μŠ΅
    • K8S Service Network
    uuuhhh
    uuuhhh
    ν”Όλ•€λˆˆλ¬Όμ˜ μ‚½μ§ˆκΈ°

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”