Kubernetes ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์‹œ๊ฐ์  ๊ฐ€์ด๋“œ

๋ฉ”๋ชจ. ๋ฒˆ์—ญ: ์ด ๊ธ€์€ ํผ๋ธ”๋ฆญ ๋„๋ฉ”์ธ์— ๊ฒŒ์žฌ๋œ ํ”„๋กœ์ ํŠธ ์ž๋ฃŒ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. learnk8s, Kubernetes๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํšŒ์‚ฌ์™€ ๊ฐœ์ธ ๊ด€๋ฆฌ์ž๋ฅผ ๊ต์œกํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ์ž์ธ Daniele Polencic์€ K8s ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‹คํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ์ทจํ•ด์•ผ ํ•  ์กฐ์น˜์— ๋Œ€ํ•œ ์‹œ๊ฐ์  ์ง€์นจ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

Kubernetes ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์‹œ๊ฐ์  ๊ฐ€์ด๋“œ

์š”์•ฝ: ๋‹ค์Œ์€ Kubernetes์—์„œ ๋ฐฐํฌ๋ฅผ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋‹ค์ด์–ด๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.

Kubernetes ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์‹œ๊ฐ์  ๊ฐ€์ด๋“œ

ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์˜ค๋ฅ˜๋ฅผ ์ฐพ๊ณ  ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•œ ์ˆœ์„œ๋„์ž…๋‹ˆ๋‹ค. ์›๋ณธ(์˜์–ด)์€ ๋‹ค์Œ์—์„œ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. PDF ะธ ๊ทธ๋ฆผ์œผ๋กœ.

Kubernetes์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•  ๋•Œ ์ผ๋ฐ˜์ ์œผ๋กœ ์ •์˜ํ•ด์•ผ ํ•˜๋Š” ์„ธ ๊ฐ€์ง€ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ „๊ฐœ - ์ด๊ฒƒ์€ ํฌ๋“œ(Pod)๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณต์‚ฌ๋ณธ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ผ์ข…์˜ ๋ ˆ์‹œํ”ผ์ž…๋‹ˆ๋‹ค.
  • ์˜ˆ๋ฐฐ โ€” ํฌ๋“œ ๊ฐ„์— ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์‚ฐํ•˜๋Š” ๋‚ด๋ถ€ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ
  • ์ž…๊ตฌ โ€” ํŠธ๋ž˜ํ”ฝ์ด ์™ธ๋ถ€ ์„ธ๊ณ„์—์„œ ์„œ๋น„์Šค๋กœ ์–ด๋–ป๊ฒŒ ์ „๋‹ฌ๋˜๋Š”์ง€์— ๋Œ€ํ•œ ์„ค๋ช….

๋‹ค์Œ์€ ๊ฐ„๋žตํ•œ ๊ทธ๋ž˜ํ”ฝ ์š”์•ฝ์ž…๋‹ˆ๋‹ค.

1) Kubernetes์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‚ด๋ถ€ ๋ฐ ์™ธ๋ถ€์˜ ๋‘ ๊ณ„์ธต์˜ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€ ์„ธ๊ณ„๋กœ๋ถ€ํ„ฐ ํŠธ๋ž˜ํ”ฝ์„ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.

Kubernetes ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์‹œ๊ฐ์  ๊ฐ€์ด๋“œ

2) ๋‚ด๋ถ€ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์„œ๋น„์Šค๋ผ๊ณ  ํ•˜๊ณ , ์™ธ๋ถ€ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์ธ๊ทธ๋ ˆ์Šค๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

Kubernetes ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์‹œ๊ฐ์  ๊ฐ€์ด๋“œ

3) ๋ฐฐํฌ๋Š” Pod๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค(์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑ๋˜์ง€ ์•Š์Œ).

Kubernetes ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์‹œ๊ฐ์  ๊ฐ€์ด๋“œ

๊ฐ„๋‹จํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•ˆ๋…•ํ•˜์„ธ์š”. ์ด์— ๋Œ€ํ•œ YAML ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

apiVersion: apps/v1
kind: Deployment # <<<
metadata:
  name: my-deployment
  labels:
    track: canary
spec:
  selector:
    matchLabels:
      any-name: my-app
  template:
    metadata:
      labels:
        any-name: my-app
    spec:
      containers:
      - name: cont1
        image: learnk8s/app:1.0.0
        ports:
        - containerPort: 8080
---
apiVersion: v1
kind: Service # <<<
metadata:
  name: my-service
spec:
  ports:
  - port: 80
    targetPort: 8080
  selector:
    name: app
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress # <<<
metadata:
  name: my-ingress
spec:
  rules:
  - http:
    paths:
    - backend:
        serviceName: app
        servicePort: 80
      path: /

