1. Kubernetes ๋์์๋ฆฌ
- ์ฟ ๋ฒ๋คํฐ์ค์ ์ปจํ ์ด๋๊ฐ ์ด๋ป๊ฒ ๋ง๋ค์ด์ ธ์ ์ด์๊น์ง์ ํ๋ฆ์ด ์ด๋ค ํํ๋ก ๋์ํ๋์ง
-
๊ฐ๋ฐ์ (or ์ด์์)๊ฐ ์ปจํ ์ด๋๋ฅผ k8s ํ๋ซํผ์ ์ฌ๋ ค์ ์คํํ๋ ค๋๊ฒ์ด ๋ชฉ์
-
- ์ปจํ ์ด๋ ๋น๋
-
- docker ๋ช ๋ น์ผ๋ก hub์ push
-
- kubectl ๋ช ๋ น์ผ๋ก k8s์๊ฒ ์ด ์ปจํ ์ด๋๊ฐ ์คํ๋๋๋ก ๋ช ๋ น (yml, cli โฆ)
-
- ๋ง๋ค์ด์ง kubectl ๋ช ๋ น์ด control-plane์๊ฒ ๋ณด๋
-
- Control-plane์ ์๋ rest api server๊ฐ ๋ฐ์์ค
-
- ์ค์ผ์ค๋ฌ๊ฐ ์ด๋ค ์์ ๋ ธ๋์ ๋ฐฐ์นํ๋ฉด ์ข์์ง ๊ฒฐ์ . ๊ฒฐ์ ๋ ๋ ธ๋์ kubelet์ ์คํ ์์ฒญ
-
- ์์ฒญ ๋ฐ์ ๋ ธ๋๋ kubelet ๋ช ๋ น์ด๋ฅผ docker๋ก ๋ณ๊ฒฝํ์ฌ docker daemon์๊ฒ ์ค์ ์ปจํ ์ด๋ ์คํ ์์ฒญ
-
- docker daemon์ hub์์ ํด๋น ์ปจํ ์ด๋ ์ด๋ฏธ์ง searchํ ํ์ pull , run
-
- k8s๋ ์ด๋ ๊ฒ ๋์๋๋ ์ปจํ ์ด๋๋ฅผ pod๋ผ๋ ๋จ์๋ก ๊ด๋ฆฌ
kubernetes component
- Control plane component
-
Kube-apiserver
- kubectl ๋ช ๋ น์ผ๋ก ๋ ์์ฒญ ๋ฐ๋ ์ปดํฌ๋ํธ
- ๋ฌธ๋ฒ, ๊ถํ ๋ฑ์ด ํฉ๋นํ์ง ๊ฒ์ฌ -> ํฉ๋นํ๋ฉด ์คํ
-
etcd storage
- Key-value ํ์ ์ผ๋ก ์ ์ฅ
- worker node๋ค์ ๋ํ ์ํ ์ ๋ณด (hw ๋ฆฌ์์ค, ๋์์ค์ธ ์ปจํ ์ด๋ ์ํโฆ)
- kubelet ์์๋ cAdvisor ๋ผ๋ ์ปจํ ์ด๋ ๋ชจ๋ํฐ๋ง ํด์ด ํฌํจ๋์ด ์์
- cAdvisor๊ฐ ์์งํ ์ ๋ณด๋ค์ control-plane์์ ์๋ etcd์ ์ ์ฅ
- kubelet์ daemon์ด๋ผ์ ๊ณ์ ์งํ๋จ
-
scheduler
- api๋ก ๋ฐ์ ์์ฒญ์ ๋ฌธ๋ฒ ์ฒดํฌํ ํ etcd์ ์๋ worker node ์ํ์ ๋ณด ๋ฐ์์ scheduler์๊ฒ ์์ฒญ
- ์ด๋ค worker node์ ์ปจํ ์ด๋ ์คํํ๋๊ฒ์ด ์ข์์ง
- ๊ฒฐ์ ๋ worker node ์ ๋ณด๋ฅผ ๊ฐ๊ณ api ๊ฐ ํด๋น node์ kubelet์ ์ ์
-
์ปจํ ์ด๋ ์คํํด๋ฌ๋ผ๊ณ ์์ฒญ
- kubelet์ด docker์๊ฒ ์ปจํ ์ด๋ ์คํํด๋ฌ๋ผ๊ณ ์์ฒญ
-
kube-controller-manager
- pod๋ฅผ ๊ด์ฐฐํ๋ฉฐ ๊ฐ์๋ฅผ ๋ณด์ฅ
- ์ปจํ ์ด๋๊ฐ ์คํ๋๊ณ ์๋ worker node ํ๋๊ฐ ๊ฐ์๊ธฐ ๋ค์ด๋ ๊ฒฝ์ฐ ํด๋น ํ๋ก์ธ์ค ๋ค ์ฌ๋ผ์ ธ ๋ฒ๋ฆผ
- control-plane์ ์๋ controller๊ฐ ํ์ ํ ํ api์๊ฒ ์์ฒญ
- ๋ค์ scheduler ํตํด์ ํ์ํ ๊ณณ์ ์ปจํ ์ด๋ ๋ค์ ์คํ
- worker node component
- kubelet
- ๋ชจ๋ ๋ ธ๋์์ ์คํ๋๋ k8s ์์ด์ ํธ
- ๋ฐ๋ชฌ ํํ๋ก ๋์
- kube-proxy
- k8s์ network ๋์์ ๊ด๋ฆฌ
- container runtime
- ์ปจํ ์ด๋ ์คํํ๋ ์์ง
- ์ฐ๋ฆฌ๋ docker ์ฌ์ฉ
์ ๋์จ ํ๋ก๊ทธ๋จ
- ํ์ํ๋ค๋ฉด ์ถ๊ฐ๋ก ์ง์ด๋ฃ์ด์ ์ฌ์ฉ ๊ฐ๋ฅ
- coreDNS๋ ๊ธฐ๋ณธ์ผ๋ก ์ค์น๋จ
- weavenet์ kube ์ค์นํ ๋ ์ด๋ฏธ ํ์
- ๋คํธ์ํฌ ์ ๋์จ
- CNI - weave, calico, flanld, kube-route
- Dns ์ ๋์จ - coreDNS
- ๋์๋ณด๋ ์ ๋์จ
- pods, depoyments. api ๋ฆฌ์์ค
-
ํด๋ฌ์คํฐ ๋ก๊น
- ์ปจํ ์ด๋ ๋ก๊ทธ, k8s ์ด์ ๋ก๊ทธ๋ค์ ์์งํด์ ์ค์ํ
- ELK, EFK, DataDog
2. Namespace
namespace๋
- K8s api ์ข ๋ฅ ์ค ํ๋
- ํด๋ฌ์คํฐ ํ๋๋ฅผ ์ฌ๋ฌ ๊ฐ์ ๋ ผ๋ฆฌ์ ์ธ ๋จ์๋ก ๋๋ ์ ์ฌ์ฉ
- K8s ํด๋ฌ์คํฐ ํ๋๋ฅผ ์ฌ๋ฌ ํ์ด๋ ์ฌ์ฉ์๊ฐ ํจ๊ป ๊ณต์
- ์ฉ๋์ ๋ฐ๋ผ ์คํํด์ผ ํ๋ ์ฑ์ ๊ตฌ๋ถํ ๋ ์ฌ์ฉ
์์
- ์๋๋ control-plane 1๊ฐ worker node 2๊ฐ
- ๊ทผ๋ฐ api ๊ธฐ์ค์ผ๋ก ํด๋ฌ์คํฐ ์ฌ๋ฌ๊ฐ ์๋ ๊ฒ ์ฒ๋ผ
$ kubectl create namespace -hs
$ kubectl create namespace -ds
$ kubectl create namespace -dutyfree
- Hs, ds, dutyfree ์ด๋ผ๋ ๊ฐ๊ฐ namespace ๋ง๋ค์ด์ง
- (API, pod, service โฆ)
- A ๊ทธ๋ฃน์ ํ์ผํ์์ ์ด์๋๋ pod๋ ๋ค hs namespace ์์ ์ด์
- A ๊ทธ๋ฃน์ ๋ฐฑํ์ ์์ ์ด์๋๋ pod๋ ๋ค ds namespace ์์ ์ด์
- A ๊ทธ๋ฃน์ ๋ฉด์ธ์ ์์ ์ด์๋๋ pod๋ ๋ค dutyfree namespace ์์ ์ด์
- ์ค์ ์ฅ๋น๋ ํ๋์ง๋ง ์์คํ ์ด ๋ฐ๋ก ์๋ ๊ฒ ์ฒ๋ผ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋๋ ์ ์ธ ์ ์๊ฒํ๋ ๊ฒ - namespace
์ฅ์
$ kubectl get pod
-
ํด๋น namespace์์ ๋์์ค์ธ ์ ํ๋ฆฌ์ผ์ด์ ๋ง ๋ถ๋ฅ์์ผ์ ๋ณผ ์ ์์
-
์๋ง์ pod๋ค์ด ๋์๋๋๋ฐ ๋ถ๋ฅํ์ฌ ๊ด๋ฆฌ๊ฐ๋ฅ
$ kubectl create deploy ui --image=nginx --namespace hs
$ kubectl create deploy ui --image=nginx --namespace ds
$ kubectl create deploy ui --image=nginx --namespace dutyfree
- ์ค์ ๋ง๋ค์ด์ง ui๋ ์ธ๊ฐ
์์ฑ
1) CLI
$ kubectl get namespaces
- ํ์ฌ ์์คํ ์ด namespace ๋ช๊ฐ ์๋์ง
- k8s์์ ์ค์น๋ ๋ ๊ธฐ๋ณธ์ผ๋ก 4๊ฐ ๋ค์ด๊ฐ
$ kubectl get pods -n hs
$ kubectl get pods --all-namespace
- Hs namespace ์ ์๋ pod ๋ณด์ฌ์ค๋ผ
- ์น๋ค ๋ณด์ฌ์ค๋ผ
$ kubectl create namespace blue
- blue namespace ์์ฑ
2) yaml
$ kubectl create namespace orange --dry-run -o yaml > orange-ns.yaml
- ์ค์ ๋ก ๋ง๋ค์ง ๋ง๊ณ ๋ง๋ค ์ ์๋์ง ํ์ธ๋ง
- ๊ทธ ๊ฒฐ๊ณผ๋ฅผ yamlํ์ผ (orange-ns.yaml) ๋ก ๋ณด์ฌ์ค
$ kubectl create -f orange-ns.yaml
- yamlํ์ผ์ ์์คํ ์์ ํญ์ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์ธ์ ๋ ๋ง๋ค ์ ์์
์คํ
$ kubectl craete -f nginx.yaml -n blue
- Nginx.yaml๋ฅผ blue namespace์์ ์คํ
switch
- ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ๋ namespace๋ฅผ default๊ฐ ์๋ ๋ค๋ฅธ ์ด๋ฆ์ namespace๋ก switch
- namespace๋ฅผ ํฌํจํ context ๋ฑ๋ก
$ kubectl config set-context blue@kubernetes --cluster=kubernetes --user=kubernetes-admin --namespace=blue
$ kubectl config view
- ๋ฑ๋ก๋ namespace๋ก context ๋ณ๊ฒฝ
$ kubectl config current-context
$ kubectl config use-context blue@kubernetes
- default namespace ์์์ ๋์์ค์ธ mypod๋ผ๋ pod ์ญ์
$ kubectl delete pods mypod -n default
- ์๋๋ก ๋๋ ค ๋๊ธฐ
$ kubectl config use-context kubernetes-admin@kubernetes
์ญ์
- namespace ์ง์๋ฒ๋ฆฌ๋ฉด ์์์๋ ๋ฆฌ์์ค ์น ๋ค ๋ ๋ผ๊ฐ
$ kubectl delete namespaces blue
3. yaml ํ ํ๋ฆฟ
yaml
- ์ฌ๋์ด ์ฝ๊ฒ ์ฝ์ ์ ์๋ ๋ฐ์ดํฐ ํํ ์์
- ๋์ด์ฐ๊ธฐ๊ฐ ๊ต์ฅํ ์ค์
- top-down ๋ฐฉ์ ์๋
- k8s์ฉ ๋ฌธ๋ฒ
๊ธฐ๋ณธ๋ฌธ๋ฒ
- Python์ฒ๋ผ ๋ค์ฌ์ฐ๊ธฐ๋ก ๋ฐ์ดํฐ ๊ณ์ธต ํ๊ธฐ
- ๋ค์ฌ์ฐ๊ธฐ ํ ๋๋ tab์ด ์๋ space bar ์ฌ์ฉ
- Scalar ๋ฌธ๋ฒ : โ:โ๋ฅผ ๊ธฐ์ค์ผ๋ก key: value ์ค์
- ๋ฐฐ์ด ๋ฌธ๋ฒ : โ-โ ๋ฌธ์๋ก ์ฌ๋ฌ๊ฐ ๋์ด