ํ•ด๋‹น ๋ฌธ์„œ์˜ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฒ„์ „: v1.30

Kubernetes v1.30 ๋ฌธ์„œ๋Š” ๋” ์ด์ƒ ์ ๊ทน์ ์œผ๋กœ ๊ด€๋ฆฌ๋˜์ง€ ์•Š์Œ. ํ˜„์žฌ ๋ณด๊ณ ์žˆ๋Š” ๋ฌธ์„œ๋Š” ์ •์  ์Šค๋ƒ…์ƒท์ž„. ์ตœ์‹  ๋ฌธ์„œ๋ฅผ ์œ„ํ•ด์„œ๋Š”, ๋‹ค์Œ์„ ์ฐธ๊ณ . ์ตœ์‹  ๋ฒ„์ „.

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜์ปจํŠธ๋กค๋Ÿฌ ๋Š” ์–ธ์ œ๋“ ์ง€ ์ง€์ •๋œ ์ˆ˜์˜ ํŒŒ๋“œ ๋ ˆํ”Œ๋ฆฌ์นด๊ฐ€ ์‹คํ–‰ ์ค‘์ž„์„ ๋ณด์žฅํ•œ๋‹ค. ๋‹ค์‹œ ๋งํ•˜๋ฉด, ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ํŒŒ๋“œ ๋˜๋Š” ๋™์ผ ์ข…๋ฅ˜์˜ ํŒŒ๋“œ์˜ ์…‹์ด ํ•ญ์ƒ ๊ธฐ๋™๋˜๊ณ  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•œ๋‹ค.

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ์˜ ๋™์ž‘๋ฐฉ์‹

ํŒŒ๋“œ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์œผ๋ฉด ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ถ”๊ฐ€์ ์ธ ํŒŒ๋“œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค. ๋„ˆ๋ฌด ์ ์œผ๋ฉด ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋” ๋งŽ์€ ํŒŒ๋“œ๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค. ์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑ๋œ ํŒŒ๋“œ์™€ ๋‹ฌ๋ฆฌ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ํŒŒ๋“œ๋Š” ์‹คํŒจํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œ๋˜๊ฑฐ๋‚˜ ์ข…๋ฃŒ๋˜๋Š” ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ๊ต์ฒด๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ปค๋„ ์—…๊ทธ๋ ˆ์ด๋“œ์™€ ๊ฐ™์ด ํŒŒ๊ดด์ ์ธ ์œ ์ง€ ๋ณด์ˆ˜ ์ž‘์—…์„ ํ•˜๊ณ  ๋‚œ ์ดํ›„์˜ ๋…ธ๋“œ์—์„œ ํŒŒ๋“œ๊ฐ€ ๋‹ค์‹œ ์ƒ์„ฑ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•˜๋‚˜์˜ ํŒŒ๋“œ๋งŒ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋„ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐ์‹œ์ž(supervisor)์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ๋‹จ์ผ ๋…ธ๋“œ์—์„œ ๊ฐœ๋ณ„ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ์‹œํ•˜๋Š” ๋Œ€์‹  ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์—ฌ๋Ÿฌ ๋…ธ๋“œ์—์„œ ์—ฌ๋Ÿฌ ํŒŒ๋“œ๋ฅผ ๊ฐ์‹œํ•œ๋‹ค.

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋””์Šค์ปค์…˜์—์„œ ์ข…์ข… "rc"๋กœ ์ถ•์•ฝ๋˜๋ฉฐ kubectl ๋ช…๋ น์—์„œ ์ˆ์ปท์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

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

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ ์˜ˆ์ œ ์‹คํ–‰

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ ์˜ˆ์ œ์˜ config๋Š” nginx ์›น์„œ๋ฒ„์˜ ๋ณต์‚ฌ๋ณธ ์„ธ ๊ฐœ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

apiVersion: v1
kind: ReplicationController
metadata:
  name: nginx
spec:
  replicas: 3
  selector:
    app: nginx
  template:
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

์˜ˆ์ œ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•œ ํ›„ ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ์˜ˆ์ œ ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋ผ.

kubectl apply -f https://k8s.io/examples/controllers/replication.yaml

์ถœ๋ ฅ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

replicationcontroller/nginx created

๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜์ž.

kubectl describe replicationcontrollers/nginx