์ •์˜๊ฐ€ ๊ฝค ๊ธธ์–ด์„œ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์„œ๋กœ ์–ด๋–ป๊ฒŒ ๊ด€๋ จ๋˜์–ด ์žˆ๋Š”์ง€ ํ˜ผ๋™ํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค

  • ์–ธ์ œ ํฌํŠธ 80์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ณ  ์–ธ์ œ 8080์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?
  • ์ถฉ๋Œํ•˜์ง€ ์•Š๋„๋ก ๊ฐ ์„œ๋น„์Šค์— ๋Œ€ํ•ด ์ƒˆ ํฌํŠธ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?
  • ๋ผ๋ฒจ ์ด๋ฆ„์ด ์ค‘์š”ํ•ฉ๋‹ˆ๊นŒ? ์–ด๋””์—์„œ๋‚˜ ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๋””๋ฒ„๊น…์— ์ง‘์ค‘ํ•˜๊ธฐ ์ „์— ์„ธ ๊ฐ€์ง€ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์„œ๋กœ ์–ด๋–ป๊ฒŒ ์—ฐ๊ด€๋˜์–ด ์žˆ๋Š”์ง€ ๊ธฐ์–ตํ•ด ๋ด…์‹œ๋‹ค. ๋ฐฐํฌ ๋ฐ ์„œ๋น„์Šค๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฐฐํฌ์™€ ์„œ๋น„์Šค์˜ ๊ด€๊ณ„

๋†€๋ผ์‹œ๊ฒ ์ง€๋งŒ ๋ฐฐํฌ์™€ ์„œ๋น„์Šค๋Š” ์ „ํ˜€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ์„œ๋น„์Šค๋Š” ๋ฐฐํฌ๋ฅผ ์šฐํšŒํ•˜์—ฌ Pod๋ฅผ ์ง์ ‘ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” Pod์™€ ์„œ๋น„์Šค๊ฐ€ ์„œ๋กœ ์–ด๋–ป๊ฒŒ ๊ด€๋ จ๋˜์–ด ์žˆ๋Š”์ง€์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์–ตํ•ด์•ผ ํ•  ์„ธ ๊ฐ€์ง€:

  1. ์„ ํƒ๊ธฐ(selector) ์„œ๋น„์Šค์˜ ๊ฒฝ์šฐ ํ•˜๋‚˜ ์ด์ƒ์˜ Pod ๋ผ๋ฒจ๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. targetPort ์ผ์น˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค containerPort Pod ๋‚ด๋ถ€์˜ ์ปจํ…Œ์ด๋„ˆ์ž…๋‹ˆ๋‹ค.
  3. port ์„œ๋น„์Šค๋Š” ๋ฌด์—‡์ด๋“  ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋Š” IP ์ฃผ์†Œ๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋™์ผํ•œ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹ค์ด์–ด๊ทธ๋žจ์€ ์œ„์˜ ๋ชจ๋“  ๋‚ด์šฉ์„ ๊ทธ๋ž˜ํ”ฝ ํ˜•์‹์œผ๋กœ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

1) ์„œ๋น„์Šค๊ฐ€ ํŠน์ • ํฌ๋“œ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์ „๋‹ฌํ•œ๋‹ค๊ณ  ์ƒ์ƒํ•ด ๋ณด์„ธ์š”.

Kubernetes ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์‹œ๊ฐ์  ๊ฐ€์ด๋“œ

2) ํฌ๋“œ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋‹ค์Œ์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. containerPort ํฌ๋“œ์˜ ๊ฐ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•ด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

Kubernetes ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์‹œ๊ฐ์  ๊ฐ€์ด๋“œ

3) ์„œ๋น„์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋‹ค์Œ์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. port ะธ targetPort. ๊ทธ๋Ÿฌ๋‚˜ ์ปจํ…Œ์ด๋„ˆ์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์–ด๋Š ๊ฒƒ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ?

Kubernetes ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์‹œ๊ฐ์  ๊ฐ€์ด๋“œ

4) ๋ฅผ ํ†ตํ•ด targetPort. ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. containerPort.

Kubernetes ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์‹œ๊ฐ์  ๊ฐ€์ด๋“œ

5) ์ปจํ…Œ์ด๋„ˆ์— ํฌํŠธ 3000์ด ์—ด๋ ค ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ๊ฐ’์ด targetPort ๋™์ผํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

Kubernetes ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์‹œ๊ฐ์  ๊ฐ€์ด๋“œ

YAML ํŒŒ์ผ์—์„œ ๋ผ๋ฒจ๊ณผ ports / targetPort ์ผ์น˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
  labels:
    track: canary
spec:
  selector:
    matchLabels:
      any-name: my-app
  template:
    metadata:
     labels:  # <<<
        any-name: my-app  # <<<
   spec:
      containers:
      - name: cont1
        image: learnk8s/app:1.0.0
        ports:
       - containerPort: 8080  # <<<
---
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  ports:
  - port: 80
   targetPort: 8080  # <<<
 selector:  # <<<
    any-name: my-app  # <<<

๋ผ๋ฒจ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? track: canary ๋ฐฐํฌ ์„น์…˜ ์ƒ๋‹จ์— ์žˆ์Šต๋‹ˆ๊นŒ? ์ผ์น˜ํ•ด์•ผ ํ• ๊นŒ์š”?

์ด ๋ ˆ์ด๋ธ”์€ ๋ฐฐํฌ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋ฉฐ ์„œ๋น„์Šค์—์„œ ํŠธ๋ž˜ํ”ฝ์„ ๋ผ์šฐํŒ…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๊ฐ’์„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ ํƒ์ž๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? matchLabels?

