[k8s] ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๊ธฐ๋ณธ ์˜ค๋ธŒ์ ํŠธ (Pod, Service, Volume, Namespace)

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ํฌ๊ฒŒ ์˜ค๋ธŒ์ ํŠธ(object)์™€ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ(controller)๋กœ ๋‚˜๋ˆ ์ ธ ์žˆ๋‹ค.์˜ค๋ธŒ์ ํŠธ์—” ์–ด๋–ค ๊ฒƒ๋“ค์ด ์žˆ๊ณ  ๊ฐ๊ฐ์˜ ์˜ค๋ธŒ์ ํŠธ์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค.  

 

 

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์˜ค๋ธŒ์ ํŠธ

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์˜ค๋ธŒ์ ํŠธ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์‹œ์Šคํ…œ์—์„œ ์˜์†์„ฑ์„ ๊ฐ€์ง€๋Š” ์˜ค๋ธŒ์ ํŠธ์ด๋‹ค. ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์‹œ์Šคํ…œ์€ ์›ํ•˜๋Š” ์ƒํƒœ๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ง€์†์ ์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค.

 

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ์ด ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ด์šฉํ•œ๋‹ค.

 

๊ฑฐ์˜ ๋ชจ๋“  ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์˜ค๋ธŒ์ ํŠธ๋Š” ์˜ค๋ธŒ์ ํŠธ ๊ตฌ์„ฑ์„ ๊ฒฐ์ •ํ•ด์ฃผ๋Š” ๋‘ ๊ฐœ์˜ ์ค‘์ ‘๋œ ์˜ค๋ธŒ์ ํŠธ ํ•„๋“œ์ธ status์™€ spec๋ฅผ ํฌํ•จํ•œ๋‹ค. 

  • status : ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์‹œ์Šคํ…œ๊ณผ ์ปดํฌ๋„ŒํŠธ์— ์˜ํ•ด ์ œ๊ณต๋˜๊ณ  ์—…๋ฐ์ดํŠธ๋œ ์˜ค๋ธŒ์ ํŠธ์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์„ค๋ช… 
  • spec : ์˜ค๋ธŒ์ ํŠธ์˜ ํŠน์„ฑ์œผ๋กœ ์ถ”๊ตฌํ•˜๋Š” ์ƒํƒœ๋ฅผ ์„ค๋ช… ์ปจํŠธ๋กค๋Ÿฌ๋Š” status๊ฐ€ spec๊ณผ ์ผ์น˜ํ•˜๋„๋ก ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ƒ์„ฑ/์‚ญ์ œํ•œ๋‹ค.

 

 

 

 

๊ธฐ๋ณธ ์˜ค๋ธŒ์ ํŠธ

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์— ์˜ํ•ด ๋ฐฐํฌ ๋ฐ ๊ด€๋ฆฌ๋˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ 4๊ฐ€์ง€ ์กด์žฌํ•œ๋‹ค. 

  • pod 
  • service 
  • volume
  • namespace

 

 

 

Pod

ํŒŒ๋“œ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฐํฌ ๋‹จ์œ„๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํฌํ•จํ•˜๋Š” ๋‹จ์œ„์ด๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ํŠน์ง• ์ค‘ ํ•˜๋‚˜๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ํ•˜๋‚˜์”ฉ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ํŒŒ๋“œ ๋‹จ์œ„๋กœ ๋ฐฐํฌํ•œ๋‹ค. ์ด๋•Œ ํŒŒ๋“œ๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํฌํ•จํ•œ๋‹ค.

 

Pod๋ฅผ ์ƒ์„ฑํ•  ๋•Œ Container, Label, Node Schedule์— ๋Œ€ํ•œ ๊ฐœ๋…์ด ํ•„์š”ํ•˜๋‹ค. 

 

ํŒŒ๋“œ ๋‚ด ์ปจํ…Œ์ด๋„ˆ๋Š” ์ค‘๋ณต๋œ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. 

apiVersion: v1
kind: Pod
metadata:
 name: pod-1
spec:
 containers:
 - name: container1
   image: tmkube/p8000
   ports:
   - containerPort: 8000
 - name: container2
   image: tmkube/p8080
   ports:
   - containerPort: 8080

 

์œ„๋Š” Pod๋ฅผ ์ƒ์„ฑํ•˜๋Š” yml ํŒŒ์ผ ์˜ˆ์‹œ์ด๋‹ค. ํ•˜๋‚˜์˜ Pod์— containerPort๊ฐ€ ๋™์ผํ•˜๋‹ค๋ฉด ์ƒ์„ฑ ์‹œ์— ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.   