์ถœ๋ ฅ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Name:        nginx
Namespace:   default
Selector:    app=nginx
Labels:      app=nginx
Annotations:    <none>
Replicas:    3 current / 3 desired
Pods Status: 0 Running / 3 Waiting / 0 Succeeded / 0 Failed
Pod Template:
  Labels:       app=nginx
  Containers:
   nginx:
    Image:              nginx
    Port:               80/TCP
    Environment:        <none>
    Mounts:             <none>
  Volumes:              <none>
Events:
  FirstSeen       LastSeen     Count    From                        SubobjectPath    Type      Reason              Message
  ---------       --------     -----    ----                        -------------    ----      ------              -------
  20s             20s          1        {replication-controller }                    Normal    SuccessfulCreate    Created pod: nginx-qrm3m
  20s             20s          1        {replication-controller }                    Normal    SuccessfulCreate    Created pod: nginx-3ntk0
  20s             20s          1        {replication-controller }                    Normal    SuccessfulCreate    Created pod: nginx-4ok8v

์ด์ œ ์„ธ ๊ฐœ์˜ ํŒŒ๋“œ๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์œผ๋‚˜ ์•„์ง ์ด๋ฏธ์ง€๊ฐ€ ํ’€(pull)๋˜์ง€ ์•Š์•„์„œ ์–ด๋–ค ํŒŒ๋“œ๋„ ์‹œ์ž‘๋˜์ง€ ์•Š์•˜๋‹ค. ์กฐ๊ธˆ ์ง€๋‚œ ํ›„์— ๊ฐ™์€ ๋ช…๋ น์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ผ ๊ฒƒ์ด๋‹ค.

Pods Status:    3 Running / 0 Waiting / 0 Succeeded / 0 Failed

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ์— ์†ํ•œ ๋ชจ๋“  ํŒŒ๋“œ๋ฅผ ๋จธ์‹ ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ํ˜•์‹์œผ๋กœ ๋‚˜์—ดํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

pods=$(kubectl get pods --selector=app=nginx --output=jsonpath={.items..metadata.name})
echo $pods

์ถœ๋ ฅ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

nginx-3ntk0 nginx-4ok8v nginx-qrm3m

์—ฌ๊ธฐ์„œ ์…€๋ ‰ํ„ฐ๋Š” ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜์ปจํŠธ๋กค๋Ÿฌ(kubectl describe ์˜ ์ถœ๋ ฅ์—์„œ ๋ณด์ธ)์˜ ์…€๋ ‰ํ„ฐ์™€ ๊ฐ™๊ณ , ๋‹ค๋ฅธ ํ˜•์‹์˜ ํŒŒ์ผ์ธ replication.yaml ์˜ ๊ฒƒ๊ณผ ๋™์ผํ•˜๋‹ค. --output=jsonpath ์€ ๋ฐ˜ํ™˜๋œ ๋ชฉ๋ก์˜ ๊ฐ ํŒŒ๋“œ์˜ ์ด๋ฆ„์„ ์ถœ๋ ฅํ•˜๋„๋ก ํ•˜๋Š” ์˜ต์…˜์ด๋‹ค.

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ์˜ Spec ์ž‘์„ฑ

๋‹ค๋ฅธ ๋ชจ๋“  ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ปจํ”ผ๊ทธ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” apiVersion, kind, metadata ์™€ ๊ฐ™์€ ํ•„๋“œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ ์˜ค๋ธŒ์ ํŠธ์˜ ์ด๋ฆ„์€ ์œ ํšจํ•œ DNS ์„œ๋ธŒ๋„๋ฉ”์ธ ์ด๋ฆ„์ด์–ด์•ผ ํ•œ๋‹ค. ํ™˜๊ฒฝ์„ค์ • ํŒŒ์ผ์˜ ๋™์ž‘์— ๊ด€๋ จ๋œ ์ผ๋ฐ˜์ ์ธ ์ •๋ณด๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์˜ค๋ธŒ์ ํŠธ ๊ด€๋ฆฌ๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค.

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋˜ํ•œ .spec section๋„ ํ•„์š”ํ•˜๋‹ค.

ํŒŒ๋“œ ํ…œํ”Œ๋ฆฟ

.spec.template ๋Š” ์˜ค์ง .spec ํ•„๋“œ์—์„œ ์š”๊ตฌ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