ํ•ญ์ƒ Pod ๋ผ๋ฒจ๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค., ์ด๋Š” ๋ฐฐํฌ์—์„œ ํฌ๋“œ๋ฅผ ์ถ”์ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์˜ฌ๋ฐ”๋ฅธ ํŽธ์ง‘์„ ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ™•์ธํ•˜๋‚˜์š”?

๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ Pod ๋ ˆ์ด๋ธ”์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectl get pods --show-labels

๋˜๋Š” ํฌ๋“œ๊ฐ€ ์—ฌ๋Ÿฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์†ํ•˜๋Š” ๊ฒฝ์šฐ:

kubectl get pods --selector any-name=my-app --show-labels

ะ“ะดะต any-name=my-app ๋ผ๋ฒจ์ž…๋‹ˆ๋‹ค any-name: my-app.

๋‚จ์€ ์–ด๋ ค์›€์ด ์žˆ๋‚˜์š”?

ํฌ๋“œ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. port-forward kubectl์—์„œ. ์ด๋ฅผ ํ†ตํ•ด ์„œ๋น„์Šค์— ์—ฐ๊ฒฐํ•˜๊ณ  ์—ฐ๊ฒฐ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectl port-forward service/<service name> 3000:80

ะ—ะดะตััŒ :

  • service/<service name> - ์„œ๋น„์Šค ์ด๋ฆ„; ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ์—๋Š” ๊ทธ๋ ‡์ง€ my-service;
  • 3000์€ ์ปดํ“จํ„ฐ์—์„œ ์—ด์–ด์•ผ ํ•˜๋Š” ํฌํŠธ์ž…๋‹ˆ๋‹ค.
  • 80 - ํ•„๋“œ์— ์ง€์ •๋œ ํฌํŠธ port ์„œ๋น„์Šค.

์—ฐ๊ฒฐ์ด ์„ค์ •๋˜๋ฉด ์„ค์ •์ด ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฐ๊ฒฐ์— ์‹คํŒจํ•˜๋ฉด ๋ ˆ์ด๋ธ”์— ๋ฌธ์ œ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ํฌํŠธ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์„œ๋น„์Šค์™€ ์ธ๊ทธ๋ ˆ์Šค์˜ ๊ด€๊ณ„

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋‹ค์Œ ๋‹จ๊ณ„์—๋Š” Ingress ์„ค์ •์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. Ingress๋Š” ์„œ๋น„์Šค๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„์•ผ ํ•˜๊ณ , Pod๋ฅผ ์ฐพ์•„ ํ•ด๋‹น ์„œ๋น„์Šค๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Ingress๋Š” ์ด๋ฆ„๊ณผ ์—ด๋ฆฐ ํฌํŠธ๋กœ ํ•„์š”ํ•œ ์„œ๋น„์Šค๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

์ˆ˜์‹  ๋ฐ ์„œ๋น„์Šค ์„ค๋ช…์—์„œ ๋‘ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. servicePort Ingress์—์„œ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. port ์„œ๋น„์Šค ์ค‘;
  2. serviceName Ingress์—์„œ๋Š” ํ•„๋“œ์™€ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. name ์„œ๋น„์Šค ์ค‘.

๋‹ค์Œ ๋‹ค์ด์–ด๊ทธ๋žจ์€ ํฌํŠธ ์—ฐ๊ฒฐ์„ ์š”์•ฝํ•ฉ๋‹ˆ๋‹ค.

1) ์ด๋ฏธ ์•Œ๊ณ  ์žˆ๋“ฏ์ด ์„œ๋น„์Šค๋Š” ํŠน์ • port:

Kubernetes ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์‹œ๊ฐ์  ๊ฐ€์ด๋“œ

2) Ingress์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. servicePort:

Kubernetes ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์‹œ๊ฐ์  ๊ฐ€์ด๋“œ

3) ์ด ๋งค๊ฐœ๋ณ€์ˆ˜(servicePort)๋Š” ํ•ญ์ƒ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. port ์„œ๋น„์Šค ์ •์˜์—์„œ:

Kubernetes ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์‹œ๊ฐ์  ๊ฐ€์ด๋“œ

4) ์„œ๋น„์Šค์— ํฌํŠธ 80์ด ์ง€์ •๋œ ๊ฒฝ์šฐ ๋‹ค์Œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. servicePort ๋˜ํ•œ 80๊ณผ ๋™์ผํ–ˆ์Šต๋‹ˆ๋‹ค.

Kubernetes ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์‹œ๊ฐ์  ๊ฐ€์ด๋“œ

์‹ค์ œ๋กœ๋Š” ๋‹ค์Œ ์ค„์— ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

apiVersion: v1
kind: Service
metadata:
 name: my-service  # <<<
spec:
  ports:
 - port: 80  # <<<
   targetPort: 8080
  selector:
    any-name: my-app
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
  - http:
    paths:
    - backend:
       serviceName: my-service  # <<<
       servicePort: 80  # <<<
     path: /

