๋กœ์ผ“๐Ÿพ
article thumbnail
์ด ๊ธ€์€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ณต๋ถ€ํ•œ ํ”์ ์„ ๋‚จ๊ธฐ๊ธฐ ์œ„ํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

 

๊ธฐ๋ณธ ์˜ค๋ธŒ์ ํŠธ๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ•œ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ณ ์ž ๊ธฐ๋ณธ ์˜ค๋ธŒ์ ํŠธ ์™ธ ๋‹ค์–‘ํ•œ ์˜ค๋ธŒ์ ํŠธ๋“ค์ด ์กด์žฌํ•˜๋Š”๋ฐ ์ด๋ฒˆ์—” ๋””ํ”Œ๋กœ์ด๋จผํŠธ ์˜ค๋ธŒ์ ํŠธ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๋””ํ”Œ๋กœ์ด๋จผํŠธ

๋””ํ”Œ๋กœ์ด๋จผํŠธ๋Š” ํ•œ๋งˆ๋””๋กœ ํŒŒ๋“œ + ๋ ˆํ”Œ๋ฆฌ์นด์…‹์ž…๋‹ˆ๋‹ค.

 

* ์ฐธ๊ณ  : ๋ ˆํ”Œ๋ฆฌ์นด์…‹์€ ํŒŒ๋“œ์˜ ์ˆ˜๋ฅผ ๋ณด์žฅํ•ด์ฃผ๋Š” ์˜ค๋ธŒ์ ํŠธ์ž…๋‹ˆ๋‹ค.

 

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์—์„œ์˜ API ์„œ๋ฒ„์™€ ์ปจํŠธ๋กค๋Ÿฌ ๋งค๋‹ˆ์ €๋Š” ๋‹จ์ˆœํžˆ ํŒŒ๋“œ์˜ ๊ฐ์‹œ๊ฐ€ ์•„๋‹Œ ๋””ํ”Œ๋กœ์ด๋จผํŠธ์ฒ˜๋Ÿผ ๋‹ค์–‘ํ•œ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ฐ์‹œํ•ฉ๋‹ˆ๋‹ค.

 

๋””ํ”Œ๋กœ์ด๋จผํŠธ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด๋กœ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ create, apply ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

๋””ํ”Œ๋กœ์ด๋จผํŠธ๋กœ ์ƒ์„ฑํ•œ ํŒŒ๋“œ๋ฅผ ๋Š˜๋ฆฌ๊ณ  ์‹ถ์œผ๋ฉด scale ๋ช…๋ น์–ด๋ฅผ ๋‹ค์‹œ ์ณ์•ผํ•˜์ง€๋งŒ yaml์„ ์‚ฌ์šฉํ•˜์—ฌ ๋””ํ”Œ๋กœ์ด๋จผํŠธ์˜ spec์„ ์ •ํ•ด์ฃผ๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ ์›ํ•˜๋Š”๋Œ€๋กœ ๋””ํ”Œ๋กœ์ด๋จผํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

yaml ์ž‘์„ฑ์ด ์ข€ ๋ณต์žกํ•˜๊ธด ํ•˜์ง€๋งŒ ๋””ํ”Œ๋กœ์ด๋จผํŠธ๋ฅผ ์œ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


yaml์œผ๋กœ ๋””ํ”Œ๋กœ์ด๋จผํŠธ spec ์ž‘์„ฑํ•˜๊ธฐ

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

 

์ด ์˜ˆ์‹œ์— ๋Œ€ํ•œ ์„ค๋ช…์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • .metadata.name ํ•„๋“œ์— ๋”ฐ๋ผ nginx-deployment ์ด๋ฆ„์œผ๋กœ ๋””ํ”Œ๋กœ์ด๋จผํŠธ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.
  • .spec.replicas ํ•„๋“œ์— ๋”ฐ๋ผ ๋””ํ”Œ๋กœ์ด๋จผํŠธ๋Š” 3๊ฐœ์˜ ๋ ˆํ”Œ๋ฆฌ์นด ํŒŒ๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • .spec.selector ํ•„๋“œ๋Š” ๋””ํ”Œ๋กœ์ด๋จผํŠธ๊ฐ€ ๊ด€๋ฆฌํ•  ํŒŒ๋“œ๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•œ๋‹ค. ์ด ์‚ฌ๋ก€์—์„œ๋Š” ํŒŒ๋“œ ํ…œํ”Œ๋ฆฟ์— ์ •์˜๋œ ๋ ˆ์ด๋ธ”(app: nginx)์„ ์„ ํƒํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํŒŒ๋“œ ํ…œํ”Œ๋ฆฟ ์ž์ฒด์˜ ๊ทœ์น™์ด ๋งŒ์กฑ๋˜๋Š” ํ•œ, ๋ณด๋‹ค ์ •๊ตํ•œ ์„ ํƒ ๊ทœ์น™์˜ ์ ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ถ”๊ฐ€๋กœ .metadata.labels์˜ app์€ ํ–ฅํ›„ ์–ด๋Š ๋ฆฌ์†Œ์Šค๊ฐ€ ์ด app ๊ฐ’์„ ๋””ํ”Œ๋กœ์ด๋จผํŠธ๋ฅผ ์ฐธ๊ณ ํ•˜๋ คํ• ๋•Œ ํ•„์š”ํ•œ ๊ฐ’์„ ์ง€์ •ํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๊ณ , .spec.selector.matchLabels์˜ app์€ .spec.template.metadata.labels์˜ app์„ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

