object

ConfigMap / secret

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

secret์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์— ์œ ๋ฆฌํ•˜์ง€๋งŒ ์‹œํฌ๋ฆฟ๋‹น ์ตœ๋Œ€ 1M๊นŒ์ง€๋งŒ ์ €์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ด๋•Œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ ํ˜•ํƒœ๋กœ ๋„ฃ์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

Env(Literal)

ConfigMap์„ ํ†ตํ•ด ํ•„์š”ํ•œ ๊ฐ’์„ ์ƒ์ˆ˜๋กœ ์„ค์ •ํ•ด๋‘๊ณ  ์ปจํ…Œ์ด๋„ˆ์—์„œ ๊ฐ’๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  secret์€ ์ฃผ์š”ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ ์ด๋•Œ secret์˜ value๋Š” base64๋กœ ์ธ์ฝ”๋”ฉํ•ด์„œ ๊ฐ’์„ ๋„ฃ์–ด์ฃผ์–ด์•ผํ•œ๋‹ค. ํŒŒ๋“œ๋กœ ๊ฐ’์ด ์ฃผ์ž…์ด ๋ ๋•Œ๋Š” ์ž๋™์ ์œผ๋กœ ๋””์ฝ”๋”ฉ์ด ๋˜์–ด ์‚ฌ์šฉ๋œ๋‹ค.

์ผ๋ฐ˜์ ์ธ object๊ฐ’๋“ค์€ k8s db์— ์ €์žฅ์ด ๋˜๋Š”๋ฐ secret์€ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ์ด ๋˜๊ณ  configMap์€ key/value๋ฅผ ๋ฌดํ•œํžˆ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ secret์€ 1mbyte๋งŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

apiVersion: v1
kind: ConfigMap
metadata:
  name: cm-dev
data:
  SSH: 'false'
  User: dev
apiVersion: v1
kind: Secret
metadata:
  name: sec-dev
data:
  Key: MTIzNA==
apiVersion: v1
kind: Pod
metadata:
  name: pod-1
spec:
  containers:
    - name: container
      image: kubetm/init
      envFrom:
        - configMapRef:
            name: cm-dev
        - secretRef:
            name: sec-dev

Env(File)

๊ฐ’์œผ๋กœ ์ƒ์ˆ˜๊ฐ€ ์•„๋‹Œ ํŒŒ์ผ์„ ์ •์˜ํ• ๋•Œ๋Š” ๋Œ€์‹œ๋ณด๋“œ์—์„œ ์ œ๊ณตํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ง์ ‘ cli๋กœ configMap/secret์— value๋กœ ๊ฐ’์„ ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

echo "Content" >> file-c.txt
kubectl create configmap cm-file --from-file=./file-c.txt
echo "Content" >> file-s.txt
kubectl create secret generic sec-file --from-file=./file-s.txt
apiVersion: v1
kind: Pod
metadata:
  name: pod-file
spec:
  containers:
    - name: container
      image: kubetm/init
      env:
        - name: file-c
          valueFrom:
            configMapKeyRef:
              name: cm-file
              key: file-c.txt
        - name: file-s
          valueFrom:
            secretKeyRef:
              name: sec-file
              key: file-s.txt

Volume Mount (File)

apiVersion: v1
kind: Pod
metadata:
  name: pod-mount
spec:
  containers:
    - name: container
      image: kubetm/init
      volumeMounts:
        - name: file-volume
          mountPath: /mount
  volumes:
    - name: file-volume
      configMap:
        name: cm-file

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

NameSpace / Resource Quota/ LimitRange

ํ•œ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ๋Š” ์—ฌ๋Ÿฌ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋“ค์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ  ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋‚ด์—์„œ๋Š” ์—ฌ๋Ÿฌ ํŒŒ๋“œ๋“ค์„ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ ํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ํŒŒ๋“œ๊ฐ€ ์„œ๋ฒ„์˜ ๋ชจ๋“  ์ž์›์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๋‹ค๋ฅธ ํŒŒ๋“œ๋“ค์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋“ค๋งˆ๋‹ค ์ตœ๋Œ€ ์ž์›๋Ÿ‰์„ ์ œํ•œํ•˜๋Š” Resource Quota๋ฅผ ๋‘˜ ์ˆ˜ ์žˆ๊ณ  ํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋‚ด์—์„œ ํ•œ๊ฐœ์˜ ํŒŒ๋“œ๊ฐ€ ๋ชจ๋“  Resource Quota๋งŒํผ์„ ์‚ฌ์šฉํ•˜๊ณ ์žˆ๋‹ค๋ฉด ๋‹ค๋ฅธ ํŒŒ๋“œ๋“ค์ด ๋“ค์–ด์˜ฌ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ•œํŒŒ๋“œ๋‹น ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๋Š” ์ž์›๋Ÿ‰์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋Š” LimitRange๊ฐ€ ์กด์žฌํ•œ๋‹ค.

