Kubernetes
Kubernetes ๐ฏ
-
Local์์ ์คํ // node hellow.js
-
docker์์ node์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ hellow.js๋ฅผ copyํ์ฌ ์ด๋ฏธ์ง๋ฅผ ์์ฑ ํ hub์ ์ฌ๋ฆฌ๊ธฐ
FROM node:slim
EXPOSE 8000
COPY hellow.js
CMD node hellow.js
>> docker build -t ์ด๋ฏธ์ง๋ช
.
>> docker login
>> docker push ์ด๋ฏธ์ง๋ช
- Kubernetes์์ ๋์ฐ๊ธฐ
apiVersion : v1
kind : pod
metadata :
name : hellow-pod
labels :
app : hellow
spec :
containers :
-name : hellow-container
image : ์ด๋ฏธ์ง๋ช
ports :
-containerPorts : 8000
-------------------------------------------------
apiVersion : v1
kind : Service
metadata :
name : hellow-svc
spec :
selector :
app : hellow
ports :
- port : 8200
targetPort : 8000
externallPs :
192.xxx.x.xx
Service
-
ClusterIp : ์ธ๋ถ์์ ์ ๊ทผํ ์ ์๊ณ ํด๋ฌ์คํฐ ๋ด์์ ์ฌ์ฉํ๋ IP์ด๋ฏ๋ก ์ธ๊ฐ๋ ์ฌ์ฉ์๋ง ๊ฐ๋ฅ ( ์ฃผ๋ก Pod์ ์ํ๊ด๋ฆฌ ๋ฐ ๋๋ฒ๊น ) ๋ํดํธ๊ฐ
-
NodePort : ๋ฌผ๋ฆฌ์ ์ธ IP๋ฅผ ํตํด Pod์ ์ ๊ทผ๊ฐ๋ฅ, ์์ ์ฐ๊ฒฐ์ฉ
-
LB : ์ธ๋ถ ์์คํ ์ฐ๊ฒฐ์ฉ
Volume
-
emptyDir : Pod์์ฑ์ ๋ง๋ค์ด์ง๊ณ ์ญ์ ์ ์์ด์ง ( ์ง์ ํ ์ปจํ ์ด๋๋ผ๋ฆฌ ํ์ผ๊ณต์ ๊ฐ๋ฅ )
-
hostPath : Pod๊ฐ ์ฃฝ์ด๋ ์ฌ๋ผ์ง์ง์์ง๋ง ์ฃฝ์ Pod๊ฐ ๋ค๋ฅธ ๋ ธ๋์ ์๊ธธ๋ ์๋์ ๋ ธ๋์ Volume๊ณผ ์ฐ๊ฒฐ์ด ์๋์ ์์ฒด์ ์ผ๋ก ๋ฐ๋ก ์ฐ๊ฒฐํด์ค์ผํจ ( ์ฃผ ์ฉ๋๋ Node์์ Volume์ ์๋ ๋ฐ์ดํฐ๋ฅผ Pod๊ฐ ์ฌ์ฉํ๊ธฐ์ํด ์ฌ์ฉ)
-
PVC / PV : Pod๊ฐ ๋ง๋ค์ด์ง๋ ์ง์ ํ ์์ญ์ ๋ง๋ค์ด์ง. PVC => PV
ConfigMap, Secret
-
Env (Literal) : ๋๋ค ํค,๋ฒจ๋ฅ๋ก ์ด๋ฃจ์ด์ง ์์ ์์๋ก ์ ์ฅ, Secret์ 1Mbyte, base64๋ก ์ธ์ฝ๋ฉ๋ ๊ฐ ๋ฃ์ด์ค์ผํจ
-
Env (File) : ํ์ผ๋ก ์ค์
-
Volume Mount (File) : Volume Path์ Envํ์ผ ์ค์ , mount๋๊ฒ์ด ๋ฐ๋๋ฉด ๋ฐ๋
Namespace, ResourceQuota, LimitRange
-
Namespace : Pod์ด๋ฆ ์ค๋ณต X, ๋ค๋ฅธ Namespace์ ์ฐ๊ฒฐ X
-
ResourceQuota : Pod๋ง๋ค๋ resource๋ฅผ ๋ช ์ํ๊ฒ ํด์ค, Pod์๋ฌด๊ฒ๋์์ด ๋งจ์ฒ์ ๋ง๋ค์ด์ค์ผํจ
-
LimitRange : min, max, default๊ฐ
Template, Replicas, Selector
-
Template : Selector๋ก ์ง์ ๋ Pod๋ฅผ Replicas์ ์์น๋งํผ ์ฌ์์ฑํด์ค(๋ฒ์ ๋ ๋ฐ๋ก๋ฐ๋ก ์ ๊ธ๊ฐ๋ฅ)
-
Replicas : ์์น๋งํผ Pod๊ฐ ์ฃฝ์์ ๊ฒฝ์ฐ ์ฌ์์ฑ
-
Selector : matchLabels(์ ํํ ์ผ์นํ๋๊ฒ), matchExpressions(condition์ ํด๋นํ๋๊ฒ) => Exists, DoesNotExist, In, NotIn
Deployment
-
reCreate : ๋ฒ์ ์ ์ Downtime์ด ์กด์ฌํจ
-
Rolling Update : ์ผ๋จ v2๋ฅผ ๋ง๋ค๊ณ v1์ ์ง์ด๋ค. ( ๊ทธ ์ฌ์ด์ v1, v2์ ์ฌ์ฉ์๊ฐ ๋ชจ๋ ๋ค์ด๊ฐ ์ ์์, ์์์ด ์๊ฐ์ ์ผ๋ก ๋ง์ด ํ์ )
-
Blue/Green : ์๋น์ค๋ฅผ ํตํด v1 -> v2๋ก Pod๋ฅผ ๋ฐ๊ฟ์ค๋ค. ( ์์์ฌ์ฉ๋ 2๋ฐฐ, v2๊ฐ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ๋ฐ๋ก v1์ผ๋ก ๋ฐ๊ฟ์ค )
-
Canary : ์๋น์ค๋ฅผ ํตํด [(1. ty:app, ver:v1)(2. ty:app, ver:v1)],[(3. ty:app, ver:v2)] ์ด๋ ๊ฒ v1,v2๋ฅผ ์ฌ์ฉํ๊ฒ ํ๋ค๊ฐ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด v2๋ฅผ ๋์, ๋ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก PATH๋ฅผ ๋ณ๊ฒฝํจ์ผ๋ก์จ v1,v2๋ฅผ ๊ณต์กด์ํด
DaemonSet, Job, CronJob
-
DeamonSet : Node์ ์์์ํ๋ฅผ ๊ณ ๋ คํ์ง ์๊ณ ๊ฐ Node๋ง๋ค 1๊ฐ์ฉ Pod์์ฑ (Prometheus, Fluentd, GlusterFS)
-
Job : Pod๊ฐ ์ฃฝ์ผ๋ฉด ๊ทธ๋๋ก ์์์ ์ฌ์ฉํ์ง ์๋ ์ํ๋ก ๋๋ , parallelism, completions, activeDeadlineSeconds
-
CronJob : ๋ด๊ฐ ์๊ณ ์๋ ๊ทธ๊ฒ, Allow, Forbid, Replace