Label์€ ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์ด๋‹ค. ๋ผ๋ฒจ์€ ํŠน์ • ๋ฆฌ์†Œ์Šค๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ์กฐ์งํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. 

 

์•„๋ž˜์˜ ์˜ˆ์ œ์—์„  Service๋ฅผ ์ƒ์„ฑํ•  ๋•Œ Pod๋“ค์„ ๋ฌถ์–ด ์ƒ์„ฑํ•˜๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

apiVersion: v1
kind: Service
metadata:
  name: svc-1
spec:
  selector:
    type: web
  ports:
    - port: 8080

 

 

label์˜ ์ง€์ •์€ ์•„๋ž˜์™€ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜๋‚˜์˜ Pod์— Label์€ ์—ฌ๋Ÿฌ ๊ฐœ ์ง€์ • ๊ฐ€๋Šฅํ•˜๋‹ค.

apiVersion: v1
kind: Pod
metadata:
  name: pod-2
  labels:
    type: web
    lo: dev
spec:
  containers:
  - name: container
    image: tmkube/init

 

 

Pod๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์–ด๋”” Node์— ์ƒ์„ฑํ•  ์ง€๋„ ์ •ํ•ด์•ผ ํ•œ๋‹ค. 

์ง์ ‘ ์ง€์ • ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ์ž์› ์š”์†Œ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์ž๋™์œผ๋กœ ์ง€์ •ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์ด ์žˆ๋‹ค. ์ž๋™ ์ง€์ •์€ Node Schedule์ด ์ˆ˜ํ–‰ํ•ด์ค€๋‹ค. 

 

์ง์ ‘ ์ง€์ •์˜ ์˜ˆ์‹œ yml ์ด๋‹ค. nodeSelector์˜ hostname์— node์ด๋ฆ„์„ ์ง€์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

apiVersion: v1
kind: Pod
metadata:
 name: pod-3
spec:
 nodeSelector:
  hostname: node1
 containers:
 - name: container
   image: tmkube/init

 

 

๋”ฐ๋กœ hostname์„ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  requests ์˜ต์…˜์„ ์ฃผ๋ฉด Node Schedule์ด ๊ฐ Node๋“ค์˜ ๋ฆฌ์†Œ์Šค ํ˜„ํ™ฉ์„ ํŒŒ์•…ํ•œ ํ›„ ๊ฐ€์žฅ ์ ์ ˆํ•œ Node์— Pod๋ฅผ ์ƒ์„ฑํ•ด์ค€๋‹ค. 

apiVersion: v1
kind: Pod
metadata:
  name: pod-4
spec:
  containers:
  - name: container
    image: tmkube/init
    resources:
      requests:
        memory: 2Gi
      limits:
        memory: 3Gi

 

 

 

 

 

Service

์„œ๋น„์Šค๋Š” ํŒŒ๋“œ ์ง‘ํ•ฉ์—์„œ ์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค๋กœ ๋…ธ์ถœํ•˜๋Š” ์ถ”์ƒํ™” ๋ฐฉ๋ฒ•์ด๋‹ค. ํŒŒ๋“œ๋Š” ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๊ด€๋ฆฌํ•˜๋ฏ€๋กœ ๊ณ ์ •๋˜์–ด ์žˆ์ง€ ์•Š๊ณ  ํด๋Ÿฌ์Šคํ„ฐ ์•ˆ์„ ์˜ฎ๊ฒจ ๋‹ค๋‹Œ๋‹ค. ์ด ๊ณผ์ •์—์„œ ๋…ธ๋“œ๋ฅผ ์˜ฎ๊ฒจ ๋‹ค๋‹ˆ๋ฉฐ ์‹คํ–‰๋˜๊ธฐ๋„ ํ•˜๊ณ  ํด๋Ÿฌ์Šคํ„ฐ ์•ˆ ํŒŒ๋“œ์˜ IP๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ณ  ํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ๋™์ ์œผ๋กœ ๋ณ€ํ•˜๋Š” ํŒŒ๋“œ๋“ค์— ๊ณ ์ •์ ์œผ๋กœ ์ ‘๊ทผํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ์„œ๋น„์Šค์ด๋‹ค. ์„œ๋น„์Šค๋Š” ํŒŒ๋“œ์—๊ฒŒ ๊ณ ์œ ํ•œ IP ์ฃผ์†Œ์™€ ํŒŒ๋“œ ์ง‘ํ•ฉ์— ๋Œ€ํ•œ ๋‹จ์ผ DNS ๋ช…์„ ๋ถ€์—ฌํ•˜์—ฌ ํŒŒ๋“œ๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ ์•ˆ ์–ด๋””์— ์žˆ๋“  ๊ณ ์ • ์ฃผ์†Œ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