.spec.template ๋Š” ํŒŒ๋“œ ํ…œํ”Œ๋ฆฟ์ด๋‹ค. ์ •ํ™•ํ•˜๊ฒŒ ํŒŒ๋“œ ์Šคํ‚ค๋งˆ์™€ ๋™์ผํ•˜๋‚˜, ์ค‘์ฒฉ๋˜์–ด ์žˆ๊ณ  apiVersion ํ˜น์€ kind๋ฅผ ๊ฐ–์ง€ ์•Š๋Š”๋‹ค.

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

์˜ค์ง Always ์™€ ๋™์ผํ•œ .spec.template.spec.restartPolicy๋งŒ ํ—ˆ์šฉ๋˜๋ฉฐ, ํŠน๋ณ„ํžˆ ์ง€์ •๋˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’์ด๋‹ค.

๋กœ์ปฌ ์ปจํ…Œ์ด๋„ˆ์˜ ์žฌ์‹œ์ž‘์˜ ๊ฒฝ์šฐ, ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋…ธ๋“œ์˜ ์—์ด์ „ํŠธ์—๊ฒŒ ์œ„์ž„ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Kubelet์ด๋‹ค.

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๋ ˆ์ด๋ธ”

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ ์ž์ฒด๋Š” ๋ ˆ์ด๋ธ” (.metadata.labels) ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๊ฒƒ์„ .spec.template.metadata.labels ์™€ ๋™์ผํ•˜๊ฒŒ ์„ค์ •ํ•  ๊ฒƒ์ด๋‹ค. .metadata.labels ๊ฐ€ ์ง€์ •๋˜์–ด ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ, ๊ธฐ๋ณธ์€ .spec.template.metadata.labels ์ด๋‹ค. ํ•˜์ง€๋งŒ ๋ ˆ์ด๋ธ”์€ ๋‹ค๋ฅธ ๊ฒƒ์ด ํ—ˆ์šฉ๋˜๋ฉฐ, .metadata.labels ๋ผ๋ฒจ์€ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ์˜ ๋™์ž‘์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š”๋‹ค.

ํŒŒ๋“œ ์…€๋ ‰ํ„ฐ

.spec.selector ํ•„๋“œ๋Š” ๋ ˆ์ด๋ธ” ์…€๋ ‰ํ„ฐ์ด๋‹ค. ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์…€๋ ‰ํ„ฐ์™€ ์ผ์น˜ํ•˜๋Š” ๋ ˆ์ด๋ธ”์ด ์žˆ๋Š” ๋ชจ๋“  ํŒŒ๋“œ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. ์ง์ ‘ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œ๋œ ํŒŒ๋“œ์™€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด๋‚˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•œ ํŒŒ๋“œ๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‹คํ–‰์ค‘์ธ ํŒŒ๋“œ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค.

์ง€์ •๋œ ๊ฒฝ์šฐ .spec.template.metadata.labels ์€ .spec.selector ์™€ ๋™์ผํ•ด์•ผ ํ•˜๋ฉฐ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด API์— ์˜ํ•ด ๊ฑฐ๋ถ€๋œ๋‹ค. .spec.selector ๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’์€ .spec.template.metadata.labels ์ด๋‹ค.

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

์ค‘์ฒฉ๋œ ์…€๋ ‰ํ„ฐ๋“ค์„ ๊ฐ–๋Š” ๋‹ค์ˆ˜์˜ ์ปจํŠธ๋กค๋Ÿฌ๋“ค์„ ์ข…๋ฃŒํ•˜๊ฒŒ ๋˜๋ฉด, ์‚ญ์ œ๋œ ๊ฒƒ๋“ค์€ ์Šค์Šค๋กœ ๊ด€๋ฆฌ๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค (์•„๋ž˜๋ฅผ ์ฐธ์กฐ).

๋‹ค์ˆ˜์˜ ๋ ˆํ”Œ๋ฆฌ์นด

