controller
๊ธฐ๋ฅ
auto healing ํน์ ๋ ธ๋๊ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํด์ ๊ทธ ๋ ธ๋ ๋ด์ ํ๋๊ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ์ด๋ฅผ ๊ฐ์งํ๊ณ ๋ค๋ฅธ ๋ ธ๋์ ํ๋๋ฅผ ์ฎ๊ฒจ์ค๋ค.
auto scaling ํ ํ๋๊ฐ ๋ชจ๋ ์์์ limit์ํ๊ฐ ๋์์๋ ์ด๋ฅผ ํ์ ํ๊ณ ํ๋๋ฅผ ํ๋ ๋ ๋ง๋ค์ด ์ค์ผ๋ก์จ ๋ถํ๋ฅผ ๋ถ์ฐ ์์ผ์ค๋ค.
software update ํ๋๋ค์ ๋ฒ์ ์ ๊ทธ๋ ์ด๋์ ๊ฐ์ ๊ฒฝ์ฐ ์๋์ผ๋ก ์ ๋ฐ์ดํธ ์์ผ์ฃผ๊ณ ๋ฌธ์ ๋ฐ์์ ๋กค๋ฐฑ๊ธฐ๋ฅ๋ ์ ๊ณตํ๋ค.
job ํ์ํ ์๊ฐ์๋ง ํ๋๋ฅผ ๋ง๋ค์ด์ ์์ ์ ์ดํํ๊ณ ์ญ์ ํ๋ ๊ฒ๊ณผ ๊ฐ์ด ์ค์ผ์ค๋ง๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ์์์ ํจ์จ์ ์ผ๋ก ์ ๊ณตํ๋ค.
1. Replication Controller / ReplicaSet
Replication Controller๋ Deprecated๋์๊ณ ๊ทธ ํ์ ๋์จ ๊ฒ์ด ReplicaSet์ด๋ค.
1) Template / Replicas
selector๋ฅผ ํตํด์ label๋ก ์ปจํธ๋กค๋ฌ์ ํ๋๋ฅผ ์ฐ๊ฒฐ ํ๊ฒ ๋๊ณ template
๋ก ํน์ ํ๋์ ํํ๋ฅผ ์ง์ ํ ์ ์๊ณ ๋ง์ผ ํน์ ํ๋๊ฐ ์ญ์ ๊ฐ ๋๋ฉด ๋ค์ ์ฌ์์ฑํ๋ ค๋ ํน์ง์ ๊ฐ์ง๊ณ ์๋ค. ๊ทธ๋์ template์ ํ๋๋ฅผ ์
๊ทธ๋ ์ด๋ํด๋๊ณ ๊ธฐ์กด์ ํ๋๋ฅผ ์ญ์ ํด์ฃผ๋ฉด ํ๋๋ฅผ ์ฌ์์ฑํด์ฃผ๋ ค๋ ํน์ฑ๋๋ฌธ์ ์๋์ผ๋ก ๋ฒ์ ์
๊ทธ๋ ์ด๋๋ ํ๋๋ฅผ ์ฌ์์ฑ ํ๊ฒ ๋๋ค.
replicas๋ ์ต๋ ์์ฑํ๋ ํ๋์ ์๋ก ์ด replicas๋ฅผ ๋๋ ค์ฃผ๊ฒ๋๋ฉด scale out์ด ๋๊ฒ ๋๊ณ ์ค์ฌ์ฃผ๋ฉด scale in์ด ๋๋ค.
์ด๋ Replication Controller์ ReplicaSet๋ชจ๋ ๊ฐ์ง๊ณ ์๋ ํน์ฑ์ด๋ค. ์ด๋ฐ ํน์ฑ๋ค๋๋ฌธ์ ํน์ ํ๋๋ฅผ ์์ฑํ๊ธฐ๋ณด๋ค๋ ์ปจํธ๋กค๋ฌ ํ๊ฐ๋ง ์ ์ํด์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
2) Selector
์ด๋ ReplicaSet์๋ง ์๋ ๊ธฐ๋ฅ์ผ๋ก ReplicaSet์๋ Replication Contorller์ ๋ฌ๋ฆฌ matchLabels, matchExpressions
์์ฑ์ด ์ถ๊ฐ๋ก ์กด์ฌํ๋ค. Replication Controller์์ ํ๋๋ฅผ ์ฐ๊ฒฐํ ๋๋ ๋ผ๋ฒจ์ key/value๊ฐ ๋ชจ๋ ๋์ผํ ํ๋๋ง ์ฐ๊ฒฐ์ด ๊ฐ๋ฅํ๊ณ ReplicaSet์์๋ matchLabels์ด ๋์ผํ ์ญํ ์ ์ํํ๋ค.
์ด๋, matchExpressions์ key/value๋ฅผ ์กฐ๊ธ ๋ ๋ํ ์ผํ๊ฒ ์ปจํธ๋กค ํ ์ ์์ด value๋ ๋ฌ๋ผ๋ key๋ง ๊ฐ์ ํ๋๋ฅผ ์ ํํ ์ ์๊ฒ ๋๋ค.
๋ค๋ฅธ Operator๋ค
Exists : ํน์ key๊ฐ ์ผ์นํ๋ ํ๋๋ฅผ ์ ํ
DoesNotExist : ํน์ key๊ฐ ์ผ์นํ์ง ์์ ํ๋๋ฅผ ์ ํ
In : ์ค์ ํ key์ ์ผ์นํ๊ณ values๊ฐ ํฌํจ๋ ํ๋๋ค์ ์ ํ
NotIn : ์ค์ ํ key์ ์ผ์นํ๊ณ values๋ค์ด ํฌํจ๋์ง ์์ ํ๋๋ค์ ์ ํ
2. Deployment
ํ์ฌ ํ ์๋น์ค๊ฐ ์ด์์ค์ผ๋ ์ด ์๋น์ค๋ฅผ ์ ๋ฐ์ดํธํด์ผ๋์ ์ฌ๋ฐฐํฌ๋ฅผ ํด์ผํ ๋ ๋์์ด ๋๋ ์ปจํธ๋กค๋ฌ
1) ReCreate
Deployment๊ฐ ๊ธฐ์กด์ pod๋ฅผ ์ญ์ ํ๊ณ ์์์ฌ์ฉ๋์ด ์์ด์ง๊ฒ ๋๊ณ ์๋ก pod๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ผ๋ก ์ค๊ฐ downtime์ด ์กด์ฌํ๋ค๋ ๋จ์ ์ด ์๋ค.
Deployment์์๋ Controller์ ๋์ผํ๊ฒ selector/replicas/template๋ฅผ ์ค์ ํด์ฃผ๋๋ฐ ์ด๋ controller์ ๊ฐ์ด ํ๋๋ฅผ ์์ฑ/๊ด๋ฆฌํ๊ธฐ ์ํ ๋ชฉ์ ์ด ์๋๋ผ deployment๊ฐ ์์ฑํ๋ controller์ ์์ฑ๋ค์ ๊ฐ์ผ๋ก ์ ๋ฌํ๊ธฐ ์ํ ๊ฐ์ด๋ค.
deployment์ template์ updateํ๊ฒ ๋๋ฉด ๊ธฐ์กด์ replicaSet์ replicas๋ 0์ผ๋ก ๋ณ๊ฒฝํ๊ณ ์๋ก์ด replicaSet์ ์์ฑํ๋ค.
revisionHistoryLimit
์ repliacas๊ฐ 0์ธ controller๋ฅผ ๋จ๊ฒจ๋๋ ์ซ์๋ก default๋ 10์ด๋ค. ์ด๋ ๊ฒ ๊ธฐ์กด์ controller๋ฅผ ๋จ๊ฒจ๋๋ ์ด์ ๋ ์ด์ ๋ฒ์ ์ผ๋ก rollback์ ์ํจ์ด๋ค.
2) Rolling update
Deployment๊ฐ ์๋ก์ด ๋ฒ์ ์ pod๋ฅผ ํ๊ฐ ๋ง๋ค์ด ์ค ํ ์์ฒญ์ ์๋ก์ด pod๋ ๋ํด์ ๊ฐ์ด ์ฒ๋ฆฌํ๊ฒ ํด์ค ํ ํ๊ฐ์ ๊ธฐ์กด๋ฒ์ pod๋ฅผ ์ญ์ ํ๋ ๋ฐฉ์์ผ๋ก ํ๋๋ค์ ์ฐจ๋ก๋ก ์ ๋ฐ์ดํธ ํ๋ ๋ฐฉ์์ธ๋ฐ ์ด๋ downtime์ด ์กด์ฌํ์ง ์์ง๋ง ์ถ๊ฐ ์์์ ํ์๋ก ํ๋ค๋ ํน์ง์ด ์๋ค.
minReadySeconds
์ต์
์ ์๋ก์ดํ๋๋ฅผ ์์ฑํ๊ณ ๊ธฐ์กด์ ํ๋๋ฅผ ์ญ์ ํ๋ ์ฌ์ด์ ํ
์ ์ ์ํด์ฃผ๋ ๊ฐ์ด๋ค.
์ด๋ ์๋ฌธ์ผ๋ก ์๋ก์์ฑ๋ ReplicaSet์ ๋ผ๋ฒจ์ ๊ฐ์ง๊ณ ํ๋๋ฅผ ์ฐ๊ฒฐํ๋๋ฐ ๊ธฐ์กด์ ํ๋๋ค๊ณผ๋ ์ฐ๊ฒฐ๋ ์ ์์ง ์์๊น ์ถ์ง๋ง, ์ค์ ๋ก๋ replicaSet์ด ์์ฑ๋ ๋ ์ปจํธ๋กค๋ฌ๋ง๋ค ํน์ ํ ๋ผ๋ฒจ์ด ๋ถ๊ฒ๋๊ณ ์ด ๋ผ๋ฒจ์ ์ด์ฉํด์ ์๋ก์ด ํ๋๋ฅผ ๋ง๋ค๋ ์ถ๊ฐ์ ์ธ ๋ผ๋ฒจ์ ์ถ๊ฐํ์ฌ ์ฐ๊ฒฐํ๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด์ ํ๋๋ค๊ณผ๋ ์ฐ๊ฒฐ๋์ง ์๋๋ค.
3) Blue/Green
Deployment๋ฅผ ์ฌ์ฉํด์ ๊ตฌ์ฑํ ์๋ ์์ง๋ง ReplicaSet๊ณผ ๊ฐ์ด replicas๋ฅผ ๊ด๋ฆฌํ๋ controller๋ฅผ ์ด์ฉํด์ ๊ตฌ์ฑํ ์ ์๋ค.
๊ธฐ์กด ๋ฒ์ ์ ํ๋๋ค๊ณผ ์ฐ๊ฒฐ๋ ์ปจํธ๋กค๋ฌ๋ฅผ ๋๋๊ณ ์๋ก์ด ๋ฒ์ ์ ํ๋๋ค์ ๊ฐ์ง ์ปจํธ๋กค๋ฌ๋ฅผ ์์ฑํ์ฌ ํ๋๋ค์ ๊ด๋ฆฌํ๋ ์๋น์ค์์ ์๋ก์ด ๋ฒ์ ์ ํ๋๋ค๋ก ์๋ก ์ฐ๊ฒฐํ๋ ๋ฐฉ์์ผ๋ก ๋ฐฐํฌํ๋ ๋ฐฉ์
์๊ฐ์ ์ผ๋ก ๋ณ๊ฒฝ์ด ๋๊ธฐ ๋๋ฌธ์ downtime์ ์กด์ฌํ์ง ์๊ณ ๊ธฐ์กด์ ๋ฒ์ ์ด ๋ฌธ์ ๊ฐ ์์์ service์ ๋ผ๋ฒจ๋ง ๊ธฐ์กด๋ฒ์ ์ผ๋ก ์์ ํ๋ฉด ๋กค๋ฐฑ์ด ์ฝ๋ค๋ ์ฅ์ ์ด ์กด์ฌํ์ง๋ง ์์์ด ๋๋ฐฐ๊ฐ ํ์ํ๋ค๋ ํน์ง์ด ์๋ค.
4) Canary
์๋ก์ด ๋ฒ์ ์ ํ๋๋ฅผ ๊ฐ์ง๊ณ ์๋ ์ปจํธ๋กค๋ฌ๋ฅผ ์๋ก ์์ฑํด์ ๊ธฐ์กด๋ฒ์ ์ ํ๋๋ค๊ณผ ๊ฐ์ด ์๋น์ค์ ์ฐ๊ฒฐ์์ผ ์๋ก์ด ๋ฒ์ ์ ๋ํด ํ ์คํ ์ ํ๋ ์์ผ๋ก ๋ฐฐํฌํ๋ ๋ฐฉ์์ผ๋ก ์๋ก์ด ๋ฒ์ ์ด ๋ฌธ์ ๊ฐ ์๋ค๋ฉด ์ปจํธ๋กค๋ฌ์ replicas๋ฅผ 0์ผ๋ก ๋ฐ๊ฟ์ค์ผ๋ก์จ ์ฐ๊ฒฐ์ ๋์ ์ ์๋ค.
์๋น์ค์ ๊ธฐ์กด์ ๋ผ๋ฒจ์ ์ด์ฉํ์ฌ ๋ถ์ฌ์ ํ ์คํ ์ ํ๋ ๊ฒ์ ๋ถํน์ ๋ค์๋ฅผ ๋์์ ํ ์คํธํ๋ ๋ฐฉ์์ด๊ณ , ์๋ก์ด ๋ฒ์ ์ ๋ผ๋ฒจ์ ๊ฐ์ง ์๋น์ค๋ฅผ ํ๊ฐ ๋๋ง๋ค๊ณ Ingress Controller๋ฅผ ์๋ก ๋ง๋ค์ด ๊ธฐ์กด์ ์๋น์ค์ ์๋ก์ด๋ฒ์ ์ ์๋น์ค๋ฅผ ์ฐ๊ฒฐํด์ ํน์ ์กฐ๊ฑด์ ๋ํ ์์ฒญ๋ง ์๋ก์ด ๋ฒ์ ์ ํ๋๋ก ๋งตํ๋๋๋กํด ํน์ ๋ ๋ค์๋ฅผ ๋์์ผ๋ก ํ ์คํ ์ ์ํํ ์ ์๋ค.
์ด์ฒ๋ผ ํ ์คํ ํ ๋ฌธ์ ๊ฐ ์๋ค๋ฉด ๋ฒ์ ์ ๊ทธ๋ ์ด๋๋ฅผ ํ๋ ๋ฐฉ์์ผ๋ก donwtime์ด ์กด์ฌํ์ง ์๊ณ ์ถ๊ฐ์์์ ์ ์ํ ํ๋์ ๊ฐ์์ ๋ฐ๋ผ ์์ดํ ์ ์๋ค.
3. DeamonSet / Job / CronJob
1) DeamonSet
์ด๋ฌํ ํน์ง์ ์ฌ์ฉํ๋ ์๋น์ค์๋ ์ฑ๋ฅ ์์ง(๋ชจ๋ํฐ๋ง)
, ๋ก๊ทธ ์์ง
, ๋
ธ๋๋ค์ storage
๋ก์จ ๋คํธ์ํฌ ํ์ผ์์คํ
์ผ๋ก ํ์ฉ๋ ์ ์๊ณ , ๋คํธ์ํฌ ํ๋ก์๋ก์จ ์ฌ์ฉ๋ ์๋ ์๋ค.
selctor์ template๊ฐ ์กด์ฌํ์ฌ ๋ผ๋ฒจ์ ์ด์ฉํด ๋ชจ๋ ๋ ธ๋์ ํ ํ๋ฆฟ์ผ๋ก ํ๋๋ฅผ ๋ง๋ค๊ณ ๋ผ๋ฒจ๋ก ํ๋๋ค๊ณผ ์ฐ๊ฒฐ์ด ๋๋ค.
๋ง์ฝ์ ๋ ธ๋๋ค์ด os๊ฐ ๋ฌ๋ผ์ ํน์ ํ๋๊ฐ ํน์ os์์๋ ๋์ํ์ง ์์ ํน์ ๋ ธ๋์๋ ์์ฑ์ ํ๊ณ ์ถ์ง ์๋ค๋ฉด template์ ํ๋์ค์ ์ผ๋ก nodeSelector(os:centos)์ ๊ฐ์ด ํน์ ์ต์ ์ ์ด์ฉํด์ ํน์ ์กฐ๊ฑด์๋ง ์์ฑํ๋๋ก ํ ์ ์๋ค. ์ด์ฒ๋ผ ๋ง์ฐฌ๊ฐ์ง๋ก hostPort์ ๋ํด ํด๋น ๋ ธ๋์ ํน์ port๋ก ํ๋๋ค์ ์ ๊ทผํ ์ ์๋ค.
2) Job
์ผ๋ฐ Pod์์ฑ์ ํตํด ์์ฑํ Pod๋ ๋ ธ๋์ ๋ฌธ์ ๊ฐ ์๊ฒผ์๋ ๊ฐ์ด ์ญ์ ๋๋ ๋ฌธ์ ๊ฐ ์กด์ฌํ๊ณ controller์ ํตํด ๋ง๋ค์ด์ง ํ๋๋ ๋ ธ๋๊ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํด๋ ์๋ก์ด ๋ ธ๋์ ์๋ก ์์ฑ์ด๋๋ฉฐ, ํ๋๊ฐ ์ผ์ ํ์ง ์์ผ๋ฉด ํ๋๋ฅผ restart์์ผ์ฃผ๊ธฐ ๋๋ฌธ์ ๋ฌด์จ์ผ์ด ์์ด๋ ์๋น์ค๊ฐ ์ํ๋์ด์ผ ํ๋ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ค.
Job์ controller์ฒ๋ผ ๋ ธ๋์ ๋ฌธ์ฌ๊ฐ ๋ฐ์ํด๋ ์๋ก์ด๋ ธ๋์ ํ๋๋ฅผ ์์ฑํด์ฃผ๋์ ์์๋ ๊ฐ์ง๋ง ์ผ์ ํ์ง ์์ผ๋ฉด ํ๋๊ฐ ์ข ๋ฃ๊ฐ๋๊ณ ์ญ์ ๋ ์๋๊ณ ์์์ ์ฌ์ฉํ์ง ์์ ์ํ๋ก ๋ฉ์ถฐ์๋ ์ํ๊ฐ ๋๋ค. ํน์ ์ ๋ฌด๋ฅผ ์ํํ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํด์ผํ๊ธฐ ๋๋ฌธ์ ํ๋์ ๋ค์ด๊ฐ์ ๋ก๊ทธ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ์ธํ ์ ์๋ค.
template์ selector๊ฐ ์กด์ฌํ๋๋ฐ selector๋ ๋ง๋ค์ง ์์๋ ์์์ ๋ง๋ค์ด์ค๋ค. completions ์ต์ ์ ์ฃผ๋ฉด ์ต์ ๋งํผ์ ํ๋๋ค์ด ์์ฐจ์ ์ผ๋ก ์คํ๋๊ณ ๋ชจ๋ ์ข ๋ฃ๋์ด์ผ job๋ ์ข ๋ฃ๊ฐ ๋๋ค.
parallelism ์ต์ ์ ์ต์ ๋งํผ ํ๋๊ฐ ๊ฐ์ด ์์ฑ์ด๋๊ณ activeDeadlineSeconds์ต์ ์ ์ด์ฉํ๋ฉด ํน์ ์๊ฐ์ด ์ง๋๋ฉด job์ด ์ญ์ ๋๊ณ job์ ์ํ๋ pod๋ค๋ ์คํ์ด ๋์ง ์๋๋ค. ์ด๋ job์ ๋ง๊ฐ๊ธฐ๊ฐ์ ์ค์ ํ๋ ๊ฒ์ผ๋ก ์์์ ๋ฌดํํ ๊ฐ์ง๊ฒ ๋๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐฉ์งํ ์ ์๊ฒ ํด์ค๋ค.
3) CronJob
Job๋ค์ ์๊ฐ์ ๋ฐ๋ผ์ ์์ฑํ๋ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ฉฐ ์ผ์ข ์ ์ค์ผ์ค๋ง๊ฐ์ ๊ฐ๋
๋ฐฑ์
/ ์
๋ฐ์ดํธ ์ฒดํฌ
/ ๋ฉ์ผ/sms (message)
์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ฌ์ฉ๋ ์ ์๋ค.
schedule๊ณผ jobTemplate์ด ์กด์ฌํ๋ฉฐ schedule์ cron format
์ด๊ณ jobTemplate์ job์ ๋ช
์ํด์ฃผ๋ฉด ๋๋ค.
concurrencyPolicy๋ ์กด์ฌํ๋๋ฐ allow
์ ๊ฒฝ์ฐ ๊ธฐ์กด์ job์ด ์คํ๋๊ณ ์ด์ job์ ํ๋๊ฐ ์ข
๋ฃ๋์ง ์์๋ ์๋ก ์์ฑํ์ฌ job์ ์ด์ด๊ฐ๊ณ forbid
์ ๊ฒฝ์ฐ์๋ ๊ธฐ์กด์ job์ด ๋๋์ง ์์๋ค๋ฉด ์๋ก์ด job์ ์์ฑํ์ง ์๊ณ skip์ด ๋๊ณ ํ๋๊ฐ ์ข
๋ฃ๋์์๋ ๊ทธ ์์ ์ job์ ์๋ก ์์ฑํ๋ค. replace
๋ ๊ธฐ์กด์ job์ด ์ญ์ ๋๊ณ ์๋ก์ด job์ ๋ง๋ค์ด job์ ์คํํ๋ค.
suspend๊ฐ true๊ฐ ๋๋ฉด cronJob์ job์ ๋ง๋ค์ง ์๋๋ค.
4. StatefulSet
![stateful ](/devops/kubernetes/image/stateful .PNG)
Apache, nginx์ ๊ฐ์ web server๋ stateless application์ด๋ฉฐ mongodb, mariaDb, redis์ ๊ฐ์ db๋ Stateful Application์ด๋ค. Stateless๋ ์ฑ์ด ์ฌ๋ฌ๊ฐ๊ฐ ๋ฐฐํฌ๋๋๋ผ๋ ๋ค ๋๊ฐ์ ์ญํ ์ ์ํํ๊ณ Stateful์ Primary/Secondary/Arbiter๊ฐ ์กด์ฌํ๋๋ฐ Primary๊ฐ main DB๋ก ์ด๊ฒ์ด ์ฃฝ๊ฒ๋๋ฉด Arbiter๊ฐ ๊ฐ์งํด์ Secondary๊ฐ primary์ญํ ์ ์ํํ๋๋ก ํ๋ค.
Stateless๋ ์ฑ์ด ํ๋์ฃฝ๋๋ผ๋ ๋ค๋ฅธ์ด๋ฆ์ ์ฑ์ด ํ๋ ์ฌ์์ฑ๋์ง๋ง Stateful์ ์ฃฝ์ ์ญํ ๊ณผ ๊ฐ์ ์ญํ ์ ์ฑ์ด ์ฌ์์ฑ์ด ๋๊ณ ์ด๋ฆ๋ํ ํ๋์ identity๋ก ๋๊ฐ์ ์ด๋ฆ์ด ์์ฑ๋๋ค. Stateful์ ๊ฐ๊ฐ์ ์ญํ ์ด ๋ค๋ฅธ ๋งํผ volume๋ ๊ฐ๊ฐ ํ ๋น์ด ๋์ด์ผ ํ๋ค.
์ถ๊ฐ)
kubectl delete replicationcontrollers replication1 --cascade=false
: replicationController๋ฅผ ์ญ์ ํ๋๋ผ๋ ์ด์ ์ฐ๊ฒฐ๋ ํ๋๋ค์ ์ญ์ ํ์ง ์์ ์ต์
์ผ๋ก ์ด๋ฅผ ์ด์ฉํด์ replicationContoller๋ฅผ replicationSet์ผ๋ก ์
๋ฐ์ดํธ๊ฐ ๊ฐ๋ฅํ๋ค.
Reference
Last updated