Service์—” 3๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค.

 

1. ClusterIP

์™ธ๋ถ€์—์„œ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋น„์Šค ๋””๋ฒ„๊น…, ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž ์—ฐ๊ฒฐ ๋“ฑ์— ์‚ฌ์šฉ๋œ๋‹ค.

 

 

2. NodePort

์™ธ๋ถ€์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค. ํ•˜์ง€๋งŒ Prodํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•˜์ง„ ์•Š๊ณ  ์ž„์‹œ๋กœ ์—ฐ๊ฒฐ์„ ํ—ˆ์šฉํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์ฆ‰ ๋ฐ๋ชจ๋‚˜ ์ž„์‹œ ์—ฐ๊ฒฐ ์šฉ์ด๋‹ค.

 

 

type์— ์–ด๋–ค Service์ธ์ง€ ์ง€์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ์ฃผ์˜ํ•ด์•ผํ•  ์ ์€ ๋ชจ๋“  Node์— ๋™์ผํ•œ Port๋ฅผ ํ• ๋‹นํ•œ๋‹ค. 

๋˜ํ•œ ์ด Service๋Š” ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ ๋˜ํ•œ ์ง€์›ํ•œ๋‹ค. ํ•˜์ง€๋งŒ externalTrafficPolicy: Local ์„ ์ง€์ •ํ•ด์ฃผ๋ฉด ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ์„ ์ง€์›ํ•˜์ง€ ์•Š๊ณ  ์ง€์ •ํ•œ ๊ณณ์œผ๋กœ๋งŒ ํŠธ๋ž˜ํ”ฝ์„ ๋ณด๋‚ผ ์ˆ˜๋„ ์žˆ๋‹ค.  

apiVersion: v1
kind: Service
metadata:
 name: svc-2
spec:
 selector:
    app: pod
 ports:
   - port: 9000
     targetPort: 8080
     nodePort: 30000
 type: NodePort

 

 

 

3. Load Balancer

์‹ค์ œ ์šด์˜ ํ™˜๊ฒฝ์—์„  ์ด Service๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

์™ธ๋ถ€ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ณ  ๊ฐ๊ฐ์˜ ๋…ธ๋“œ์— ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ์„ ์ง€์›ํ•œ๋‹ค.

๊ฐœ์ธ ์‹ค์Šต ํ™˜๊ฒฝ์—์„  ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ณ , GCP, AWS, Azure, OpenStack๋“ฑ์„ ์ด์šฉํ•  ๋•Œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

 

 

 

 

 

Volume

์ปจํ…Œ์ด๋„ˆ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒํƒœ๊ฐ€ ์—†๋Š” ์•ฑ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ƒํƒœ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์€ ์ปจํ…Œ์ด๋„ˆ ํ˜น์€ ๋…ธ๋“œ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒˆ๋กœ ์‹คํ–‰ํ–ˆ์„ ๋•Œ ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ ์ž์œ ๋กญ๊ฒŒ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค. 

์ด๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ์žฅ์ ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์‚ญ์ œ๋œ๋‹ค๋ฉด ํ˜„์žฌ๊นŒ์ง€ ์ €์žฅํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์ง„๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. 

์•ฑ์˜ ํŠน์„ฑ์— ๋”ฐ๋ผ ์ปจํ…Œ์ด๋„ˆ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์กดํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธฐ๋Š”๋ฐ, ์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ณผ๋ฅจ์ด๋‹ค. ๋ณผ๋ฅจ์€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žฌ์‹œ์ž‘ํ•˜๋”๋ผ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•œ๋‹ค.

 

 

Volume์˜ ์ข…๋ฅ˜์—” emptyDir, hostPath, PVC/PV๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ConfigMap๊ณผ Secret๋„ ์†Œ๊ฐœํ•˜๋ ค ํ•œ๋‹ค. 

 

 

emptyDir