Ingress๊ฐ€ ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ด ๋ฐฉ๋ฒ•์„ ๋‹ค์Œ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. kubectl port-forwardํ•˜์ง€๋งŒ ์„œ๋น„์Šค ๋Œ€์‹  Ingress ์ปจํŠธ๋กค๋Ÿฌ์— ์—ฐ๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋จผ์ € Ingress ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Pod์˜ ์ด๋ฆ„์„ ์ฐพ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

kubectl get pods --all-namespaces
NAMESPACE   NAME                              READY STATUS
kube-system coredns-5644d7b6d9-jn7cq          1/1   Running
kube-system etcd-minikube                     1/1   Running
kube-system kube-apiserver-minikube           1/1   Running
kube-system kube-controller-manager-minikube  1/1   Running
kube-system kube-proxy-zvf2h                  1/1   Running
kube-system kube-scheduler-minikube           1/1   Running
kube-system nginx-ingress-controller-6fc5bcc  1/1   Running

Ingress Pod(๋‹ค๋ฅธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์žˆ์„ ์ˆ˜ ์žˆ์Œ)๋ฅผ ์ฐพ์•„ ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. describeํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ฐพ์œผ๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.

kubectl describe pod nginx-ingress-controller-6fc5bcc 
--namespace kube-system 
 | grep Ports
Ports:         80/TCP, 443/TCP, 18080/TCP

๋งˆ์ง€๋ง‰์œผ๋กœ ํฌ๋“œ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

kubectl port-forward nginx-ingress-controller-6fc5bcc 3000:80 --namespace kube-system

์ด์ œ ์ปดํ“จํ„ฐ์˜ ํฌํŠธ 3000์œผ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ๋งˆ๋‹ค Ingress ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ†ตํ•ด ํฌ๋“œ์˜ ํฌํŠธ 80์œผ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ๋กœ ๊ฐ€๋ฉด์„œ http://localhost:3000์„ ํด๋ฆญํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ƒ์„ฑ๋œ ํŽ˜์ด์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

ํฌํŠธ ์š”์•ฝ

์–ด๋–ค ํฌํŠธ์™€ ๋ ˆ์ด๋ธ”์ด ์ผ์น˜ํ•ด์•ผ ํ•˜๋Š”์ง€ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ธฐ์–ตํ•ด ๋ด…์‹œ๋‹ค.

  1. ์„œ๋น„์Šค ์ •์˜์˜ ์„ ํƒ๊ธฐ๋Š” Pod์˜ ๋ ˆ์ด๋ธ”๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. targetPort ์ •์˜์— ๋”ฐ๋ฅด๋ฉด ์„œ๋น„์Šค๋Š” ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. containerPort ํฌ๋“œ ๋‚ด๋ถ€์˜ ์ปจํ…Œ์ด๋„ˆ;
  3. port ์ •์˜์—์„œ ์„œ๋น„์Šค๋Š” ๋ฌด์—‡์ด๋“  ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋Š” IP ์ฃผ์†Œ๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋™์ผํ•œ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. servicePort ์ธ๊ทธ๋ ˆ์Šค๋Š” ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. port ์„œ๋น„์Šค์˜ ์ •์˜์—์„œ;
  5. ์„œ๋น„์Šค ์ด๋ฆ„์€ ํ•„๋“œ์™€ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. serviceName ์ธ๊ทธ๋ ˆ์Šค์—์„œ.

์•ˆํƒ€๊น๊ฒŒ๋„ YAML ๊ตฌ์„ฑ์„ ์ ์ ˆํ•˜๊ฒŒ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•„๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ผ์ด ์ž˜๋ชป๋˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?

ํฌ๋“œ๊ฐ€ ์‹œ์ž‘๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ถฉ๋Œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Kubernetes์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฌธ์ œ๋ฅผ ์ง„๋‹จํ•˜๋Š” 3๋‹จ๊ณ„

๋ฐฐํฌ ๋””๋ฒ„๊น…์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— Kubernetes ์ž‘๋™ ๋ฐฉ์‹์„ ์ž˜ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

K8s์— ๋‹ค์šด๋กœ๋“œ๋œ ๊ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Š” ์„ธ ๊ฐ€์ง€ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ๋งจ ์•„๋ž˜๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ํŠน์ • ์ˆœ์„œ์— ๋”ฐ๋ผ ๋””๋ฒ„๊น…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋จผ์ € ํฌ๋“œ๊ฐ€ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•œ ๋‹ค์Œ...
  2. ์„œ๋น„์Šค๊ฐ€ Pod์— ํŠธ๋ž˜ํ”ฝ์„ ๊ณต๊ธ‰ํ•˜๋Š”์ง€ ํ™•์ธํ•œ ํ›„...
  3. Ingress๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

์‹œ๊ฐ์  ํ‘œํ˜„:

1) ๋ฌธ์ œ๋Š” ๋งจ ๋ฐ‘๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ์ฐพ๊ธฐ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € ํฌ๋“œ์— ์ƒํƒœ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. Ready ะธ Running:

Kubernetes ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์‹œ๊ฐ์  ๊ฐ€์ด๋“œ

