<aside> ๐ง TAB์ ์ฌ์ฉํ์ฌ ๋ช ๋ น์ด ์๋์์ฑ ์ค์
# ์คํฌ๋ฆฝํธ ๋ค์ด
cd ; curl -sSL <http://down.cloudshell.kr/down/k8slab.sh> | bash
# alias์ ๋จ์ถํค ๋ฑ๋ก
cd k8s ; sh ./kubelet_alias_bash_completion.sh
</aside>
<aside> ๐ nginx pod์ ๋ง๋ค์ด์ k8s์ ๋ฐฐํฌํ๊ธฐ
# mynginx pod์ deployment ๋ช
๋ น์ด๋ก ๋ง๋ฌ
k create deployment mynginx --image=nginx
โ ํ์ธ๋ฐฉ๋ฒ
k get deployments.apps
k get pod -o wide
k get all -o wide
k get svc (k get service)
โ ํฌํธ๋ฒํธ ํ์ธ๊ฐ๋ฅ
k get rs
<aside> ๐จ node2๊ฐ ๋ฌธ์ ๋ฐ์ !
โ master์์ curl 10.36.0.1 ๋ช ๋ น์ด๋ก pod๊ณผ ํต์ ์ด ๋๊ธฐ๋ ๊ฒ์ ํ์ธ
**# ์๋ก์ด node๋ก ์คํ๋๊ณ ๊ธฐ์กด node2 pod์ ์๋์ข
๋ฃ๋๋ ๊ฒํ์ธ**
k get pod -o wide
</aside>
</aside>
<aside> ๐ก pod ๊ฐฏ์ ๋๋ฆฌ๊ธฐ
# deployments.apps ํ์ผ์ ์์
k edit rs deployments.apps [pod name]
k edit rs deployments.apps mynginx
# replicas : 1 -> 4๋ก ์์
spec:
replicas : 4
# pod 4๊ฐ๊ฐ running
k get pod -o wide
</aside>
<aside> ๐ IP์ ๋ฆฌ ๋ด IP : 192.168.0.50/59
<aside> ๐ kubernetes ๋ช ๋ น์ด ์ ๋ฆฌ
# kubectl edit [object] [object_name]
## ๋
ธ๋ํฌํธ ๋ฒํธ๋ฅผ 30111๋ก ์์ ํ๊ณ ์ ์ฅํ๊ณ ๋น ์ ธ๋์จ๋ค
kubectl edit svc mygosmall1
## ๋
ธ๋ํฌํธ ๋ฒํธ๊ฐ ์์ ๋ ๊ฒ์ ์ ์ ์๋ค
kubectl get svc -o wide
## replicas๋ฅผ 2๋ก ์์ ํ๊ณ ์ ์ฅํ๊ณ ๋น ์ ธ๋์จ๋ค
kubectl edit deployment mygosmall1
## pod์ด 2๊ฐ๋ก ์ค์ด๋ค์๋ค๋ ๊ฒ์ ์ ์ ์๋ค
kubectl get pod -o wide
</aside>
<aside> ๐ YAML
โ๋ฐ์ดํฐ ์ค์ฌโ
๊ธฐ๋ณธ๋ฌธ๋ฒ
# Field
apiVersion:
kind:
metatdata:
spec:
containers:
- image: nginx:1.14
name: nginx
ports;
- containerPort:
- containerPort:
์์ธํ ์ค๋ช spec, meterdata ์ค์
</aside>
<aside> ๐ Deployment ๋ฐ pod์ exposeํ์ฌ ์ ์
k edit svc poly2
# ์์
selector:
**run**: poly2
<aside> ๐ Deployment ์์ฑ ๋ฐ ๋ ธ์ถ
# deployment ๋ง๋ค๊ธฐ
k create deployment poly3 --image httpd --replicas 2
# NodePort type์ผ๋ก ๋
ธ์ถ์ํค๊ธฐ
k expose deployment poly3 --type NodePort --port 80
</aside>
</aside>
<aside> ๐ก Pod ๋ค๋ฃจ๊ธฐ
<aside> ๐ก Namespace
# ๋ฐฉ๋ฒ 1
k create ns globalvision
# yamlํ์ผ๋ก ๋ง๋ค๊ธฐ
k apply -f namespace.yaml
# ํ์ธ
k get ns
# ์์ฑํ namespace๋ก pod ๋ง๋ค๊ธฐ
k run myhome --image nginx --port 80 -n globalvision
k run mygame --image pengbai/docker-supermario --port 8080 -n globalvision
# pod ๋
ธ์ถ
k expose pod mygame --type NodePort --port 8080 -n globalvision
# ํ์ธ
k get pod -n globalvision
# deployment ๋ง๋ค๊ธฐ
k create deployment myhouse --image httpd --port 80 --replicas 5 -n metallb-system
# ํ์ธ
k get pod -n globalvision
k get all -n globalvision
<aside> โ ๏ธ namespace๋ฅผ ์ง์ธ๋ ์ ์!!
๊ด๋ จ๋ yamlํ์ผ๊น์ง ๋ค ์ญ์ ๋๋ ์กฐ์ฌ!
<aside> ๐ Namespace ๋จ์๋ก Resource Quota ์์ฑ
#
kubectl create namespace quota-mem-cpu-example
#
wget <http://down.cloudshell.kr/k8s/lab/quota-mem-cpu.yaml>
#
cat quota-mem-cpu.yaml
# namespace๋ฅผ yaml์ ์ ์ฉ
k apply -f quota-mem-cpu.yaml -n quota-mem-cpu-example
# ์๋ก์ด yamlํ์ผ
cat quota-mem-cpu-**pod**.yaml
# ์๋ก์ด yamlํ์ผ namespace๋ก ์ ์ฉ
kubectl apply -f quota-mem-cpu-pod.yaml -n quota-mem-cpu-example
# ์ ๋๊ณ ์๋์ง ํ์ธ
kubectl get pod quota-mem-cpu-demo -n quota-mem-cpu-example
# resource quota์ ๋ํ ์ ๋ณด ํ์ธ
kubectl get resourcequota mem-cpu-demo -n quota-mem-cpu-example -o yaml
</aside>
</aside>
</aside>
<aside> ๐ก yaml Field
</aside>
<aside> ๐ฅ Pod
# 2์ด๋ง๋ค pod ํ์ธ
watch k get pod -o wide
# nginx mypod pod ์์ฑ
kubectl run mypod-cli --image=nginx:1.14 --port 80
# deployment๋ฅผ ํตํด ์ฌ๋ฌ๊ฐ์ mypod ์์ฑ
kubectl create deployment mypod --image=nginx:1.14 --replicas=4
# pod-nginx.yaml๋ก mypod ๋ง๋ค๊ธฐ
kubectl apply -f <http://down.cloudshell.kr/k8s/lab/pod-nginx.yaml>
# ํ๋์ Pod์ ์ฌ๋ฌ ๊ฐ์ container๊ฐ ๋์ํ๋ pod ์์ฑ
cat pod-multicon.yaml
# pod-multicon.yaml ํ์ผ๋ก pod ์์ฑ
kubectl apply -f pod-multicon.yaml
# ๋ ๊ฐ์ container์ ์ ์ํ๊ธฐ
kubectl exec pod-multicon **-c nginx-container** -it -- /bin/bash
kubectl exec pod-multicon **-c centos-container** -it -- /bin/bash
**-> ๋์ผํ IP**
# ์คํ์ค์ธ nginx-container์ log ๋ณด๊ธฐ
kubectl logs pod-multicon **-c nginx-container
200 -> ์ ์์ ์
500 -> ์ ์๋ถ๊ฐ
404 -> ์๋ ํ์ผ์ ์ ์**
<aside> ๐ ๊ฐ์ข Probe๋ฅผ ํตํ container ์ง๋จ
livenessProbe : container์ ๊ฑด๊ฐ๊ฒ์ง
readinessProbe
container๊ฐ ์ค์ ๋ก ์๋น์ค ์์ฒญ์ ์๋ตํ ์ ์๋์ง ์ง๋จ
โ ์ธ๋ถ๋ก๋ถํฐ ํธ๋ํฝ์ ๋ฐ์ ์ค๋น๊ฐ ๋์๋์ง ๊ฒ์ฌ
ex) JAVA application์ฒ๋ผ App์ด ์ด๊ธฐํ๋ ๋๊น์ง ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ์ํฉ,
App์ ์คํํ ๋ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์์ผํ๋ ์ํฉ์ ๋๋น
startupProbe
# ๋์์ค์ธ Pod์ ์ํ๋ฅผ yaml ํ์ผ๋ก ๋ณด๊ธฐ
kubectl get pod mypod-livenessprobe **-o yaml**
# ๋๋ง์ yamlํ์ผ ๋ง๋ค๊ธฐ ๊ฐ๋ฅ
****kubectl get pod mypod-livenessprobe **-o yaml > yslee.yaml
-> failureThreshold : ๋ช๋ฒ๊น์ง ๊ด์ฐฎ์์ง**
# pod-liveness.yaml ํ์ผ๋ก ์คํ
kubectl apply -f pod-liveness.yaml
# ์คํํ 110์ด ํ
kubectl describe pod pod-liveness
# busybox-liveness.yaml ํ์ผ๋ก ์คํ
kubectl apply -f busybox-liveness.yaml
k get pod
kubectl exec busybox-liveness -it -- ls /tmp
-> ์์ healthy ํ์ผ ์๋์ง ํ์ธ
# contaniers ๋ช
๋ น์ด์ 30์ด ๋ค ์ญ์
cat busybox-liveness.yaml
k describe pod busybox-liveness
</aside>
</aside>
<aside> ๐ ๋ค์ํ container
init container
pause container
โ pod ip๋ pause container๊ฐ ๊ฐ์ง๊ณ ์๋ค.
Static Pod์ด๋? </aside>
<aside> ๐ Pod ๊ตฌ์ฑํํ
</aside>
<aside> ๐ ํน์ ํ node์ pod ๋ฐฐํฌ
</aside>