ํŒŒ๋“œ๊ฐ€ ๋…ธ๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ์ƒ์„ฑ๋˜๋Š” ์ž„์‹œ ๋ณผ๋ฅจ์ด๋‹ค. Pod๊ฐ€ ์žฌ์ƒ์„ฑ๋˜๋ฉด ๋ณผ๋ฅจ๋„ ์‚ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ผ์‹œ์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. 

 

 

HostPath

ํ˜ธ์ŠคํŠธ ๋…ธ๋“œ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฒฝ๋กœ์— ํŒŒ๋“œ๋ฅผ ๋งˆ์šดํŠธํ•œ๋‹ค. ํ˜ธ์ŠคํŠธ ๋…ธ๋“œ์˜ ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ์— ์ ‘๊ทผํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. 

ex) ๋กœ๊ทธ ํŒŒ์ผ ๊ณต์œ 

 

 

PVC/PV

ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ๊ด€๋ฆฌ๋˜๋Š” ์Šคํ† ๋ฆฌ์ง€ ๋ฆฌ์Šค์†Œ์˜๋‹ค. PVC๋Š” ํŒŒ๋“œ๊ฐ€ ์š”์ฒญํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ •์˜ํ•œ๋‹ค. 

 

 

ConfigMap

์„ค์ • ๋ฐ์ดํ„ฐ๋ฅผ ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ์ €์žฅํ•˜๊ณ  ํŒŒ๋“œ์— ๋งˆ์šดํŠธํ•œ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ค์ • ์ •๋ณด๋ฅผ ์™ธ๋ถ€์—์„œ ๊ด€๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

 

Secret

๋น„๋ฐ€๋ฒˆํ˜ธ, ํ† ํฐ, ํ‚ค ๋“ฑ์˜ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ํŒŒ๋“œ์— ๋งˆ์šดํŠธํ•œ๋‹ค. ์ธ์ฝ”๋”ฉ ๋””์ฝ”๋”ฉ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค. 

 

 

 

 

 

Namespace

๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ ํ•˜๋‚˜๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…ผ๋ฆฌ์ ์ธ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ ์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํŒŒ๋“œ์™€ ์„œ๋น„์Šค๋“ฑ์€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ณ„๋กœ ์ƒ์„ฑ์ด๋‚˜ ๊ด€๋ฆฌ๊ฐ€ ๋  ์ˆ˜ ์žˆ๊ณ , ์‚ฌ์šฉ์ž ๊ถŒํ•œ ์—ญ์‹œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ณ„๋กœ ๋‚˜๋ˆ ์„œ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋™์ผํ•œ Namespace๋ผ๋ฉด Pod์˜ ์ด๋ฆ„์€ ์œ ์ผํ•ด์•ผ ํ•˜์ง€๋งŒ ๋‘ ๊ฐœ์˜ ๋‹ค๋ฅธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ ๊ฐ๊ฐ ๋™์ผํ•œ ์ด๋ฆ„์˜ ํŒŒ๋“œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ณ„๋กœ ๋ฆฌ์†Œ์Šค ํ• ๋‹น๋Ÿ‰(Resource Quota)๊ณผ ์ œํ•œ(Limit Range)์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” CPU, ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ œํ•œํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

Namespace์˜ ์ƒ์„ฑ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ๋‹ค. 

apiVersion: v1
kind: Namespace
metadata:
  name: nm-1

 

 

์ด๋ ‡๊ฒŒ ์ƒ์„ฑ๋œ Namespace๋Š” Pod์ƒ์„ฑ ์‹œ ์ง€์ •ํ•˜์—ฌ Pod๋ฅผ ์–ด๋–ค Namespace์— ๋„ฃ์„ ์ง€ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. 

apiVersion: v1
kind: Pod
metadata:
  name: pod-1
  namespace: nm-1
  labels:
    nm: pod1
spec:
  containers:
  ...

 

 

 

 

ResourceQuota์™€ LimitRange์˜ ์„ค์ • ๋ฐฉ๋ฒ•์€ ๊ฐ๊ฐ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. 

 

- ResourceQuota

apiVersion: v1
kind: ResourceQuota
metadata:
  name: rq-1
  namespace: nm-1
spec:
  hard:
    requests.memory: 3Gi
    limits.memory: 6Gi

 

 

- LimitRange

apiVersion: v1
kind: LimitRange
metadata:
  name: lr-1
  namespace: nm-1
spec:
  limits:
  - type: Container
    min:
      memory: 1Gi
    max:
      memory: 4Gi
    defaultRequest:
      memory: 1Gi
    default:
      memroy: 2Gi
    maxLimitRequestRatio:
      memory: 3