.spec.template.metadata.labels์˜ app์„ ์ง€์ •ํ•ด์คŒ์œผ๋กœ์จ .selector.matchLabels์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

์ฐธ๊ณ : 
.spec.selector.matchLabels ํ•„๋“œ๋Š” {key,value}์˜ ์Œ์œผ๋กœ ๋งคํ•‘๋˜์–ด์žˆ๋‹ค. matchLabels ์— ๋งคํ•‘๋œ ๋‹จ์ผ {key,value}์€ matchExpressions ์˜ ์š”์†Œ์— ํ•ด๋‹นํ•˜๋ฉฐ, key ํ•„๋“œ๋Š” "key"์— ๊ทธ๋ฆฌ๊ณ  operator๋Š” "In"์— ๋Œ€์‘๋˜๋ฉฐ value ๋ฐฐ์—ด์€ "value"๋งŒ ํฌํ•จํ•œ๋‹ค. ๋งค์นญ์„ ์œ„ํ•ด์„œ๋Š” matchLabels ์™€ matchExpressions ์˜ ๋ชจ๋“  ์š”๊ฑด์ด ์ถฉ์กฑ๋˜์–ด์•ผ ํ•œ๋‹ค.
  • template ํ•„๋“œ์—๋Š” ๋‹ค์Œ ํ•˜์œ„ ํ•„๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด์žˆ๋‹ค.
    • ํŒŒ๋“œ๋Š” .metadata.labels ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ app: nginx ๋ผ๋Š” ๋ ˆ์ด๋ธ”์„ ๋ถ™์ธ๋‹ค.
    • ํŒŒ๋“œ ํ…œํ”Œ๋ฆฟ์˜ ์‚ฌ์–‘ ๋˜๋Š” .template.spec ํ•„๋“œ๋Š” ํŒŒ๋“œ๊ฐ€ ๋„์ปค ํ—ˆ๋ธŒ์˜ nginx 1.14.2 ๋ฒ„์ „ ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•˜๋Š” nginx ์ปจํ…Œ์ด๋„ˆ 1๊ฐœ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
    • ์ปจํ…Œ์ด๋„ˆ 1๊ฐœ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , .spec.template.spec.containers[0].name ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ nginx ์ด๋ฆ„์„ ๋ถ™์ธ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์‹œ์ž‘๋˜๊ณ  ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธํ•œ๋‹ค. ์œ„์˜ ๋””ํ”Œ๋กœ์ด๋จผํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋งํฌ๋ฅผ ๋”ฐ๋ฅธ๋‹ค.

 

 

 

๋””ํ”Œ๋กœ์ด๋จผํŠธ

๋””ํ”Œ๋กœ์ด๋จผํŠธ(Deployment) ๋Š” ํŒŒ๋“œ์™€ ๋ ˆํ”Œ๋ฆฌ์นด์…‹(ReplicaSet)์— ๋Œ€ํ•œ ์„ ์–ธ์  ์—…๋ฐ์ดํŠธ๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ๋””ํ”Œ๋กœ์ด๋จผํŠธ์—์„œ ์˜๋„ํ•˜๋Š” ์ƒํƒœ ๋ฅผ ์„ค๋ช…ํ•˜๊ณ , ๋””ํ”Œ๋กœ์ด๋จผํŠธ ์ปจํŠธ๋กค๋Ÿฌ(Controller)๋Š” ํ˜„์žฌ ์ƒํƒœ์—์„œ ์˜

kubernetes.io

profile on loading

Loading...