.spec.replicas ๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์€ ํŒŒ๋“œ์˜ ์ˆ˜๋กœ ์„ค์ •ํ•จ์œผ๋กœ์จ ์‹คํ–‰ํ•  ํŒŒ๋“œ์˜ ์ˆ˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ ˆํ”Œ๋ฆฌ์นด๊ฐ€ ์ฆ๊ฐ€ ๋˜๋Š” ๊ฐ์†Œํ•œ ๊ฒฝ์šฐ ๋˜๋Š” ํŒŒ๋“œ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜๊ณ  ๊ต์ฒด๊ฐ€ ์ผ์ฐ ์‹œ์ž‘๋˜๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด ์–ธ์ œ๋“ ์ง€ ์‹คํ–‰์ค‘์ธ ์ˆ˜๊ฐ€ ๋” ๋†’๊ฑฐ๋‚˜ ๋‚ฎ์„ ์ˆ˜ ์žˆ๋‹ค.

.spec.replicas ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’์€ 1์ด๋‹ค.

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ ์‚ฌ์šฉํ•˜๊ธฐ

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ์™€ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ์˜ ํŒŒ๋“œ ์‚ญ์ œ

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ์™€ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ชจ๋“  ํŒŒ๋“œ๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด kubectl delete ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ. Kubectl์€ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ 0์œผ๋กœ ์Šค์ผ€์ผํ•˜๊ณ  ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ ์ž์ฒด๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์ „์— ๊ฐ ํŒŒ๋“œ๋ฅผ ์‚ญ์ œํ•˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค. ์ด kubectl ๋ช…๋ น์ด ์ธํ„ฐ๋ŸฝํŠธ๋˜๋ฉด ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

REST API๋‚˜ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ช…์‹œ์ ์œผ๋กœ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค(๋ ˆํ”Œ๋ฆฌ์นด๋ฅผ 0์œผ๋กœ ์Šค์ผ€์ผํ•˜๊ณ  ํŒŒ๋“œ์˜ ์‚ญ์ œ๋ฅผ ๊ธฐ๋‹ค๋ฆฐ ์ดํ›„, ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์‚ญ์ œ).

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋งŒ ์‚ญ์ œ

ํ•ด๋‹น ํŒŒ๋“œ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

kubectl์„ ์‚ฌ์šฉํ•˜์—ฌ, kubectl delete์— ์˜ต์…˜์œผ๋กœ --cascade=orphan์„ ์ง€์ •ํ•˜๋ผ.

REST API๋‚˜ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์‚ญ์ œํ•˜๋ผ.

์›๋ณธ์ด ์‚ญ์ œ๋˜๋ฉด ๋Œ€์ฒดํ•  ์ƒˆ๋กœ์šด ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ค๋ž˜๋œ ํŒŒ๋“œ์™€ ์ƒˆ๋กœ์šด ํŒŒ๋“œ์˜ .spec.selector ๊ฐ€ ๋™์ผํ•˜๋‹ค๋ฉด, ์ƒˆ๋กœ์šด ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์˜ค๋ž˜๋œ ํŒŒ๋“œ๋ฅผ ์ฑ„ํƒํ•  ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ธฐ์กด ํŒŒ๋“œ๋ฅผ ์ƒˆ๋กœ์šด ํŒŒ๋“œ ํ…œํ”Œ๋ฆฟ๊ณผ ์ผ์น˜์‹œํ‚ค๋ ค๋Š” ๋…ธ๋ ฅ์€ ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. ์ƒˆ๋กœ์šด spec์— ๋Œ€ํ•œ ํŒŒ๋“œ๋ฅผ ์ œ์–ด๋œ ๋ฐฉ๋ฒ•์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๋กค๋ง ์—…๋ฐ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ.

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ํŒŒ๋“œ ๊ฒฉ๋ฆฌ

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

์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ๋ฒ• ํŒจํ„ด

๋‹ค์‹œ ์Šค์ผ€์ค„ํ•˜๊ธฐ

์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด, ์‹คํ–‰ํ•˜๋ ค๋Š” ํŒŒ๋“œ๊ฐ€ ํ•œ ๊ฐœ ํ˜น์€ 1000๊ฐœ์ด๋“  ๊ด€๊ณ„์—†์ด ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋…ธ๋“œ ์‹คํŒจ ๋˜๋Š” ํŒŒ๋“œ ์ข…๋ฃŒ์‹œ ์ง€์ •๋œ ์ˆ˜์˜ ํŒŒ๋“œ๊ฐ€ ์กด์žฌํ•˜๋„๋ก ๋ณด์žฅํ•œ๋‹ค (์˜ˆ : ๋‹ค๋ฅธ ์ œ์–ด ์—์ด์ „ํŠธ์— ์˜ํ•œ ๋™์ž‘์œผ๋กœ ์ธํ•ด).