2) ํฌ๋“œ๊ฐ€ ์ค€๋น„๋˜๋ฉด(Ready), ์„œ๋น„์Šค๊ฐ€ ํฌ๋“œ ๊ฐ„์— ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์‚ฐํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Kubernetes ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์‹œ๊ฐ์  ๊ฐ€์ด๋“œ

3) ๋งˆ์ง€๋ง‰์œผ๋กœ ์„œ๋น„์Šค์™€ Ingress ๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ๋ถ„์„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Kubernetes ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์‹œ๊ฐ์  ๊ฐ€์ด๋“œ

1. ํฌ๋“œ ์ง„๋‹จ

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋ฌธ์ œ๋Š” ํฌ๋“œ์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Pod๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜์—ด๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. Ready ะธ Running. ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectl get pods
NAME                    READY STATUS            RESTARTS  AGE
app1                    0/1   ImagePullBackOff  0         47h
app2                    0/1   Error             0         47h
app3-76f9fcd46b-xbv4k   1/1   Running           1         47h

์œ„ ๋ช…๋ น ์ถœ๋ ฅ์—์„œ โ€‹โ€‹๋งˆ์ง€๋ง‰ Pod๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค. Running ะธ Ready๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ๋‘ ์‚ฌ๋žŒ์˜ ๊ฒฝ์šฐ์—๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฌด์—‡์ด ์ž˜๋ชป๋˜์—ˆ๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

ํฌ๋“œ ์ง„๋‹จ์— ์œ ์šฉํ•œ ๋„ค ๊ฐ€์ง€ ๋ช…๋ น์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. kubectl logs <ะธะผั pod'ะฐ> ํฌ๋“œ์˜ ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋กœ๊ทธ๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. kubectl describe pod <ะธะผั pod'ะฐ> ํฌ๋“œ์™€ ๊ด€๋ จ๋œ ์ด๋ฒคํŠธ ๋ชฉ๋ก์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. kubectl get pod <ะธะผั pod'ะฐ> Kubernetes์— ์ €์žฅ๋œ ํฌ๋“œ์˜ YAML ๊ตฌ์„ฑ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. kubectl exec -ti <ะธะผั pod'ะฐ> bash ํฌ๋“œ ์ปจํ…Œ์ด๋„ˆ ์ค‘ ํ•˜๋‚˜์—์„œ ๋Œ€ํ™”ํ˜• ๋ช…๋ น ์…ธ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด๋Š ๊ฒƒ์„ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์‚ฌ์‹ค์€ ๋ณดํŽธ์ ์ธ ๋ช…๋ น์ด ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋“ค์˜ ์กฐํ•ฉ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ ํฌ๋“œ ๋ฌธ์ œ

ํฌ๋“œ ์˜ค๋ฅ˜์—๋Š” ์‹œ์ž‘ ์˜ค๋ฅ˜์™€ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ ์˜ค๋ฅ˜:

  • ImagePullBackoff
  • ImageInspectError
  • ErrImagePull
  • ErrImageNeverPull
  • RegistryUnavailable
  • InvalidImageName

๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜:

  • CrashLoopBackOff
  • RunContainerError
  • KillContainerError
  • VerifyNonRootError
  • RunInitContainerError
  • CreatePodSandboxError
  • ConfigPodSandboxError
  • KillPodSandboxError
  • SetupNetworkError
  • TeardownNetworkError

์ผ๋ถ€ ์˜ค๋ฅ˜๋Š” ๋‹ค๋ฅธ ์˜ค๋ฅ˜๋ณด๋‹ค ๋” ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์˜ค๋ฅ˜ ์ค‘ ์ผ๋ถ€์™€ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ํ’€๋ฐฑํ•ด์ œ

์ด ์˜ค๋ฅ˜๋Š” Kubernetes๊ฐ€ ํฌ๋“œ ์ปจํ…Œ์ด๋„ˆ ์ค‘ ํ•˜๋‚˜์— ๋Œ€ํ•œ ์ด๋ฏธ์ง€๋ฅผ ์–ป์„ ์ˆ˜ ์—†์„ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์„ธ โ€‹โ€‹๊ฐ€์ง€ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์ด๋ฏธ์ง€ ์ด๋ฆ„์ด ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด๋ฆ„์— ์‹ค์ˆ˜๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ์ด๋ฏธ์ง€๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  2. ์ด๋ฏธ์ง€์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  3. ์ด๋ฏธ์ง€๋Š” ๊ฐœ์ธ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์ €์žฅ๋˜๋ฉฐ Kubernetes์—๋Š” ํ•ด๋‹น ์ด๋ฏธ์ง€์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค.

์ฒ˜์Œ ๋‘ ๊ฐ€์ง€ ์ด์œ ๋Š” ์ œ๊ฑฐํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€ ์ด๋ฆ„๊ณผ ํƒœ๊ทธ๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ํ›„์ž์˜ ๊ฒฝ์šฐ Secret์— ๋‹ซํžŒ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ๋Œ€ํ•œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์ž…๋ ฅํ•˜๊ณ  Pod์— ๋งํฌ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Kubernetes ๋ฌธ์„œ์—์„œ ์˜ˆ๊ฐ€ ์žˆ๋‹ค ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ถฉ๋Œ ๋ฃจํ”„ ๋ฐฑ์˜คํ”„