NameSpace

ํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ๋Š” ๊ฐ™์€ ์ด๋ฆ„์˜ ํŒŒ๋“œ๋“ค์„ ์ค‘๋ณตํ•ด์„œ ์ƒ์„ฑํ•  ์ˆ˜์—†๊ณ , ํƒ€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋“ค๊ณผ๋Š” ๋ถ„๋ฆฌ๋˜์–ด ๊ด€๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ ๋‹ค๋ฅธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ผ๋ฉด ํ•œ ์„œ๋น„์Šค์—์„œ ๋‹ค๋ฅธ ํŒŒ๋“œ๋“ค์„ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ง€์šฐ๊ฒŒ ๋˜๋ฉด ๊ทธ ์•ˆ์— ๋ชจ๋“  ์ž์›์€ ๊ฐ™์ด ์ง€์›Œ์ง€๊ฒŒ ๋œ๋‹ค.

๋ฌผ๋ก , PV๋‚˜ node๋ฅผ ์ด์šฉํ•˜์—ฌ ์—ฐ๊ฒฐ์„ ํ•  ์ˆ˜๋Š” ์žˆ๊ณ  ์—ฐ๊ฒฐ์€ ๋˜์ง€ ์•Š์ง€๋งŒ, ๊ฐ ํŒŒ๋“œ๊ฐ€ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ๋‚ด๋ถ€ ip์ฃผ์†Œ๋ฅผ ์ด์šฉํ•ด์„œ ์ ‘๊ทผ๊ณผ ์—ฐ๊ฒฐ์€ ๊ฐ€๋Šฅํ•˜๊ณ  nodePort๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. ์ด๋Š”

apiVersion: v1
kind: Namespace
metadata:
  name: nm-1
apiVersion: v1
kind: Pod
metadata:
  name: pod-1
  namespace: nm-1
# nm-3์˜ Namespace์— ์žˆ๋Š” ResourceQuota๋“ค์˜ ์ƒ์„ธ ์กฐํšŒ
kubectl describe resourcequotas --namespace=nm-3
# nm-5์˜ Namespace์— ์žˆ๋Š” LimitRange๋“ค์˜ ์ƒ์„ธ ์กฐํšŒ
kubectl describe limitranges --namespace=nm-5

ResourceQuota

๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ์ž์›์„ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•œ object๋กœ ResourceQuota๋ฅผ ๋ช…์‹œํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ํŒŒ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๊ณ ํ• ๋•Œ ํŒŒ๋“œ์˜ ์ž์›๋Ÿ‰์„ ๋ช…์‹œํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด ์ƒˆ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๊ณ  ํ˜„์žฌ ์ž์›์„ ์ดˆ๊ณผํ•ด๋„ ์ƒ์„ฑ์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.

๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ง๊ณ ๋„ ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด์— ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด๋‹ค.

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

memory ๋ฟ๋งŒ์ด ์•„๋‹ˆ๋ผ cpu, storage๋„ ์ œํ•œ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ object๋“ค์˜ ์ˆซ์ž๋„ ์ œํ•œํ•  ์ˆ˜ ์žˆ์ง€๋งŒ k8s๋ฒ„์ „๋งˆ๋‹ค ์ œํ•œํ•  ์ˆ˜ ์žˆ๋Š” object์ข…๋ฅ˜๋Š” ์ƒ์ดํ•˜๋‹ค.

apiVersion: v1
kind: Pod
metadata:
  name: pod-2
spec:
  continers:
    - name: container
      image: tmkube/app
  resources:
    requests:
      memory: 2Gi
    limits:
      memory: 2Gi

LimitRange

๊ฐ๊ฐ์˜ ํŒŒ๋“œ๋งˆ๋‹ค ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š”์ง€ ์ฒดํฌํ•˜๊ธฐ ์œ„ํ•œ object

์ด๋Š” resourceQuota์™€ ๋‹ฌ๋ฆฌ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋‚ด์—์„œ๋งŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ object์ด๋‹ค.

apiVersion: v1
kind: LimitRange
metadata:
  name: lr-1
spec:
  limits:
    - type: Container
      min:
        memory: 0.1Gi
      max:
        memory: 0.4Gi
      maxLimitRequestRatio:
        memory: 3
      defaultRequest:
        memory: 0.1Gi
      default:
        memory: 0.2Gi
kubectl describe limitranges --namespace=nm-5


Reference

์ธํ”„๋Ÿฐ-๊น€ํƒœ๋ฏผ๋‹˜ ๊ฐ•์˜

Last updated