์Šค์ผ€์ผ๋ง

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜์ปจํŠธ๋กค๋Ÿฌ๋Š” replicas ํ•„๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์—ฌ, ์ˆ˜๋™์œผ๋กœ ๋˜๋Š” ์˜คํ†  ์Šค์ผ€์ผ๋ง ์ œ์–ด ์—์ด์ „ํŠธ๋ฅผ ํ†ตํ•ด, ๋ ˆํ”Œ๋ฆฌ์นด์˜ ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

๋กค๋ง ์—…๋ฐ์ดํŠธ

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ํŒŒ๋“œ๋ฅผ ํ•˜๋‚˜์”ฉ ๊ต์ฒดํ•จ์œผ๋กœ์จ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ๋กค๋ง ์—…๋ฐ์ดํŠธ๋ฅผ ์‰ฝ๊ฒŒ ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค.

#1353์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ, ๊ถŒ์žฅ๋˜๋Š” ์ ‘๊ทผ๋ฒ•์€ 1 ๊ฐœ์˜ ๋ ˆํ”Œ๋ฆฌ์นด๋ฅผ ๊ฐ€์ง„ ์ƒˆ๋กœ์šด ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ƒˆ๋กœ์šด (+1) ์ปจํŠธ๋กค๋Ÿฌ ๋ฐ ์ด์ „ (-1) ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ์Šค์ผ€์ผํ•œ ํ›„ 0๊ฐœ์˜ ๋ ˆํ”Œ๋ฆฌ์นด๊ฐ€ ๋˜๋ฉด ์ด์ „ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์˜ค๋ฅ˜์™€ ์ƒ๊ด€์—†์ด ํŒŒ๋“œ ์„ธํŠธ๋ฅผ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ฒŒ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

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

๋‘ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋กค๋ง ์—…๋ฐ์ดํŠธ๋ฅผ ๋™๊ธฐํ™” ํ•˜๋Š” ์ด๋ฏธ์ง€ ์—…๋ฐ์ดํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์— ํŒŒ๋“œ์˜ ๊ธฐ๋ณธ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ํƒœ๊ทธ์™€ ๊ฐ™์ด ์ ์–ด๋„ ํ•˜๋‚˜์˜ ์ฐจ๋ณ„ํ™”๋œ ๋ ˆ์ด๋ธ”๋กœ ํŒŒ๋“œ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค.

๋‹ค์ˆ˜์˜ ๋ฆด๋ฆฌ์Šค ํŠธ๋ž™

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

์˜ˆ๋ฅผ ๋“ค์–ด, ์„œ๋น„์Šค๋Š” tier in (frontend), environment in (prod) ์ด ์žˆ๋Š” ๋ชจ๋“  ํŒŒ๋“œ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด์ œ ์ด ๊ณ„์ธต์„ ๊ตฌ์„ฑํ•˜๋Š” 10 ๊ฐœ์˜ ๋ณต์ œ๋œ ํŒŒ๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด์ž. ํ•˜์ง€๋งŒ ์ด ๊ตฌ์„ฑ ์š”์†Œ์˜ ์ƒˆ๋กœ์šด ๋ฒ„์ „์„ '์นด๋‚˜๋ฆฌ' ํ•˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค. ๋Œ€๋Ÿ‰์˜ ๋ ˆํ”Œ๋ฆฌ์นด์— ๋Œ€ํ•ด replicas ๋ฅผ 9๋กœ ์„ค์ •ํ•˜๊ณ  tier=frontend, environment=prod, track=stable ๋ ˆ์ด๋ธ”์„ ์„ค์ •ํ•œ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ์™€, ์นด๋‚˜๋ฆฌ์— replicas ๊ฐ€ 1๋กœ ์„ค์ •๋œ ๋‹ค๋ฅธ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ์— tier=frontend, environment=prod, track=canary ๋ผ๋Š” ๋ ˆ์ด๋ธ”์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด์ œ ์ด ์„œ๋น„์Šค๋Š” ์นด๋‚˜๋ฆฌ์™€ ์นด๋‚˜๋ฆฌ ์ด์™ธ์˜ ํŒŒ๋“œ ๋ชจ๋‘๋ฅผ ํฌํ•จํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋ณ„๋„๋กœ ์กฐ์ž‘ํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์ด ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ๋‹ค.

