ํด๋น ๋ฌธ์์ ์ฟ ๋ฒ๋คํฐ์ค ๋ฒ์ : v1.33
Kubernetes v1.33 ๋ฌธ์๋ ๋ ์ด์ ์ ๊ทน์ ์ผ๋ก ๊ด๋ฆฌ๋์ง ์์. ํ์ฌ ๋ณด๊ณ ์๋ ๋ฌธ์๋ ์ ์ ์ค๋ ์ท์. ์ต์ ๋ฌธ์๋ฅผ ์ํด์๋, ๋ค์์ ์ฐธ๊ณ . ์ต์ ๋ฒ์ .
์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ ์ดํดํ๊ธฐ
์ด ํ์ด์ง์์๋ ์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ๊ฐ ์ฟ ๋ฒ๋คํฐ์ค API์์ ์ด๋ป๊ฒ ํํ๋๊ณ , ๊ทธ ์ค๋ธ์ ํธ๋ฅผ
์ด๋ป๊ฒ .yaml
ํ์์ผ๋ก ํํํ ์ ์๋์ง์ ๋ํด ์ค๋ช
ํ๋ค.
์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ ์ดํดํ๊ธฐ
์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ ๋ ์ฟ ๋ฒ๋คํฐ์ค ์์คํ ์์ ์์์ฑ์ ๊ฐ์ง๋ ์ค๋ธ์ ํธ์ด๋ค. ์ฟ ๋ฒ๋คํฐ์ค๋ ํด๋ฌ์คํฐ์ ์ํ๋ฅผ ๋ํ๋ด๊ธฐ ์ํด ์ด ์ค๋ธ์ ํธ๋ฅผ ์ด์ฉํ๋ค. ๊ตฌ์ฒด์ ์ผ๋ก ๋งํ์๋ฉด, ๋ค์๊ฐ์ด ๊ธฐ์ ํ ์ ์๋ค.
- ์ด๋ค ์ปจํ ์ด๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋์ ์ค์ธ์ง (๊ทธ๋ฆฌ๊ณ ์ด๋ ๋ ธ๋์์ ๋์ ์ค์ธ์ง)
- ๊ทธ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด์ฉํ ์ ์๋ ๋ฆฌ์์ค
- ๊ทธ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด๋ป๊ฒ ์ฌ๊ตฌ๋ ์ ์ฑ , ์ ๊ทธ๋ ์ด๋, ๊ทธ๋ฆฌ๊ณ ๋ด๊ณ ์ฅ์ฑ๊ณผ ๊ฐ์ ๊ฒ์ ๋์ํด์ผ ํ๋์ง์ ๋ํ ์ ์ฑ
์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ๋ ํ๋์ "์๋๋ฅผ ๋ด์ ๋ ์ฝ๋"์ด๋ค. ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ๊ฒ ๋๋ฉด, ์ฟ ๋ฒ๋คํฐ์ค ์์คํ ์ ๊ทธ ์ค๋ธ์ ํธ ์์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ง์์ ์ผ๋ก ์๋ํ ๊ฒ์ด๋ค. ์ค๋ธ์ ํธ๋ฅผ ์์ฑํจ์ผ๋ก์จ, ์ฌ๋ฌ๋ถ์ด ํด๋ฌ์คํฐ์ ์ํฌ๋ก๋๋ฅผ ์ด๋ค ํํ๋ก ๋ณด์ด๊ณ ์ ํ๋์ง์ ๋ํด ํจ๊ณผ์ ์ผ๋ก ์ฟ ๋ฒ๋คํฐ์ค ์์คํ ์ ์ ํ๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ์ฌ๋ฌ๋ถ์ ํด๋ฌ์คํฐ์ ๋ํด ์๋ํ ์ํ ๊ฐ ๋๋ค.
์์ฑ์ด๋ , ์์ ์ด๋ , ๋๋ ์ญ์ ๋ ์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ๋ฅผ ๋์์ํค๋ ค๋ฉด,
์ฟ ๋ฒ๋คํฐ์ค API๋ฅผ ์ด์ฉํด์ผ ํ๋ค. ์๋ฅผ ๋ค์ด,
kubectl
์ปค๋งจ๋-๋ผ์ธ ์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํ ๋, CLI๋ ์ฌ๋ฌ๋ถ ๋์ ํ์ํ ์ฟ ๋ฒ๋คํฐ์ค API๋ฅผ ํธ์ถํด ์ค๋ค.
๋ํ, ์ฌ๋ฌ๋ถ์ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋๋ฅผ
์ด์ฉํ์ฌ ์ฌ๋ฌ๋ถ๋ง์ ํ๋ก๊ทธ๋จ์์ ์ฟ ๋ฒ๋คํฐ์ค API๋ฅผ ์ง์ ์ด์ฉํ ์๋ ์๋ค.
์ค๋ธ์ ํธ ๋ช ์ธ(spec)์ ์ํ(status)
๊ฑฐ์ ๋ชจ๋ ์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ๋ ์ค๋ธ์ ํธ์ ๊ตฌ์ฑ์ ๊ฒฐ์ ํด์ฃผ๋
๋ ๊ฐ์ ์ค์ฒฉ๋ ์ค๋ธ์ ํธ ํ๋๋ฅผ ํฌํจํ๋๋ฐ ์ค๋ธ์ ํธ spec
๊ณผ ์ค๋ธ์ ํธ status
์ด๋ค.
spec
์ ๊ฐ์ง ์ค๋ธ์ ํธ๋ ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ ๋ ๋ฆฌ์์ค์
์ํ๋ ํน์ง(์๋ํ ์ํ)์ ๋ํ ์ค๋ช
์
์ ๊ณตํด์ ์ค์ ํ๋ค.
status
๋ ์ฟ ๋ฒ๋คํฐ์ค ์์คํ
๊ณผ ์ปดํฌ๋ํธ์ ์ํด ์ ๊ณต๋๊ณ
์
๋ฐ์ดํธ๋ ์ค๋ธ์ ํธ์ ํ์ฌ ์ํ ๋ฅผ ์ค๋ช
ํ๋ค. ์ฟ ๋ฒ๋คํฐ์ค
์ปจํธ๋กค ํ๋ ์ธ์ ๋ชจ๋ ์ค๋ธ์ ํธ์
์ค์ ์ํ๋ฅผ ์ฌ์ฉ์๊ฐ ์๋ํ ์ํ์ ์ผ์น์ํค๊ธฐ ์ํด ๋์์์ด ๊ทธ๋ฆฌ๊ณ
๋ฅ๋์ ์ผ๋ก ๊ด๋ฆฌํ๋ค.
์๋ฅผ ๋ค์ด, ์ฟ ๋ฒ๋คํฐ์ค ๋ํ๋ก์ด๋จผํธ๋ ํด๋ฌ์คํฐ์์ ๋์ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํํํด์ค ์ ์๋ ์ค๋ธ์ ํธ์ด๋ค. ๋ํ๋ก์ด๋จผํธ๋ฅผ ์์ฑํ ๋, ๋ํ๋ก์ด๋จผํธ spec์ 3๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ ํ๋ฆฌ์นด๊ฐ ๋์๋๋๋ก ์ค์ ํ ์ ์๋ค. ์ฟ ๋ฒ๋คํฐ์ค ์์คํ ์ ๊ทธ ๋ํ๋ก์ด๋จผํธ spec์ ์ฝ์ด spec์ ์ผ์น๋๋๋ก ์ํ๋ฅผ ์ ๋ฐ์ดํธํ์ฌ 3๊ฐ์ ์๋ํ ์ ํ๋ฆฌ์ผ์ด์ ์ธ์คํด์ค๋ฅผ ๊ตฌ๋์ํจ๋ค. ๋ง์ฝ, ๊ทธ ์ธ์คํด์ค๋ค ์ค ์ด๋ ํ๋๊ฐ ์ด๋ค ๋ฌธ์ ๋ก ์ธํด ๋ฉ์ถ๋ค๋ฉด(์ํ ๋ณํ ๋ฐ์), ์ฟ ๋ฒ๋คํฐ์ค ์์คํ ์ ๋ณด์ (์ด ๊ฒฝ์ฐ์๋ ๋์ฒด ์ธ์คํด์ค๋ฅผ ์์ํ์ฌ)์ ํตํด spec๊ณผ status๊ฐ์ ์ฐจ์ด์ ๋์ํ๋ค.
์ค๋ธ์ ํธ ๋ช ์ธ, ์ํ, ๊ทธ๋ฆฌ๊ณ ๋ฉํ๋ฐ์ดํฐ์ ๋ํ ์ถ๊ฐ ์ ๋ณด๋, Kubernetes API Conventions ๋ฅผ ์ฐธ์กฐํ๋ค.
์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ ๊ธฐ์ ํ๊ธฐ
์ฟ ๋ฒ๋คํฐ์ค์์ ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ ๋, (์ด๋ฆ๊ณผ ๊ฐ์)์ค๋ธ์ ํธ์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ์ ๋ณด์ ๋๋ถ์ด,
์๋ํ ์ํ๋ฅผ ๊ธฐ์ ํ ์ค๋ธ์ ํธ spec์ ์ ์ํด ์ค์ผ๋ง ํ๋ค. ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ๊ธฐ ์ํด
(์ง์ ์ด๋ ๋๋ kubectl
์ ํตํด์๋ ) ์ฟ ๋ฒ๋คํฐ์ค API๋ฅผ ์ด์ฉํ ๋, API ์์ฒญ์ ์์ฒญ ๋ด์ฉ ์์
JSON ํ์์ผ๋ก ์ ๋ณด๋ฅผ ํฌํจ์์ผ ์ค์ผ๋ง ํ๋ค. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ ๋ณด๋ฅผ .yaml ํ์ผ๋ก kubectl
์
์ ๊ณตํ๋ค. kubectl
์ API ์์ฒญ์ด ์ด๋ฃจ์ด์ง ๋, JSON ํ์์ผ๋ก ์ ๋ณด๋ฅผ
๋ณํ์์ผ ์ค๋ค.
์ฌ๊ธฐ ์ฟ ๋ฒ๋คํฐ์ค ๋ํ๋ก์ด๋จผํธ๋ฅผ ์ํ ํ์ ํ๋์ ์ค๋ธ์ ํธ spec์ ๋ณด์ฌ์ฃผ๋ .yaml
ํ์ผ ์์๊ฐ ์๋ค.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2 # tells deployment to run 2 pods matching the template
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
์ ์์์ ๊ฐ์ด .yaml ํ์ผ์ ์ด์ฉํ์ฌ ๋ํ๋ก์ด๋จผํธ๋ฅผ ์์ฑํ๊ธฐ ์ํ ํ๋์ ๋ฐฉ์์ผ๋ก๋
kubectl
์ปค๋งจ๋-๋ผ์ธ ์ธํฐํ์ด์ค์ ์ธ์๊ฐ์ผ๋ก .yaml
ํ์ผ์ ๊ฑด๋ค
kubectl apply
์ปค๋งจ๋๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด๋ค. ๋ค์ ์์์ ๊ฐ๋ค.
kubectl apply -f https://k8s.io/examples/application/deployment.yaml
๊ทธ ์ถ๋ ฅ ๋ด์ฉ์ ๋ค์๊ณผ ์ ์ฌํ๋ค.
deployment.apps/nginx-deployment created
์๊ตฌ๋๋ ํ๋
์์ฑํ๊ณ ์ ํ๋ ์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ์ ๋ํ .yaml
ํ์ผ ๋ด, ๋ค์ ํ๋๋ฅผ ์ํ ๊ฐ๋ค์ ์ค์ ํด ์ค์ผํ๋ค.
apiVersion
- ์ด ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ๊ธฐ ์ํด ์ฌ์ฉํ๊ณ ์๋ ์ฟ ๋ฒ๋คํฐ์ค API ๋ฒ์ ์ด ์ด๋ค ๊ฒ์ธ์งkind
- ์ด๋ค ์ข ๋ฅ์ ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ๊ณ ์ ํ๋์งmetadata
-์ด๋ฆ
๋ฌธ์์ด,UID
, ๊ทธ๋ฆฌ๊ณ ์ ํ์ ์ธ๋ค์์คํ์ด์ค
๋ฅผ ํฌํจํ์ฌ ์ค๋ธ์ ํธ๋ฅผ ์ ์ผํ๊ฒ ๊ตฌ๋ถ์ง์ด ์ค ๋ฐ์ดํฐspec
- ์ค๋ธ์ ํธ์ ๋ํด ์ด๋ค ์ํ๋ฅผ ์๋ํ๋์ง
์ค๋ธ์ ํธ spec
์ ๋ํ ์ ํํ ํฌ๋งท์ ๋ชจ๋ ์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ๋ง๋ค ๋ค๋ฅด๊ณ , ๊ทธ ์ค๋ธ์ ํธ ํน์ ์
์ค์ฒฉ๋ ํ๋๋ฅผ ํฌํจํ๋ค. ์ฟ ๋ฒ๋คํฐ์ค API ๋ ํผ๋ฐ์ค ๋
์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ด์ฉํ์ฌ ์์ฑํ ์ ์๋ ์ค๋ธ์ ํธ์ ๋ํ ๋ชจ๋ spec ํฌ๋งท์ ์ดํด๋ณผ ์ ์๋๋ก ํด์ค๋ค.
์๋ฅผ ๋ค์ด, ํ๋ API ๋ ํผ๋ฐ์ค๋ฅผ ๋ณด๋ ค๋ฉด
spec
ํ๋๋ฅผ ์ฐธ์กฐํ๋ค.
๊ฐ ํ๋์ ๋ํด, .spec
ํ๋๋ ํ๋ ๋ฐ ํ๋์ ์ํ๋ ์ํ(desired state)๋ฅผ
๊ธฐ์ ํ๋ค(์: ํ๋์ ๊ฐ ์ปจํ
์ด๋์ ๋ํ ์ปจํ
์ด๋ ์ด๋ฏธ์ง).
์ค๋ธ์ ํธ ์์ธ์ ๋ํ ๋ ๋ค๋ฅธ ์์๋ ์คํ
์ดํธํ์
API์
spec
ํ๋์ด๋ค.
์คํ
์ดํธํ์
์ ๊ฒฝ์ฐ, .spec
ํ๋๋ ์คํ
์ดํธํ์
๋ฐ ์คํ
์ดํธํ์
์ ์ํ๋ ์ํ(desired state)๋ฅผ ๊ธฐ์ ํ๋ค.
์คํ
์ดํธํ์
์ .spec
์๋ ํ๋ ์ค๋ธ์ ํธ์ ๋ํ
ํ
ํ๋ฆฟ์ด ์กด์ฌํ๋ค.
์ด ํ
ํ๋ฆฟ์ ์คํ
์ดํธํ์
๋ช
์ธ๋ฅผ ๋ง์กฑ์ํค๊ธฐ ์ํด
์คํ
์ดํธํ์
์ปจํธ๋กค๋ฌ๊ฐ ์์ฑํ ํ๋์ ๋ํ ์์ธ ์ฌํญ์ ์ค๋ช
ํ๋ค.
์๋ก ๋ค๋ฅธ ์ข
๋ฅ์ ์ค๋ธ์ ํธ๋ ์๋ก ๋ค๋ฅธ .status
๋ฅผ ๊ฐ์ง ์ ์๋ค.
๋ค์ ํ๋ฒ ๋งํ์๋ฉด, ๊ฐ API ๋ ํผ๋ฐ์ค ํ์ด์ง๋ ๊ฐ ์ค๋ธ์ ํธ ํ์
์ ๋ํด ํด๋น .status
ํ๋์ ๊ตฌ์กฐ์ ๋ด์ฉ์ ๋ํด ์๊ฐํ๋ค.
๋ค์ ๋ด์ฉ
- ํ๋์ ๊ฐ์ด, ๊ฐ์ฅ ์ค์ํ๊ณ ๊ธฐ๋ณธ์ ์ธ ์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ์ ๋ํด ๋ฐฐ์ด๋ค.
- ์ฟ ๋ฒ๋คํฐ์ค์ ์ปจํธ๋กค๋ฌ์ ๋ํด ๋ฐฐ์ด๋ค.
- API ๊ฐ๋ ์ ๋ ๋ง์ ์ค๋ช ์ ์ฟ ๋ฒ๋คํฐ์ค API ์ฌ์ฉ์ ๋ณธ๋ค.