์ฟ ๋ฒ๋คํฐ์ค ๊ฐ์
์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ
๊ธฐ๋ณธ ์ค๋ธ์ ํธ
- ํ๋
- ์๋น์ค
- ๋ณผ๋ฅจ
- ๋ค์์คํ์ด์ค
๋์ ์์ค์ ์ถ์ํ
- ๋ํ๋ก์ด๋จผํธ
- ๋ฐ๋ชฌ ์
- ์คํ
์ดํธ ํ ์
- ๋ ํ๋ฆฌ์นด ์
- ์ก
์ฟ ๋ฒ๋คํฐ์ค ์ปจํธ๋กค ํ๋ ์ธ
์ปจํธ๋กค ํ๋ ์ธ์ ์์คํ
๋ด ๋ชจ๋ ์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ์ ๋ ์ฝ๋๋ฅผ ์ ์งํ๋ฉด์ ์ค๋ธ์ ํธ์ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ์ ์ด๋ฃจํ๋ฅผ ์ง์์ ์ผ๋ก ๊ตฌ๋์ํจ๋ค.
์ฟ ๋ฒ๋คํฐ์ค ๋ง์คํฐ
ํด๋ฌ์คํฐ์ ๋ํด ๋ฐ๋ผ๋ ์ํ๋ฅผ ์ ์งํ ์ฑ
์. kubectl๋ก ์ํธ์์ฉํ๋ฉด ๋ง์คํฐ์ ํต์ ํ๋ ๊ฒ
์ฟ ๋ฒ๋คํฐ์ค ๋
ธ๋
VM, ๋ฌผ๋ฆฌ ์๋ฒ ๋ฑ์ด๋ค. ๋ง์คํฐ๋ ๊ฐ ๋
ธ๋๋ฅผ ๊ด๋ฆฌํ๋ค.
์ฟ ๋ฒ๋คํฐ์ค ์ปดํฌ๋ํธ
๋ง์คํฐ ์ปดํฌ๋ํธ
ํด๋ฌ์คํฐ์ ๊ดํ ์ ๋ฐ ์ ์ธ ๊ฒฐ์ (์ค์ผ์ค๋ง ๊ฐ์๊ฑฐ) ๊ณผ ์ด๋ฒคํธ์ ๊ฐ์งํ๊ณ ๋ฐ์
kube-apiserver
k8s api๋ฅผ ๋
ธ์ถํ๋์ปจํฌ๋ํธ. k8s ์ปจํธ๋กค ํ๋ ์ธ์ ํ๋ก ํธ ์๋, ์ํํ์ฅ.
etcd
๋ชจ๋ ํด๋ฌ์คํฐ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ key-value store
kube-scheduler
๋
ธ๋๊ฐ ๋ฐฐ์ ๋์ง ์๋ ์๋ก์์ฑ๋ pod๋ฅผ ๊ฐ์งํ๊ณ ๊ทธ๊ฒ์ด ๊ตฌ๋๋ ๋
ธ๋๋ฅผ ์ ํํ๋ ์ปดํฌ๋ํธ
๋ค์ํ ์์๊ฐ ๊ฒฐ์ ์ ์ํด์ ๊ณ ๋ ค๋จ
kube-controller-manager
์ปจํธ๋กค๋ฌ๋ฅผ ๊ตฌ๋ํ๋ ๋ง์คํฐ ์์ ์ปดํฌ๋ํธ
๋
ผ๋ฆฌ์ ์ผ๋ก๋์ปจํธ๋กค๋ฌ๋ ๊ฐ๋ณ ํ๋ก์ธ์ค ์ด๋ฏธ์ง๋ง, ๋ณต์ก์ฑ์ ๋ฎ์ถ๊ธฐ ์ํด ๋จ์ผ ๋ฐ์ด๋๋ฆฌ๋ก ์ปดํ์ผ๋๊ณ ๋จ์ ํ๋ก์ธ์ค์์ ์คํ๋๋ค.
- ์ปจํธ๋กค๋ฌ : API ์๋ฒ๋ฅผ ํตํด ํด๋ฌ์คํฐ์ ๊ณต์ ๋ ์ํ๋ฅผ ๊ฐ์ํ๊ณ ํ์ฌ ์ํ๋ฅผ ์ํ๋ ์ํ๋ก ์ดํ์ํค๋ ์ปจํธ๋กค ๋ฃจํ
- ๋
ธ๋ ์ปจํธ๋กค๋ฌ : ๋
ธ๋๊ฐ ๋ค์ด๋์์๋ ํต์ง์ ๋์์ ๋ํ ์ฑ
์
- ๋ ํ๋ฆฌ์ผ์ด์
์ปจํธ๋กค๋ฌ : ์๋ง์ ์์ ํ๋๋ค์ ์ ์ง
- ์๋ ํฌ์ธํธ ์ปจํธ๋กค๋ฌ: ์๋น์ค์ ํ๋๋ฅผ ์ฐ๊ฒฐ
- ์๋น์ค ์ด์นด์ดํธ & ํ ํฐ ์ปจํธ๋กค๋ฌ : ์๋ก์ด ๋ค์์คํ์ค์๋ํ ๊ธฐ๋ณธ ๊ณ์ ๊ณผ API ์ ๊ทผ ํ ํฐ์ ์์ฑ
cloud-controller-manager
ํด๋ผ์ฐ๋ ์ ๊ณต ์ฌ์
์์ ์ํธ ์์ฉํ๋ ์ปจํธ๋กค๋ฌ๋ฅผ ์๋. ๋ค์ ์ปจํธ๋กค๋ฌ๋ ํด๋ผ์ฐ๋ ์ ๊ณต์ฌ์
์์ ์์กด์ฑ์ ๊ฐ๋๋ค.
- ๋
ธ๋ ์ปจํธ๋กค๋ฌ : ๋
ธ๋๊ฐ ์๋ต์ ๋ฉ์ถ๋ฉด ์ญ์ ๋์๋์ง ํด๋ผ์ฐ๋ ์ ๊ณต์ฌ์
์์๊ฒ ํ์ธ
- ๋ผ์ฐํธ ์ปจํธ๋กค๋ฌ : ํด๋ผ์ฐ๋ ์ธํ๋ผ์ ๊ฒฝ๋ก๋ฅผ ๊ตฌ์ฑ
- ์๋น์ค ์ปจํธ๋กค๋ฌ : ํด๋ผ์ฐ์ฆ ์ ๊ณต ์ฌ์
์ ๋ก๋๋ฐธ๋ฐ์๋ฅผ ์์ฑ, ์
๋ฐ์ดํธ, ์ญ์
- ๋ณผ๋ฅจ ์ปจํธ๋กค๋ฌ : ๋ณผ๋ฅจ์ ์์ฑ, ๋ถ์ฐฉ, ๋ง์ดํธ, ์กฐ์ ์ ์ํด ํด๋ผ์ฐ๋ ์ ๊ณต์ฌ์
์์ ์ํธ์์ฉ
๋
ธ๋ ์ปดํฌ๋ํธ
๋์ ์ค์ธ Pod ์ ์ง, ์ฟ ๋ฒ๋คํฐ์ค ๋ฐํ์ ํ๊ฒฝ ์ ๊ณต, ๋ชจ๋ ๋
ธ๋ ์์์ ๋์
kubelet
์์ด์ ํธ๋ก ํ๋์์ ์ปจํ
์ด๋๊ฐ ํ์คํ๊ฒ ๋์ํ๋๋ก ๊ด๋ฆฌํ๋ค. PodSpec์ ๋ง๊ฒ ๋์ํ๋์ง ๋ณด์ฅํ๋ค.
kube-proxy
๋คํธ์ํฌ ํ๋ก์, ์ฟ ๋ฒ๋คํฐ์ค Service ๊ฐ๋
์ ๊ตฌํ, ๋
ธ๋์ ๋คํธ์ํฌ ๊ท์น์ ๊ด๋ฆฌํ๋ค.
์ปจํ
์ด๋ ๋ฐํ์
์ปจํ
์ด๋ ์คํ์ ๋ด๋น
์ ๋์จ
์ฟ ๋ฒ๋คํฐ์ค ๋ฆฌ์์ค(๋ฐ๋ชฌ ์
, ๋ํ๋ก์ด๋จผํธ)๋ฅผ ํตํ ํด๋ฌ์คํฐ ๊ธฐ๋ฅ ๊ตฌํ
DNS
๋ชจ๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ DNS๊ฐ ์กด์ฌ, DNS๋ฅผ ์ ๊ณตํ๋ค.
์น UI
๋์๋ณด๋ ํด๋ฌ์คํฐ๋ฅผ ์ํ ๋ฒ์ฉ์ ์น๊ธฐ๋ฐ UI
์ปจํ
์ด๋ ๋ฆฌ์์ค ๋ชจ๋ํฐ๋ง
์๊ณ์ด ๋งคํธ๋ฆญ์ค, ์กฐํ๋ฅผ ์ํ UI
ํด๋ฌ์คํฐ ๋ ๋ฒจ ๋ก๊น
์ค์๋ก๊ทธ ์ ์ฅ์์ ์ปจํ
์ด๋ ๋ก๊ทธ๋ฅผ ์ ์ฅ. ๊ฒ์๊ณผ ์ด๋ ์ธํฐํ์ด์ค ์ ๊ณต
๋๋จธ์ง ์ ๋์จ ๋ค
https://kubernetes.io/docs/concepts/cluster-administration/addons/
์ฟ ๋ฒ๋คํฐ์ค API
์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ
์ฟ ๋ฒ๋คํฐ์ค์์ ์์์ฑ์ ๊ฐ์ง๋ ๊ฐ์ฒด, ํด๋ฌ์คํฐ์ ์ํ๋ฅผ ๋ํ๋. ์๋๋ฅผ ๋ด์ ๋ ์ฝ๋
์ค๋ธ์ ํธ Spec & Status
์ฟ ๋ฒ๋คํฐ์ค ์์คํ
์ Status๋ฅผ Spec์ ๋ง๋๋ก ๋ฅ๋์ ์ผ๋ก ๊ด๋ฆฌํ๋ค.
Spec
์๋ํ ์ํ๋ฅผ ๊ธฐ์
Status
์ค๋ธ์ ํธ์ ์ค์ ์ํ๋ฅผ ๊ธฐ์ , ์ฟ ๋ฒ๋คํฐ์ค์ ์ํด ์ ๊ณต๋๊ณ ์
๋ฐ์ดํธ
์ค๋ธ์ ํธ ๊ธฐ์
๋ณดํต์ .yamlํ์ผ๋ก ๊ธฐ์ ํ๊ณ kubectl์ ์ ๋ณด๋ฅผ ์ ๊ณตํด์ค๋ค.
ํ์ ํ๋
- apiVersion: ํด๋น ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ๊ธฐ ์ํด ์ฌ์ฉํ๊ณ ์๋ ์ฟ ๋ฒ๋คํฐ์ค API ๋ฒ์ ์ด ๋ฌด์์ธ์ง
- kind : ์ด๋ค ์ข
๋ฅ์ ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ๋์ง
- metadata : ์ค๋ธ์ ํธ๋ฅผ ์ ์ผํ๊ฒ ๊ตฌ๋ถ์ง์ด ์ค ๋ฐ์ดํฐ
- spec : ์ค๋ธ์ ํธ์ ๋ํด ์ด๋ค ์ํ๋ฅผ ์๋ํ๋์ง
์ค๋ธ์ ํธ ๊ด๋ฆฌ ๋ฐฉ๋ฒ
๋ช
๋ นํ ๋ช
๋ น์ด
kubectl์ ์ด์ฉํด์ ์ง์ ๋์์ํค๋ ๋ฐฉ์. ๊ฐ๋จํ์ง๋ง ๊ด๋ฆฌ๊ฐ ์ด๋ ค์
๋ช
๋ นํ ์ค๋ธ์ ํธ ๊ตฌ์ฑ
YAML ํ์ผ์ ์ด์ฉํ ๋ฐฉ๋ฒ. ๊ด๋ฆฌํ๊ธฐ ์ข์ง๋ง, ๋ฌธ๋ฒ์ดํด๊ฐ ํ์. ๋ง์ด ์ฌ์ฉํ๋ ๋ฐฉ์
์ ์ธํ ์ค๋ธ์ ํธ ๊ตฌ์ฑ
(์ดํด ์๋จ)
ํ์ผ์์ ์ํํ ์์
์ ์ ์ํ์ง ์๊ณ ๋ก์ปฌ ์ค๋ธ์ ํธ ๊ตฌ์ฑํ์ผ์ ๋์์ผ๋ก ๋์ํจ, kubectl์ ์ํด ์์ฑ, ์
๋ฐ์ดํธ, ์ญ์ ๊ฐ ๊ฐ์ง๋๋ค. ๋ณดํต ๋๋ ํ ๋ฆฌ๋ฅผ ๋์์ผ๋ก ๋์.
์์ธก์ด ๋ถ๊ฐ๋ฅํ ์ํฉ์์ ๋๋ฒ๊น
์ ์ด๋ ค์, ๋ณต์กํด์ง
์ด๋ฆ
ํด๋ฌ์คํฐ์ ๊ฐ ์ค๋ธ์ ํธ๋ ํด๋น ์ ํ์ ๋ฆฌ์์ค์ ๋ํด ๊ณ ์ ํ ์ด๋ฆ๊ณผ UID์ ๊ฐ์ง๊ณ ์๋ค.
Name
๋์ผํ ๋ฌผ๋ฆฌ ํด๋ฌ์คํฐ์์ ๋ค์ค์ ๊ฐ์ํด๋ฌ์คํฐ๋ฅผ ์ง์ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ถ์ํ
UID
์ค๋ธ์ ํธ๋ฅผ ์ค๋ณต์์ด ์๋ณํ๊ธฐ ์ํด ์ฟ ๋ฒ๋คํฐ์ค ์์คํ
์ด ์์ฑํ๋ ๋ฌธ์์ด
๋ค์์คํ์ด์ค
๋์ผ ๋ฌผ๋ฆฌ ํด๋ฌ์คํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋ณต์์ ๊ฐ์ ํด๋ฌ์คํฐ, ์ด๋ฆ์ ๋ฒ์๋ฅผ ์ ๊ณต
๋ค์ ์คํ์ด์ค์ ์ํ์ง ์๋ ๊ฒฝ์ฐ
๋
ธ๋, ํผ์์คํดํธ ๋ณผ๋ฅจ๋ฑ์ ์ ์์ค ๋ฆฌ์์ค, ๋ค์์คํ์ด์ค ์์ฒด
๋ ์ด๋ธ
ํ๋์ ๊ฐ์ ์ค๋ธ์ ํธ์ ์ฒจ๋ถ ๋ ํค์ ๊ฐ์ ์, ์ฌ์ฉ์์ ์ค๋ธ์ ํธ์ ํน์ฑ์ ์๋ณํ๋ ๋ฐ ์ฌ์ฉ ๋๋ค. ๋ ์ด๋ธ์ ์ธ์ ๊ฐ ์์ ์ด ๊ฐ๋ฅํ๋ค.
์
๋ ํฐ
๋ ์ด๋ธ์ ๊ณ ์ ํ์ง ์๋ค. ๋ง์ ์ค๋ธ์ ํธ์ ๊ฐ์ ๋ ์ด๋ธ์ ๊ฐ์ง ์ ์๋ค. ๋ ์ด๋ธ ์
๋ ํฐ๋ฅผ ํตํด ์ค๋ธ์ ํธ๋ฅผ ์๋ณํ ์ ์๋ค.
- ์ผ์น์ฑ ๊ธฐ์ค : ์ผ์น ๋๋ ๋ถ์ผ์น๋ก ๋ ์ด๋ธ์ ํค์ ๊ฐ์ ํํฐ๋ง์ ํ์ฉํ๋ค.
//accelerator=nvidia-tesla-p100์ธ ๋ ์ด๋ธ์ ๊ฐ์ง ๋
ธ๋๋ฅผ ์ ํํ๋ ๊ฒฝ์ฐ
apiVersion: v1
kind: Pod
metadata:
name: cuda-test
spec:
containers:
- name: cuda-test
image: "k8s.gcr.io/cuda-vector-add:v0.1"
resources:
limits:
nvidia.com/gpu: 1
nodeSelector:
accelerator: nvidia-tesla-p100
- ์งํฉ์ฑ ๊ธฐ์ค : ๋ ์ด๋ธ ์๊ฑด์ ๋ฐ๋ผ ๊ฐ์งํฉ์ ํค๋ก ํํฐ๋ง ํ ์ ์๋ค.
์ด๋
ธํ
์ด์
์ฟ ๋ฒ๋คํฐ์ค ์ด๋
ธํ
์ด์
์ ์ฌ์ฉํ์ฌ ์์์ ๋น์๋ณ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ค๋ธ์ ํธ์ ์ฒจ๋ถ ํ ์ ์๋ค.
์ค๋ธ์ ํธ์ ์ฒจ๋ถ
๋ ์ด๋ธ๊ณผ ๋ฌ๋ฆฌ ์๋ณํ๋๋ฐ ์ฌ์ฉํ์ง ์๋๋ค.
ํ๋ ์
๋ ํฐ
ํ ๊ฐ ์ด์์ ๋ฆฌ์์ค ํ๋ ๊ฐ์ ๋ฐ๋ผ ์ฟ ๋ฒ๋คํฐ์ค ๋ฆฌ์์ค๋ฅผ ์ ํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
ex)
- metadata.name=my-service
- metadata.namespace!=default
- status.phase=Pending