์„œ๋น„์Šค์™€ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜์ปจํŠธ๋กค๋Ÿฌ ์‚ฌ์šฉ

ํ•˜๋‚˜์˜ ์„œ๋น„์Šค ๋’ค์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ผ๋ถ€ ํŠธ๋ž˜ํ”ฝ์€ ์ด์ „ ๋ฒ„์ „์œผ๋กœ ์ด๋™ํ•˜๊ณ  ์ผ๋ถ€๋Š” ์ƒˆ ๋ฒ„์ „์œผ๋กœ ์ด๋™ํ•œ๋‹ค.

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜์ปจํŠธ๋กค๋Ÿฌ๋Š” ์ž์ฒด์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์ง€ ์•Š์ง€๋งŒ, ์„œ๋น„์Šค๋งŒํผ ์˜ค๋ž˜ ์ง€์†๋  ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€๋˜์ง€๋Š” ์•Š๋Š”๋‹ค. ์„œ๋น„์Šค๋Š” ์—ฌ๋Ÿฌ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜์ปจํŠธ๋กค๋Ÿฌ์— ์˜ํ•ด ์ œ์–ด๋˜๋Š” ํŒŒ๋“œ๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์„œ๋น„์Šค ๋ผ์ดํ”„์‚ฌ์ดํด ๋™์•ˆ(์˜ˆ๋ฅผ ๋“ค์–ด, ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ํŒŒ๋“œ ์—…๋ฐ์ดํŠธ ์ˆ˜ํ–‰์„ ์œ„ํ•ด) ๋งŽ์€ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ƒ์„ฑ ๋ฐ ์ œ๊ฑฐ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋œ๋‹ค. ์„œ๋น„์Šค ์ž์ฒด์™€ ํด๋ผ์ด์–ธํŠธ ๋ชจ๋‘ ํŒŒ๋“œ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์˜์‹ํ•˜์ง€ ์•Š๋Š” ์ƒํƒœ๋กœ ๋‚จ์•„ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ์— ์˜ํ•ด ์ƒ์„ฑ๋œ ํŒŒ๋“œ๋Š” ํ•ด๋‹น ๊ตฌ์„ฑ์ด ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์ด์งˆ์ ์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ท ์ผํ•˜๊ณ  ์˜๋ฏธ์ƒ ๋™์ผํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค. ์ด๋Š” ๋ ˆํ”Œ๋ฆฌ์นด๋œ ์ƒํƒœ ์Šคํ…Œ์ดํŠธ๋ฆฌ์Šค ์„œ๋ฒ„์— ์ ํ•ฉํ•˜์ง€๋งŒ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งˆ์Šคํ„ฐ ์„ ์ถœ, ์ƒค๋“œ ๋ฐ ์›Œํฌ-ํ’€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฐ€์šฉ์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. RabbitMQ work queues์™€ ๊ฐ™์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์•ˆํ‹ฐํŒจํ„ด์œผ๋กœ ๊ฐ„์ฃผ๋˜๋Š” ๊ฐ ํŒŒ๋“œ์˜ ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ์ •์ /์ผํšŒ์„ฑ ์‚ฌ์šฉ์ž ์ •์˜์™€ ๋ฐ˜๋Œ€๋กœ ๋™์  ์ž‘์—… ํ• ๋‹น ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๋ฆฌ์†Œ์Šค์˜ ์ˆ˜์ง ์ž๋™ ํฌ๊ธฐ ์กฐ์ • (์˜ˆ : CPU ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ)๊ณผ ๊ฐ™์€ ์ˆ˜ํ–‰๋œ ๋ชจ๋“  ํŒŒ๋“œ ์‚ฌ์šฉ์ž ์ •์˜๋Š” ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ ์ž์ฒด์™€ ๋‹ฌ๋ฆฌ ๋‹ค๋ฅธ ์˜จ๋ผ์ธ ์ปจํŠธ๋กค๋Ÿฌ ํ”„๋กœ์„ธ์Šค์— ์˜ํ•ด ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค.

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ฑ…์ž„

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์˜๋„ํ•œ ์ˆ˜์˜ ํŒŒ๋“œ๊ฐ€ ํ•ด๋‹น ๋ ˆ์ด๋ธ” ์…€๋ ‰ํ„ฐ์™€ ์ผ์น˜ํ•˜๊ณ  ๋™์ž‘ํ•˜๋Š”์ง€๋ฅผ ํ™•์ธํ•œ๋‹ค. ํ˜„์žฌ, ์ข…๋ฃŒ๋œ ํŒŒ๋“œ๋งŒ ํ•ด๋‹น ํŒŒ๋“œ์˜ ์ˆ˜์—์„œ ์ œ์™ธ๋œ๋‹ค. ํ–ฅํ›„ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” readiness ๋ฐ ๊ธฐํƒ€ ์ •๋ณด๊ฐ€ ๊ณ ๋ ค๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ต์ฒด ์ •์ฑ…์— ๋Œ€ํ•œ ํ†ต์ œ๋ฅผ ๋” ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ๊ณ  ์™ธ๋ถ€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž„์˜๋กœ ์ •๊ตํ•œ ๊ต์ฒด ๋˜๋Š” ์Šค์ผ€์ผ ๋‹ค์šด ์ •์ฑ…์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋‚ด๋ณด๋‚ผ ๊ณ„ํš์ด๋‹ค.

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์ด ์ข์€ ์ฑ…์ž„์— ์˜์›ํžˆ ์ œ์•ฝ์„ ๋ฐ›๋Š”๋‹ค. ๊ทธ ์ž์ฒด๋กœ๋Š” ์ค€๋น„์„ฑ ๋˜๋Š” ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. ์˜คํ†  ์Šค์ผ€์ผ๋ง์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋Œ€์‹ , ์™ธ๋ถ€ ์˜คํ†  ์Šค์ผ€์ผ๋Ÿฌ (#492์—์„œ ๋…ผ์˜๋œ)๊ฐ€ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ์˜ replicas ํ•„๋“œ๋ฅผ ๋ณ€๊ฒฝํ•จ์œผ๋กœ์จ ์ œ์–ด๋˜๋„๋ก ์˜๋„๋˜์—ˆ๋‹ค. ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ์— ์Šค์ผ€์ค„๋ง ์ •์ฑ… (์˜ˆ๋ฅผ ๋“ค์–ด spreading)์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. ์˜คํ† ์‚ฌ์ด์ง• ๋ฐ ๊ธฐํƒ€ ์ž๋™ํ™” ๋œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฐฉํ•ดํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ œ์–ด๋œ ํŒŒ๋“œ๊ฐ€ ํ˜„์žฌ ์ง€์ •๋œ ํ…œํ”Œ๋ฆฟ๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ธฐํ•œ ์™„๋ฃŒ, ์ˆœ์„œ ์ข…์†์„ฑ, ๊ตฌ์„ฑ ํ™•์žฅ ๋ฐ ๊ธฐํƒ€ ๊ธฐ๋Šฅ์€ ๋‹ค๋ฅธ ๊ณณ์— ์†ํ•œ๋‹ค. ๋Œ€๋Ÿ‰์˜ ํŒŒ๋“œ ์ƒ์„ฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜ (#170)๊นŒ์ง€๋„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์กฐํ•ฉ ๊ฐ€๋Šฅํ•œ ๋นŒ๋”ฉ-๋ธ”๋ก ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ๊ฐ€ ๋˜๋„๋ก ๊ณ ์•ˆ๋˜์—ˆ๋‹ค. ํ–ฅํ›„ ์‚ฌ์šฉ์ž์˜ ํŽธ์˜๋ฅผ ์œ„ํ•ด ๋” ์ƒ์œ„ ์ˆ˜์ค€์˜ API ๋ฐ/๋˜๋Š” ๋„๊ตฌ์™€ ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๋ณด์™„์ ์ธ ๊ธฐ๋ณธ ์š”์†Œ๊ฐ€ ๊ทธ ์œ„์— ๊ตฌ์ถ• ๋  ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•œ๋‹ค. ํ˜„์žฌ kubectl์ด ์ง€์›ํ•˜๋Š” "๋งคํฌ๋กœ" ์ž‘์—… (์‹คํ–‰, ์Šค์ผ€์ผ)์€ ๊ฐœ๋… ์ฆ๋ช…์˜ ์˜ˆ์‹œ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Asgard์™€ ๊ฐ™์ด ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ, ์˜คํ†  ์Šค์ผ€์ผ๋Ÿฌ, ์„œ๋น„์Šค, ์ •์ฑ… ์Šค์ผ€์ค„๋ง, ์นด๋‚˜๋ฆฌ ๋“ฑ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

API ์˜ค๋ธŒ์ ํŠธ

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค REST API์˜ ์ตœ์ƒ์œ„ ์ˆ˜์ค€์˜ ๋ฆฌ์†Œ์Šค์ด๋‹ค. API ์˜ค๋ธŒ์ ํŠธ์— ๋Œ€ํ•œ ๋” ์ž์„ธํ•œ ๊ฒƒ์€ ReplicationController API object ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ์˜ ๋Œ€์•ˆ

๋ ˆํ”Œ๋ฆฌ์นด์…‹

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

๋””ํ”Œ๋กœ์ด๋จผํŠธ (๊ถŒ์žฅ๋จ)

Deployment๋Š” ๊ธฐ๋ณธ ๋ ˆํ”Œ๋ฆฌ์นด์…‹๊ณผ ๊ทธ ํŒŒ๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์ƒ์œ„ ์ˆ˜์ค€์˜ API ์˜ค๋ธŒ์ ํŠธ์ด๋‹ค. ์„ ์–ธ์ ์ด๋ฉฐ, ์„œ๋ฒ„ ์‚ฌ์ด๋“œ์ด๊ณ , ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋กค๋ง ์—…๋ฐ์ดํŠธ ๊ธฐ๋Šฅ์„ ์›ํ•œ๋‹ค๋ฉด ๋””ํ”Œ๋กœ์ด๋จผํŠธ๋ฅผ ๊ถŒ์žฅํ•œ๋‹ค.

๋ฒ ์–ด ํŒŒ๋“œ

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

์žก

์ž์ฒด์ ์œผ๋กœ ์ œ๊ฑฐ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ํŒŒ๋“œ (์ฆ‰, ๋ฐฐ์น˜ ์žก)์˜ ๊ฒฝ์šฐ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ ๋Œ€์‹  Job์„ ์‚ฌ์šฉํ•˜๋ผ.

๋ฐ๋ชฌ์…‹

๋จธ์‹  ๋ชจ๋‹ˆํ„ฐ๋ง์ด๋‚˜ ๋จธ์‹  ๋กœ๊น…๊ณผ ๊ฐ™์€ ๋จธ์‹  ๋ ˆ๋ฒจ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํŒŒ๋“œ์—๋Š” ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ ๋Œ€์‹  DaemonSet์„ ์‚ฌ์šฉํ•˜๋ผ. ์ด๋Ÿฐ ํŒŒ๋“œ๋“ค์˜ ์ˆ˜๋ช…์€ ๋จธ์‹ ์˜ ์ˆ˜๋ช…์— ๋‹ฌ๋ ค ์žˆ๋‹ค. ๋‹ค๋ฅธ ํŒŒ๋“œ๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์ „์— ํŒŒ๋“œ๊ฐ€ ๋จธ์‹ ์—์„œ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋ฉฐ, ๋จธ์‹ ์ด ์žฌ๋ถ€ํŒ…/์ข…๋ฃŒ ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์„ ๋•Œ ์•ˆ์ „ํ•˜๊ฒŒ ์ข…๋ฃŒ๋œ๋‹ค.

๋‹ค์Œ ๋‚ด์šฉ

  • ํŒŒ๋“œ์— ๋Œ€ํ•ด ๋ฐฐ์šด๋‹ค.
  • ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋Œ€์‹ ํ•˜๋Š” ๋””ํ”Œ๋กœ์ด๋จผํŠธ์— ๋Œ€ํ•ด ๋ฐฐ์šด๋‹ค.
  • ReplicationController๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค REST API์˜ ์ผ๋ถ€์ด๋‹ค. ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ API์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ReplicationController ์˜ค๋ธŒ์ ํŠธ ์ •์˜๋ฅผ ์ฝ๋Š”๋‹ค.
์ตœ์ข… ์ˆ˜์ • December 31, 2022 at 5:16 PM PST: Update outdated files in dev-1.26-ko.1 (M83-M97) (bbd772cc0e)