Kubenetes์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. CrashLoopBackOff, ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ. ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  1. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์„ ๋ฐฉํ•ดํ•˜๋Š” ๋ฒ„๊ทธ๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ์ปจํ…Œ์ด๋„ˆ ์ž˜๋ชป ๊ตฌ์„ฑ๋จ;
  3. ํ™œ์„ฑ ํ…Œ์ŠคํŠธ๊ฐ€ ๋„ˆ๋ฌด ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.

์‹คํŒจ ์ด์œ ๋ฅผ ์ฐพ์œผ๋ ค๋ฉด ์ปจํ…Œ์ด๋„ˆ์˜ ๋กœ๊ทธ์— ์•ก์„ธ์Šคํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋„ˆ๋ฌด ๋นจ๋ฆฌ ๋‹ค์‹œ ์‹œ์ž‘๋˜์–ด ๋กœ๊ทธ์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectl logs <pod-name> --previous

์ด์ „ ์ปจํ…Œ์ด๋„ˆ ๊ตฌํ˜„์˜ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

์‹คํ–‰์ปจํ…Œ์ด๋„ˆ ์˜ค๋ฅ˜

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

  • ConfigMap ๋˜๋Š” Secrets์™€ ๊ฐ™์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
  • ์ฝ๊ธฐ ์ „์šฉ ๋ณผ๋ฅจ์„ ์ฝ๊ธฐ-์“ฐ๊ธฐ๋กœ ๋งˆ์šดํŠธํ•˜๋ ค๋Š” ์‹œ๋„์ž…๋‹ˆ๋‹ค.

ํŒ€์€ ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ถ„์„ํ•˜๋Š” ๋ฐ ๋งค์šฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. kubectl describe pod <pod-name>.

ํฌ๋“œ๊ฐ€ ๋ณด๋ฅ˜ ์ค‘ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

์ƒ์„ฑ๋œ ํฌ๋“œ๋Š” ํ•ด๋‹น ์ƒํƒœ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. Pending.

์™œ ์ด๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜๋Š” ๊ฑธ๊นŒ์š”?

๊ฐ€๋Šฅํ•œ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค(์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค).

  1. ํด๋Ÿฌ์Šคํ„ฐ์— ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ, ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ Pod๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค.
  2. ๊ฐœ์ฒด๊ฐ€ ์ ์ ˆํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. ResourceQuota ํฌ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ํ• ๋‹น๋Ÿ‰์„ ์ดˆ๊ณผํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  3. ํฌ๋“œ๊ฐ€ ๋ณด๋ฅ˜ ์ค‘์œผ๋กœ ๋ฐ”์ธ๋”ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. PersistentVolumeClaim.

์ด ๊ฒฝ์šฐ ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. kubectl describe ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ๋ถ€๋ถ„์„ ํ™•์ธํ•ด๋ณด์„ธ์š” Events:

kubectl describe pod <pod name>

๊ด€๋ จ๋œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ResourceQuotas, ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ ๋กœ๊ทธ๋ฅผ ๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

kubectl get events --sort-by=.metadata.creationTimestamp

ํฌ๋“œ๊ฐ€ ์ค€๋น„๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

Pod๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜์—ด๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ Running, ํ•˜์ง€๋งŒ ์ƒํƒœ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. Ready, ์ค€๋น„ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. (์ค€๋น„ ์ƒํƒœ ํ”„๋กœ๋ธŒ) ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ ํฌ๋“œ๋Š” ์„œ๋น„์Šค์— ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์œผ๋ฉฐ ํŠธ๋ž˜ํ”ฝ์ด ์„œ๋น„์Šค๋กœ ํ๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ค€๋น„ ํ…Œ์ŠคํŠธ ์‹คํŒจ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฌธ์ œ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์˜ค๋ฅ˜๋ฅผ ์ฐพ์œผ๋ ค๋ฉด ํ•ด๋‹น ์„น์…˜์„ ๋ถ„์„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Events ๋ช…๋ น ์ถœ๋ ฅ์—์„œ kubectl describe.

2. ์„œ๋น„์Šค ์ง„๋‹จ

ํฌ๋“œ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜์—ด๋˜๋Š” ๊ฒฝ์šฐ Running ะธ Ready, ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‘๋‹ต์ด ์—†์œผ๋ฉด ์„œ๋น„์Šค ์„ค์ •์„ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค๋Š” ๋ผ๋ฒจ์— ๋”ฐ๋ผ ํŠธ๋ž˜ํ”ฝ์„ Pod๋กœ ๋ผ์šฐํŒ…ํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ€์žฅ ๋จผ์ € ํ•ด์•ผ ํ•  ์ผ์€ ์„œ๋น„์Šค์—์„œ ์ž‘๋™ํ•˜๋Š” ํฌ๋“œ ์ˆ˜๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ์„œ๋น„์Šค์—์„œ ์—”๋“œํฌ์ธํŠธ๋ฅผ ํ™•์ธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

kubectl describe service <service-name> | grep Endpoints

