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