ํ์ฌ ์ฐ๋ฆฌ๋ ๊ฐ๋ฐ ํ๊ฒฝ์์ Amazon EKS(Elastic Kubernetes Service)๋ฅผ ์ ๊ทน์ ์ผ๋ก ํ์ฉํ๊ณ ์์ต๋๋ค. ๋ค์ํ ์ฉ๋์ ์๋ฒโํ ์คํธ, ์ฌ๋ด์ฉ, ๊ฐ๋ฐ, ๊ทธ๋ฆฌ๊ณ ๋น๋ ์์ โ๋ฅผ ๋จ์ผ EKS ํด๋ฌ์คํฐ ๋ด์์ ์ด์ํ๊ณ ์์๊ณ , ํด๋ฌ์คํฐ์๋ ์ด 5๋์ ๋ ธ๋๊ฐ ๊ตฌ์ฑ๋์ด ์์์ต๋๋ค.
ํ์ง๋ง ์ค์ ์ฌ์ฉ๋์ ๋ถ์ํด ๋ณธ ๊ฒฐ๊ณผ, ๊ธฐ๋๋ณด๋ค ํจ์ฌ ๋ฎ์ ๋ฆฌ์์ค ํ์ฉ๋ฅ ์ ๋ณด์ด๊ณ ์์์ต๋๋ค. ์ด์ ๋ฐ๋ผ ๋ฆฌ์์ค ์ค๋ฒํ๋ก๋น์ ๋(over-provisioning)์ ์์ฌํ๊ฒ ๋์๊ณ , ๋ณธ๊ฒฉ์ ์ผ๋ก ์ต์ ํ ์์ ์ ์งํํ๊ฒ ๋์์ต๋๋ค.
์ฐ์ ๊ฐ ๋ ธ๋์ ํ๊ท ์ฌ์ฉ๋ฅ ์ ๋ชจ๋ํฐ๋งํด๋ณด์์ต๋๋ค.
์ฆ, ์ง์์ ์ธ ๊ณ ๋ถํ ์ํฉ์ ์์ผ๋ฉฐ, ๋๋ถ๋ถ์ ๋ฆฌ์์ค๊ฐ ์ ํด ์ํ๋ก ๋จ์ ์๋ ๊ตฌ์กฐ์์ต๋๋ค.
์ด๋ฅผ ๋ฐํ์ผ๋ก, ์ด์ ๋ ธ๋์ ๋น๋ ๋ ธ๋๋ฅผ ๋ถ๋ฆฌํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌ์กฐ๋ฅผ ์ฌ์ค๊ณํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
์ฐ๋ฆฌ๋ Terraform๊ณผ Argo Workflow๋ฅผ ํ์ฉํด ์ธํ๋ผ ๋ฐ ์ํฌํ๋ก์ฐ๋ฅผ ๊ตฌ์ฑํ๊ณ ์์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ์์ ์ ํตํด ๋ถ๋ฆฌ ์์ ์ ์ํํ์ต๋๋ค:

Kubernetes์ taint๋ ํน์ ๋
ธ๋์ ์ผ๋ฐ์ ์ธ ํ๋๊ฐ ์ค์ผ์ค๋์ง ์๋๋ก ๋ง๋ ๊ธฐ๋ฅ์
๋๋ค.
์ฆ, โ์ด ๋ ธ๋๋ ํน๋ณํ ๋ชฉ์ ์๋ง ์ฌ์ฉํ ๊ฒ์ด๋ ์๋ฌด ํ๋๋ ๋ค์ด์ค์ง ๋ง๋ผโ๋ ์๋ฏธ๋ฅผ ์ค์ ํ๋ ๊ฒ์ ๋๋ค.
์ด์ ํจ๊ป ์ฌ์ฉํ๋ toleration์ ํ๋๊ฐ ํน์ taint๋ฅผ ๋ฌด์ํ๊ณ ํด๋น ๋
ธ๋์ ๋ค์ด๊ฐ๋ ๋๋ ๊ถํ์ ์ค์ ํ๋ ๋ฐฉ์์
๋๋ค.
hcl
๋ณต์ฌํธ์ง
resource "aws_eks_node_group" "build_nodes" {
node_group_name = "build-group"
...
taints {
key = "workload"
value = "build"
effect = "NO_SCHEDULE"
}
}
yaml
๋ณต์ฌํธ์ง
- name: build-job
template: build
nodeSelector:
purpose: build
tolerations:
- key: "workload"
operator: "Equal"
value: "build"
effect: "NoSchedule"
์ด๋ ๊ฒ ํ๋ฉด, build ํ๋๋ ์ค์ง taint๊ฐ ์ ์ฉ๋ ๋น๋ ๋ ธ๋์์๋ง ์ค์ผ์ค๋๋ฉฐ,
์ด์ ํ๋๋ ํด๋น ๋ ธ๋์ ์ ๋ ์ฌ๋ผ๊ฐ์ง ์๊ฒ ๋ฉ๋๋ค.
์ด๊ธฐ์๋ Required ์๊ฐ 4๋ก ์ค์ ๋ ์ด์ ๋ ธ๋ ๊ทธ๋ฃน์ 3๋๋ก ์ค์ด๊ธฐ๋ก ํ์ต๋๋ค. ํ์ฌ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
์ธ์คํด์ค ํ์ ์ด ๋์ผํ๋ค๋ ์ ์ ํ์, ์ ์ฒด ๋ ธ๋ ์๋ 5 โ 4๋๋ก 20% ๊ฐ์ํ์ผ๋ฉฐ, ์ด์์ ์ ํ ์ง์ฅ์ด ์์์ต๋๋ค.
์์ง ์ต์ ํํ ์ฌ์ง๋ ๋ ๋ง์ต๋๋ค. ๋ค์ ๋จ๊ณ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
์ด๋ฒ ๊ตฌ์กฐ ๊ฐ์ ์ ํตํด ๋จ์ํ ๋ ธ๋ ๋ถ๋ฆฌ์ ์ ์กฐ์ ๋ง์ผ๋ก๋ 20%์ ๋น์ฉ ์ ๊ฐ ํจ๊ณผ๋ฅผ ์ป์ ์ ์์์ต๋๋ค.
๋ํ, ์ญํ ๊ธฐ๋ฐ ๋ ธ๋ ๋ถ๋ฆฌ๋ฅผ ํตํด ๋ฆฌ์์ค ํ์ฉ์ ์์ธก ๊ฐ๋ฅ์ฑ๊ณผ ์ธํ๋ผ์ ์ ์ง๋ณด์์ฑ ์ญ์ ํฅ์๋์์ต๋๋ค.
taint์ toleration์ ์ ์ ํ ํ์ฉํ๋ฉด EKS ํ๊ฒฝ์ ๋์ฑ ์ ์ฐํ๊ฒ ์ ์ดํ ์ ์์ผ๋ฉฐ, ์ด๋ ํด๋ผ์ฐ๋ ์ธํ๋ผ ์ด์์ ์ค์ํ ์ ๋ต ํฌ์ธํธ๊ฐ ๋ฉ๋๋ค.