๋์ ์€ ๋‹ค์Œ ํ˜•์‹์˜ ๊ฐ’ ์Œ์ž…๋‹ˆ๋‹ค. <IP-ะฐะดั€ะตั:ะฟะพั€ั‚>, ์ถœ๋ ฅ์—๋Š” ๊ทธ๋Ÿฌํ•œ ์Œ์ด ํ•˜๋‚˜ ์ด์ƒ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ฆ‰, ํ•˜๋‚˜ ์ด์ƒ์˜ Pod๊ฐ€ ์„œ๋น„์Šค์™€ ์ž‘๋™ํ•จ).

๋งŒ์•ฝ ์„น์…˜ Endpoins ๋น„์–ด ์žˆ์œผ๋ฉด ๋‘ ๊ฐ€์ง€ ์˜ต์…˜์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  1. ์˜ฌ๋ฐ”๋ฅธ ๋ผ๋ฒจ์ด ์žˆ๋Š” Pod๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค(ํžŒํŠธ: ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ ํƒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”).
  2. ์„ ํƒ๊ธฐ์˜ ์„œ๋น„์Šค ๋ผ๋ฒจ์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์—”๋“œํฌ์ธํŠธ ๋ชฉ๋ก์ด ํ‘œ์‹œ๋˜์ง€๋งŒ ์—ฌ์ „ํžˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์›์ธ์€ ๋‹ค์Œ์˜ ๋ฒ„๊ทธ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. targetPort ์„œ๋น„์Šค ์„ค๋ช…์—.

์„œ๋น„์Šค ๊ธฐ๋Šฅ์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์„œ๋น„์Šค ์œ ํ˜•์— ๊ด€๊ณ„์—†์ด ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. kubectl port-forward ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด:

kubectl port-forward service/<service-name> 3000:80

ะ—ะดะตััŒ :

  • <service-name> - ์„œ๋น„์Šค ์ด๋ฆ„;
  • 3000์€ ์ปดํ“จํ„ฐ์—์„œ ์—ฌ๋Š” ํฌํŠธ์ž…๋‹ˆ๋‹ค.
  • 80 - ์„œ๋น„์Šค ์ธก ํฌํŠธ์ž…๋‹ˆ๋‹ค.

3. ์ง„์ž… ์ง„๋‹จ

์—ฌ๊ธฐ๊นŒ์ง€ ์ฝ์—ˆ๋‹ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.

  • ํฌ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค. Running ะธ Ready;
  • ์„œ๋น„์Šค๋Š” ํฌ๋“œ ๊ฐ„์— ํŠธ๋ž˜ํ”ฝ์„ ์„ฑ๊ณต์ ์œผ๋กœ ๋ถ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ ์•ฑ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด๋Š” ์ˆ˜์‹  ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑ๋˜์ง€ ์•Š์•˜์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. Ingress ์ปจํŠธ๋กค๋Ÿฌ๋Š” ํด๋Ÿฌ์Šคํ„ฐ์˜ ํƒ€์‚ฌ ๊ตฌ์„ฑ ์š”์†Œ์ด๋ฏ€๋กœ ์œ ํ˜•์— ๋”ฐ๋ผ ๋””๋ฒ„๊น… ๋ฐฉ๋ฒ•์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ Ingress๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ˆ˜ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋งค์šฐ ๊ฐ„๋‹จํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ๊ทธ๋ ˆ์Šค ์šฉ๋„ serviceName ะธ servicePort ์„œ๋น„์Šค์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectl describe ingress <ingress-name>

์—ด์ธ ๊ฒฝ์šฐ Backend ๋น„์–ด ์žˆ์œผ๋ฉด ๊ตฌ์„ฑ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ํ™•๋ฅ ์ด ๋†’์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ๊ฐ€ ์ œ์ž๋ฆฌ์— ์žˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ด€๋ จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ณต์šฉ ์ธํ„ฐ๋„ท์—์„œ ์ˆ˜์‹  ์ ‘๊ทผ์„ฑ ์„ค์ •
  • ๊ณต์šฉ ์ธํ„ฐ๋„ท์˜ ํด๋Ÿฌ์Šคํ„ฐ ์ ‘๊ทผ์„ฑ ์„ค์ •.

Ingress Pod์— ์ง์ ‘ ์—ฐ๊ฒฐํ•˜์—ฌ ์ธํ”„๋ผ ๋ฌธ์ œ๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ๋จผ์ € Ingress Controller Pod๋ฅผ ์ฐพ์œผ์„ธ์š”(๋‹ค๋ฅธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์žˆ์„ ์ˆ˜ ์žˆ์Œ).

kubectl get pods --all-namespaces
NAMESPACE   NAME                              READY STATUS
kube-system coredns-5644d7b6d9-jn7cq          1/1   Running
kube-system etcd-minikube                     1/1   Running
kube-system kube-apiserver-minikube           1/1   Running
kube-system kube-controller-manager-minikube  1/1   Running
kube-system kube-proxy-zvf2h                  1/1   Running
kube-system kube-scheduler-minikube           1/1   Running
kube-system nginx-ingress-controller-6fc5bcc  1/1   Running

๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค describeํฌํŠธ๋ฅผ ์„ค์ •ํ•˜๋ ค๋ฉด:

kubectl describe pod nginx-ingress-controller-6fc5bcc
--namespace kube-system 
 | grep Ports

๋งˆ์ง€๋ง‰์œผ๋กœ ํฌ๋“œ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

kubectl port-forward nginx-ingress-controller-6fc5bcc 3000:80 --namespace kube-system

์ด์ œ ์ปดํ“จํ„ฐ์˜ ํฌํŠธ 3000์— ๋Œ€ํ•œ ๋ชจ๋“  ์š”์ฒญ์ด ํฌ๋“œ์˜ ํฌํŠธ 80์œผ๋กœ ๋ฆฌ๋””๋ ‰์…˜๋ฉ๋‹ˆ๋‹ค.

์ด์ œ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?

  • ๊ทธ๋ ‡๋‹ค๋ฉด ๋ฌธ์ œ๋Š” ์ธํ”„๋ผ์— ์žˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋ž˜ํ”ฝ์ด ํด๋Ÿฌ์Šคํ„ฐ๋กœ ์–ด๋–ป๊ฒŒ ๋ผ์šฐํŒ…๋˜๋Š”์ง€ ์ •ํ™•ํžˆ ์•Œ์•„๋‚ด๋Š” ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด Ingress ์ปจํŠธ๋กค๋Ÿฌ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Ingress ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉด ๋””๋ฒ„๊น…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Ingress ์ปจํŠธ๋กค๋Ÿฌ์—๋Š” ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ๊ฒƒ์€ Nginx, HAProxy, Traefik ๋“ฑ์ž…๋‹ˆ๋‹ค. (๊ธฐ์กด ์†”๋ฃจ์…˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”. ์šฐ๋ฆฌ์˜ ๋ฆฌ๋ทฐ - ๋Œ€๋žต. ๋ฒˆ์—ญ) ๊ด€๋ จ ์ปจํŠธ๋กค๋Ÿฌ ์„ค๋ช…์„œ์˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ธ๊ทธ๋ ˆ์Šค Nginx ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” Ingress ์ปจํŠธ๋กค๋Ÿฌ์ด๋ฏ€๋กœ ์ด์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ํŒ์„ ๊ธฐ์‚ฌ์— ํฌํ•จํ–ˆ์Šต๋‹ˆ๋‹ค.

Ingress Nginx ์ปจํŠธ๋กค๋Ÿฌ ๋””๋ฒ„๊น…

Ingress-nginx ํ”„๋กœ์ ํŠธ์—๋Š” ๊ณต์‹ kubectl์šฉ ํ”Œ๋Ÿฌ๊ทธ์ธ. ํŒ€ kubectl ingress-nginx ๋‹ค์Œ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋กœ๊ทธ, ๋ฐฑ์—”๋“œ, ์ธ์ฆ์„œ ๋“ฑ ๋ถ„์„
  • Ingress์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ
  • ํ˜„์žฌ ๊ตฌ์„ฑ์„ ์—ฐ๊ตฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ๋ช…๋ น์ด ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • kubectl ingress-nginx lint โ€” ํ™•์ธ nginx.conf;
  • kubectl ingress-nginx backend โ€” ๋ฐฑ์—”๋“œ๋ฅผ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค(์™€ ๋น„์Šทํ•จ). kubectl describe ingress <ingress-name>);
  • kubectl ingress-nginx logs โ€” ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Ingress ์ปจํŠธ๋กค๋Ÿฌ์— ๋Œ€ํ•œ ์˜ฌ๋ฐ”๋ฅธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. --namespace <name>.

๊ฐœ์š”

์–ด๋””์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๋ฉด Kubernetes ๋ฌธ์ œ ํ•ด๊ฒฐ์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ญ์ƒ ์ƒํ–ฅ์‹์œผ๋กœ ๋ฌธ์ œ์— ์ ‘๊ทผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, Pod๋กœ ์‹œ์ž‘ํ•œ ๋‹ค์Œ ์„œ๋น„์Šค์™€ Ingress๋กœ ์ด๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ์— ์„ค๋ช…๋œ ๋””๋ฒ„๊น… ๊ธฐ์ˆ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๊ฐœ์ฒด์— ์ ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์œ ํœด ์ž‘์—… ๋ฐ CronJobs
  • StatefulSet ๋ฐ DaemonSet.

๊ฐ์‚ฌ์˜ ๋งˆ์Œ์„ ์ „ํ•ฉ๋‹ˆ๋‹ค ๊ฒŒ๋ฅด๊ฒŒ๋ฆฌ ๋ฆฌ์Šคํฌ์ฝ”, ๋‹ค๋‹ˆ์—˜ ์›จ์ด๋ธ” ะธ ์ฐฐ์Šค ํฌ๋ฆฌ์Šคํ‹ฐ๋ผ์ง€ ๊ท€์ค‘ํ•œ ์˜๊ฒฌ๊ณผ ์ถ”๊ฐ€ ์‚ฌํ•ญ์„ ์œ„ํ•ด.

๋ฒˆ์—ญ๊ฐ€์˜ ์ถ”์‹ 

๋ธ”๋กœ๊ทธ์—์„œ๋„ ์ฝ์–ด๋ณด์„ธ์š”.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€