๐ CKA 4์ผ์ฐจ
๐ Udemy-Certified Kubernetes Administrator (CKA) with Practice Tests 36-48
์๋น์ค๋ ๊ณ์ธต ๊ฐ์ ์ฐ๊ฒฐ์ ํ๋ฆฝํ๋ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ ๋ฌด์์ผ๊น?
ํ๋๋ ๋ชจ๋ ํ ๋น๋ IP ์ฃผ์๋ฅผ ๊ฐ์ง๋ค. ํ์ง๋ง ์ด IP๋ค์ ์ ์ ์ด ์๋๊ธฐ ๋๋ฌธ์ ์ธ์ ๋ ์ฒ ๊ฑฐ๋ ์ ์๊ณ ์๋ก์ด ํ๋๋ ๊ณ์ ๋ง๋ค์ด์ง๋ ๋ด๋ถ ํต์ ์ ์ด IP ์ฃผ์์๋ง ์์กดํ ์๋ ์๋ค.
์ฟ ๋ฒ๋คํฐ์ค ์๋น์ค๋ฅผ ํตํด ํ๋๋ฅผ ํ๋๋ก ๋ฌถ๊ณ ํ๋์ ์ธํฐํ์ด์ค๋ฅผ ํตํด ๋จ์ฒด ํ๋์ ์ ์ํ ์ ์๋ค. ์์ฒญ์ ๋ฌด์์์ ์ผ๋ก ํ๋์ ํ๋์ ์ ๋ฌ๋๋ค.
๋ค์ํ ์๋น์ค ๊ฐ์ ํต์ ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ๊ฐ ๊ณ์ธต์ ํ์ํ ๋๋ก ํ์ฅ ๋๋ ์ด๋ํ ์ ์๋ค.
๊ฐ๊ฐ์ ์๋น์ค๋ ํด๋ฌ์คํฐ ๋ด๋ถ์์ IP์ ๊ทธ์ ํ ๋น๋ ์ด๋ฆ์ ๊ฐ๊ณ ์๋ค. ๋ค๋ฅธ ํ๋๊ฐ ์๋น์ค์ ์ ๊ทผํ๊ธฐ ์ํด์๋ ๊ทธ ์ด๋ฆ์ ์ฌ์ฉํด์ผ ํ๋ค.
์ด๋ฌํ ์๋น์ค ์ ํ์ด ClusterIP์ด๋ค.
์ ์ ํ์ผ์ ํตํด ClusterIP๋ฅผ ์์ฑํ ์ ์๋ค.
type์ ClusterIP์ด๋ค. ์ฌ์ค ClusterIP๋ ๊ธฐ๋ณธ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ์ง์ ํ์ง ์๋๋ผ๋ ์๋์ผ๋ก ClusterIP๋ก ์ถ์ ๋๋ค.
targetPort๋ ์คํ ์ค์ธ ํ๋๊ฐ ๋
ธ์ถ๋๋ ํฌํธ์ด๋ค.
port๋ ์๋น์ค๊ฐ ๋
ธ์ถ๋๋ ํฌํธ์ด๋ค.
์๋น์ค๋ฅผ ports์ ์ฐ๊ฒฐํ๋ ค๋ฉด selector๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
nodePort๊ฐ ์๋ ์๋น์ค๋ ๋
ธ๋ ํฌํธ์์ ํธ๋ํฝ์ ์์ ํด ํธ๋ํฝ์ ๊ฐ๊ฐ์ ํ๋๋ก ๋ผ์ฐํ
ํ๋ ๊ฒ์ ๋๋๋ค.
์ฌ์ฉ์๋ ๋
ธ๋์ IP์ nodePort๋ฅผ ์ด์ฉํด์ ์ฑ์ ์ ๊ทผํ ์ ์๋ค.
ํ์ง๋ง ์ฌ์ฉ์๋ ํด๋ฌ์คํฐ๋ ์์
์ ๋
ธ๋๋ค์ ์์ฐ๋ฅด๋ ๋จ์ผ URL์ ํตํด ์ฑ์ ์ ๊ทผํ๊ธธ ์ํ๋ค.
์ด๋ฅผ ์ํ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ถํ๋ถ์ฐ๊ธฐ ๋ชฉ์ ์ผ๋ก ์ VM์ ๋ง๋ค๊ณ ์ ์ ํ LoadBalancer๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ์ด๋ค.
๋ชจ๋ ์ธ๋ถ ๋ถํ ๋ถ์ฐ์ ์ค์ ํ๊ณ ๊ทธ๊ฒ์ ์ ์งํ๋ ๊ฒ์ ์ฝ์ง ์์ ์์
์ด๋ค.
๊ตฌ๊ธ ํด๋ผ์ฐ๋, AWS, Azure์ ๊ฐ์ด ์ง์๋๋ ํด๋ผ์ฐ๋ ํ๋ซํผ์ ์๋ค๋ฉด ํด๋น ํด๋ผ์ฐ๋ ํ๋ซํผ์ ๋ค์ดํฐ๋ธ LoadBalancer์์ ํตํฉ์ ์ง์ํ๋ค.
์๋น์ค์ type์ LoadBalancer๋ก ์ค์ ํ๋ฉด ์๋น์ค๊ฐ ๋ถํ๋ถ์ฐ ์ญํ ์ ์ํํ๋ค.
๊ทธ๋ฌ๋ LoadBalancer type์ ์ง์ํ์ง ์๋ ํ๊ฒฝ์์ ์ค์ ํ๋ค๋ฉด NodePort๋ก ์ค์ ํ๋ ๊ฒ๊ณผ ๊ฐ์ ํจ๊ณผ๋ฅผ ๊ฐ๊ฒ ๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค๊ฐ ๋ง๋ ๊ธฐ๋ณธ ClusterIP ์๋น์ค๋ฅผ ๊ฐ๊ณ ์๋ค.
์ด ์ง๋ค์ ์ฟ ๋ฒ๋คํฐ์ค์ ๋ค์์คํ์ด์ค์ ์ผ์นํ๋ค.
ํด๋ฌ์คํฐ๊ฐ ์ฒ์ ์ค์ ๋๋ฉด ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์๋์ผ๋ก Default Namespace๋ฅผ ์์ฑํ๋ค.
์ฌ์ฉ์๋ค๋ก๋ถํฐ ๋ถ๋ฆฌํ๊ณ ์ค์๋ก ์ด ์๋น์ค๋ค์ด ์ญ์ ๋๊ฑฐ๋ ์์ ๋๋ ๊ฒ์ ๋ง๊ธฐ ์ํด ์ฟ ๋ฒ๋คํฐ์ค๋ ํด๋ฌ์คํฐ ์์ ๋ kube-system์ด๋ ์ด๋ฆ์ Namespace๋ฅผ ์์ฑํ๋ค. kube-system ๋ค์์คํ์ด์ค์๋ ์ฟ ๋ฒ๋คํฐ์ค์ ๋ด๋ถ ๋ชฉ์ ์ ์ํ, ๋คํธ์ํน ์๋ฃจ์
์ด๋ DNS ์๋น์ค์ ์๊ตฌ๋๋ ํ๋์ ์๋น์ค ์ธํธ๋ค์ด ์กด์ฌํ๋ค.
์ฟ ๋ฒ๋คํฐ์ค๊ฐ ๋ง๋ ๋ ๋ค๋ฅธ ๋ค์์คํ์ด์ค๋ kube-public์ด๋ค. kube-public ๋ค์์คํ์ด์ค์๋ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ ์ ์์ด์ผ ํ ๋ฆฌ์์ค๊ฐ ์์ฑ๋๋ค.
์๋ก์ด ๋ค์์คํ์ด์ค๋ฅผ ์์ฑํ ์ ์๋ค.
๊ฐ๊ฐ ๋ค๋ฅธ ์ด๋ฆ ๊ณต๊ฐ ๋๋ถ์ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์์
ํ๋ ๋์ ๋ค๋ฅธ ๋ค์์คํ์ด์ค์ ๋ฆฌ์์ค๋ฅผ ์ค์๋ก ์์ ํ์ง ๋ชปํ๋ค.
์ด๋ฐ ๋ค์์คํ์ด์ค๋ ๊ฐ๊ฐ์ ๊ณ ์ ํ ์ ์ฑ
(๋๊ฐ ๋ญ ํ ์ ์๋์ง ์ ์)์ ๊ฐ์ง ์ ์๋ค.
์ด๋ฐ ๋ค์์คํ์ด์ค ๊ฐ๊ฐ์ ๋ฆฌ์์ค ํ ๋น๋์ ํ ๋นํ ์๋ ์๋ค.
db-service
: ๊ฐ์ ๋ค์์๋น์ค ๋ด์์ db-service ์ด๋ฆ ๋ง์ผ๋ก ์๋น์ค์ ์ ๊ทผ ๊ฐ๋ฅdb-service.dev.svc.cluster.local
: dev ๋ค์์คํ์ด์ค์ ์๋ db-service์ ์ ๊ทผ. ์ด๊ฒ ๊ฐ๋ฅํ ์ด์ ๋ ์๋น์ค๊ฐ ์์ฑ๋ ๋ DNS ํญ๋ชฉ์ด ์๋์ผ๋ก ์ด ํฌ๋ฉง์ ์ถ๊ฐ๋๊ธฐ ๋๋ฌธ์ด๋ค.
์๋น์ค์ DNS ์ด๋ฆ์ ์์ธํ ๋ณด๋ฉด, cluster.local์ ํด๋ฌ์คํฐ์ ๊ธฐ๋ณธ ๋๋ฉ์ธ ์ด๋ฆ์ด๋ค.
svc๋ ์๋น์ค๋ฅผ ์ํ ํ์ ๋๋ฉ์ธ์ด๋ฉฐ ์๋น์ค ์ด๋ฆ๊ณผ ๋ค์์คํ์ด์ค ๋ค์์ ์์นํ๋ค.
์ด์ ๋ค์์คํ์ด์ค์ ์ด์ ์ธก๋ฉด์ ์ดํด๋ณด์.
kubectl get pods
๋ ๋ชจ๋ ํ๋๋ฅผ ์ด๊ฑฐํ๋๋ฐ ์ฌ์ฉ๋์ง๋ง default namespace์ ์๋ ๊ฒ๋ง ์ด๊ฑฐํ๋ค.
๋ ๋ค๋ฅธ ๋ค์์คํ์ด์ค์ ์๋ ํ๋๋ฅผ ์ด๊ฑฐํ๋ ค๋ฉด ๋ช
๋ น ์์ ๋ค์์คํ์ด์ค ์ต์
์ ์ฌ์ฉํด์ผ ํ๋ค.
kubectl get pods --namespace=kube-system
์ด ๊ฒฝ์ฐ์๋ kube-system ๋ค์์คํ์ด์ค๋ฅผ ์ง์ ํ๋ค.
ํ๋ ์ ์ ํ์ผ์ ์ด์ฉํด ํ๋๋ฅผ ๋ง๋ค ๋ ํ๋๋ default namespace์ ์์ฑ๋๋ค.
๋ ๋ค๋ฅธ ๋ค์์คํ์ด์ค์ ํ๋๋ฅผ ์์ฑํ๋ ค๋ฉด ๋ค์์คํ์ด์ค ์ต์
์ ์ฌ์ฉํ๋ฉด ๋๋ค.
์ด ํ๋๊ฐ ํญ์ dev ๋ค์์คํ์ด์ค์์ ์์ฑ๋๋๋ก ํ๊ณ ์ถ๋ค๋ฉด ์ปค๋งจ๋๋ผ์ธ์์ ๋ค์์คํ์ด์ค๋ฅผ ์ง์ ํ์ง ์๋๋ผ๋ ๋ค์ ์คํ์ด์ค ์ ์๋ฅผ ํ๋ ์ ์ ํ์ผ๋ก ์ฎ๊ธธ ์ ์๋ค.
์ด ๊ฒฝ์ฐ, metadata ์์ญ ์๋์ namespace: dev
๋ฅผ ์ถ๊ฐํ๋ฉด ๋๋ค.
๋ค๋ฅธ ๊ฐ์ฒด์ฒ๋ผ ๋ค์์คํ์ด์ค ์ญ์ ์ ์ ํ์ผ์ ํตํด ๋ง๋ค ์ ์๋ค.
๋ค์์คํ์ด์ค๋ฅผ ๋ง๋๋ ๋๋ค๋ฅธ ๋ฐฉ๋ฒ์ kubectl
๋ช
๋ น์ ํตํด ๋ค์์คํ์ด์ค๋ฅผ ๋ง๋ ๋ค์ ๋ค์์คํ์ด์ค ์ด๋ฆ์ ์
๋ ฅํ๋ ๊ฒ์ด๋ค.
๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด ํ์ฌ ๋ค์์คํ์ด์ค์ ๊ฐ์ฒด๋ค์ ํ์ธํ ์ ์๋ค.
๋ค๋ฅธ ๋ค์์คํ์ด์ค์์ ๊ฐ์ฒด๋ค์ ํ์ธํ๊ธฐ ์ํด์๋ ๋ค์์คํ์ด์ค ์ต์
์ ์ฌ์ฉํด์ผ ํ๋ค.
ํ์ง๋ง ๋ค๋ฅธ ๋ค์์คํ์ด์ค๋ก ์๊ตฌ์ ์ผ๋ก ์ ํํ๊ธฐ ์ํด์๋ kubectl config set-context
๋ช
๋ น์ ์ฌ์ฉํด์ ํ์ฌ ์ปจํ
์คํธ๋ฅผ ๋ค๋ฅธ ๋ค์์คํ์ด์ค๋ก ์ค์ ํด์ผ ํ๋ค.
์ปค๋งจ๋๋ฅผ ์์ธํ ๋ณด๋ฉด ์ด ์ปค๋งจ๋๋ ๋จผ์ ํ์ฌ context๋ฅผ ์๋ณํ๊ณ ์ํ๋ ๋ค์์คํ์ด์ค๋ฅผ ํ์ฌ context์ ์ค์ ํ๋ค.
context๋ ๊ฐ์ ๊ด๋ฆฌ ์์คํ
์์ ์ฌ๋ฌ ํด๋ฌ์คํฐ์ ์ฌ๋ฌ ํ๊ฒฝ์ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
๋ค์์คํ์ด์ค์์ ๋ฆฌ์์ค๋ฅผ ์ ํํ๋ ค๋ฉด ๋ฆฌ์์ค ํ ๋น๋(Resource Quota)๋ฅผ ์์ฑํด์ผ ํ๋ค.
Resource Quota๋ ์ ์ ํ์ผ์ ํตํด ์์ฑ ๊ฐ๋ฅํ๋ค.
์ ์ ํ์ผ์ ํ ๋น๋์ ์์ฑํ ๋ค์์คํ์ด์ค๋ฅผ ๋ช
์ํ๊ณ ํ๋๋ฅผ ์ค์ ํ๋ค. 10๊ฐ์ ํ๋, CPU ์ ๋, 10GB ๋ฉ๋ชจ๋ฆฌ ๋ฑ์ ์ค์ ํ ์ ์๋ค.
๋จ์ถํค๋ฅผ ๊ธฐ์ตํ์!
IaC(Infrastructure as Code) ์ธ๊ณ์์๋ ๋ช ๋ น์ ์ ๊ทผ๋ฒ(Imperative)๊ณผ ์ ์ธ์ ์ ๊ทผ๋ฒ(Declarative)์ผ๋ก ๋๋๋ค.
IaC์์ ์ธํ๋ผ ํ๋ก๋น์ ๋์์ ์ ๊ทผ๋ฒ์ ์๋ ๋ค์๊ณผ ๊ฐ๋ค.
๋ช
๋ น์ ์ ๊ทผ๋ฒ์์๋ ๋ฌด์์ด ์๊ตฌ๋๋์ง, ์ด๋ป๊ฒ ์์
์ ์ํํ๋์ง์ ๋ํด ๋์ ์๋ค.
์ ์ด์ ์ ๊ทผ๋ฒ์์๋ ์๊ตฌ์ฌํญ์ ์ ์ธํ๋ค. ์ธํ๋ผ๋ฅผ ๊ฐ์ถ๊ธฐ ์ํด ํ์ํ ๋ชจ๋ ์์
์ ์์คํ
์ด๋ ์ํํธ์จ์ด์ ์ํด ์ํ๋๊ธฐ ๋๋ฌธ์ ์ฐจ๊ทผ์ฐจ๊ทผ ์ค๋ช
ํ์ง ์์๋ ๋๋ค. ansible, chef, puppet, terraform๊ณผ ๊ฐ์ ์ค์ผ์คํธ๋ ์ด์
๋๊ตฌ๋ ์ด ๋ฒ์ฃผ์ ์ํ๋ค.
์ฟ ๋ฒ๋คํฐ์ค์์ ์ธํ๋ผ๋ฅผ ๊ด๋ฆฌํ๋ ๋ช ๋ น์ ๋ฐฉ๋ฒ์ ํ๋๋ฅผ ์์ฑํ๊ธฐ ์ํด kubectl ์คํ ๋ช ๋ น์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. ๊ฐ์ฒด๋ฅผ ์์ฑ, ์ ๋ฐ์ดํธ, ์ญ์ ํจ์ผ๋ก์จ ์ธํ๋ผ๋ฅผ ์๊ตฌ์ ์ ํํ ์ด๋ป๊ฒ ์ ์ฉํ ์ง ์๊ธฐํ๊ณ ์๋ค.
์ ์ธ์ ์ ๊ทผ์ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์์ ์์ฉ ํ๋ก๊ทธ๋จ๊ณผ ์๋น์ค์ ์์ ์ํ๋ฅผ ์ ์ํ๋ ํ์ผ์ ๋ง๋ค๊ณ ๋จ์ผ kubectl apply
๋ช
๋ น์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. ์ฟ ๋ฒ๋คํฐ์ค๋ ๊ตฌ์ฑ ์ฝ์ด์ ์ธํ๋ผ๋ฅผ ์์ ์ํ๋ก ๊ฐ์ ธ์ค๊ธฐ ์ํด ๋ญ๊ฐ ํ์ํ์ง ์ค์ค๋ก ๊ฒฐ์ ํ ์ ์๋ค. ๋จ์ผ kubectl apply
๋ช
๋ น์ ๊ธฐ์กด ๊ตฌ์ฑ์ ๋ณด๊ณ ์์คํ
์ ์ด๋ค ๋ณํ๊ฐ ํ์ํ์ง ์์๋ธ๋ค.
์ข ๋ ์์ธํ ์์๋ณด์๋ฉด, ๋ช
๋ น์ ์ ๊ทผ์๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
์ฒซ๋ฒ์งธ๋ Imperative Commands๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํ ์คํ, ์์ฑ, ๋
ธ์ถ ๋ช
๋ น๊ณผ ๊ธฐ์กด ๊ฐ์ฒด๋ฅผ ์
๋ฐ์ดํธํ๊ธฐ ์ํ ํธ์ง, ์ค์ผ์ผ, ์
๋ช
๋ น ๊ฐ์ ๊ฒ์ด๋ค.
YAML ํ์ผ์ ๋ค๋ฃฐ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด ์์ฑ๊ณผ ์์ ์ ์ ์ํ๊ฒ ํ ์ ์๋ค. ํ์ง๋ง ๊ธฐ๋ฅ์ ํ๊ณ๊ฐ ์์ด ๊ณ ๊ธ ์ ์ค์ผ์ด์ค๋ฅผ ์ํด ๊ธธ๊ณ ๋ณต์กํ ๋ช
๋ น์ ๋ง๋ค์ด์ผ ํ๋ค.
๋ํ ์ด ๋ช
๋ น์ ํ ๋ฒ ์คํ๋๊ณ ์ํ์ง๋ค. ๋ช
๋ น์ด๋ฅผ ์คํํ ์ฌ์ฉ์์ ์ธ์
ํ์คํ ๋ฆฌ์์๋ง ๋ณผ ์ ์๋ค.
๊ทธ๋์ ํฌ๊ณ ๋ณต์กํ ํ๊ฒฝ์์ Imperative Commands๋ฅผ ๋ค๋ฃจ๋ ๊ฒ์ ์ด๋ ต๋ค.
์ด๋ฐ ๊ฒฝ์ฐ, Imperative Object Configuration File๋ก ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ด ๋์๋๋ค.
๊ฐ์ฒด ์ ์ ํ์ผ ์์ฑ ๋๋ ๊ตฌ์ฑ ํ์ผ ๋๋ manifest file์ด๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ ์ด ํ์ผ๋ค์ YAML ํฌ์บฃ์์ ๊ฐ์ฒด๊ฐ ์ ํํ ์ด๋ป๊ฒ ๋ณด์ฌ์ผ ํ๋์ง๋ฅผ ์ ๋๋ฐ ๋์์ ์ค๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํด kubectl ๋ช
๋ น์ ์ฌ์ฉํ๋ค.
๋ณํ๊ฐ ํ์ํ ๊ฒฝ์ฐ, ์๋ฅผ ๋ค์ด ์ด๋ฏธ์ง๋ฅผ ๋ค๋ฅธ ๋ฒ์ ์ผ๋ก ์์ ํด์ผํ๋ ๊ฒฝ์ฐ, ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ kubectl edit
๋ช
๋ น์ ์ด์ฉํด ๊ฐ์ฒด ์ด๋ฆ์ ๋ช
์ํ๋ ๊ฒ์ด๋ค. ๋ช
๋ น์ด ์คํ๋๋ฉด YAML ์ ์ ํ์ผ์ด ์ด๋ฆฐ๋ค. ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ์ฌ์ฉ๋์๋ ๊ฒ๊ณผ ๋น์ทํ์ง๋ง ์ํ ํ๋ ๋ฑ์ ์ถ๊ฐ์ ์ธ ํ๋๊ฐ ์๋ค. ์ํ ํ๋๋ ํ๋์ ์ํ๋ฅผ ์ ์ฅํ๋ ๋ฐ์ ์ฌ์ฉ๋๋ค. ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉํ ํ์ผ์ด ์๋๋ค. ์ฟ ๋ฒ๋คํฐ์ค ๋ฉ๋ชจ๋ฆฌ ๋ด์ ํ๋ ์ค์ ํ์ผ๊ณผ ์ ์ฌํ๋ค. ์ด ํ์ผ์ ์์ ํ๊ณ ์ ์ฅํ๋ฉด ํ์ผ์ ๋ณํ๊ฐ ๋ผ์ด๋ธ ๊ฐ์ฒด์ ์ ์ฉ๋ ๊ฒ์ด๋ค. ํ์ง๋ง kubectl edit
๋ช
๋ น์ผ๋ก ๋ณ๊ฒฝํ ๊ฑด ์ด๋์๋ ๊ธฐ๋ก๋์ง ์๋๋ค. ์์ ์ด ์ ์ฉ๋๊ณ ๋๋ฉด ๋ณ๊ฒฝ ์ ๊ณผ ๋์ผํ ๋ก์ปฌ ์ ์ ํ์ผ๋ง ๋จ๋๋ค.
๋ฐ๋ผ์, kubectl edit
๋ช
๋ น์ ์ฌ์ฉํ ๊ฒฝ์ฐ, ๊ฐ์ฒด ์ ์ ํ์ผ์ด ํจ๊ป ๋ณ๊ฒฝ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ณ๊ฒฝ ์ฌ๋ถ๋ฅผ ์๊ธฐ ์ด๋ ต๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ kubectl edit
๋ช
๋ น์ ์์ผ๋ก ๊ฐ์ฒด ์ ์ ํ์ผ์ ์ฌ์ฉํ์ง ์์ ๋์๋ง ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. ๋ ๋์ ๋ฐฉ๋ฒ์ ๊ฐ์ฒด ์ ์ ํ์ผ์ ๋ก์ปฌ ๋ฒ์ ์ ํธ์งํ๋ ๊ฒ์ด๋ค.
๊ฐ์ฒด ์ ์ ํ์ผ์ ๋ณ๊ฒฝํ๊ณ kubectl replace
๋ช
๋ น์ ์คํํ์ฌ ๊ฐ์ฒด๋ฅผ ์
๋ฐ์ดํธํ ์ ์๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ณ๊ฒฝ ์ฌํญ์ด ๊ธฐ๋ก๋๊ณ ๋ณ๊ฒฝ ์ฌ์ฌ ๊ณผ์ ์ ์ผ๋ถ๋ก ์ถ์ ํ ์ ์๋ค. ๋ง์ฝ ๊ฐ์ฒด๋ฅผ ์์ ํ ์ญ์ ํ๊ณ ์ฌ์์ฑํ๊ณ ์ถ๋ค๋ฉด, --force
์ต์
์ด ์ ์ฉ๋ ๊ฐ์ ๋ช
๋ น์ ์ฌ์ฉํ๋ฉด ๋๋ค.
์ด๊ฑด ์ฌ์ ํ ๋ช
๋ น์ ์ธ ์ ๊ทผ๋ฒ์ด๋ค. ๊ฐ์ฒด๋ค์ ์์ฑํ๊ณ ์
๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ ์ฟ ๋ฒ๋คํฐ์ค์๊ฒ ์ง์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ง์ฝ ์์ฑ ๋ช
๋ น์ ์คํํ์ ๋ ๊ฐ์ฒด๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ค๋ฉด, ์ด๋ฏธ ์กด์ฌํ๋ค๋ ์ค๋ฅ๋ก ์คํจํ ๊ฒ์ด๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ์ฒด๋ฅผ ์
๋ฐ์ดํธํ ๋๋ ๊ฐ์ฒด๊ฐ ์กด์ฌํ๋์ง๋ฅผ ๋จผ์ ํ์ธํด์ผ ํ๋ค.
๊ฐ์ฒด๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด ์ค๋ฅ ๋ฉ์์ง๋ก kubectl replace
๋ช
๋ น์ด ์คํจํ๋ค.
๋ช
๋ น์ ์ ๊ทผ์ ๊ด๋ฆฌ์์๊ฒ ๋งค์ฐ ๊น๋ค๋กญ๋ค. ํญ์ ํ์ฌ ํ๊ฒฝ์ค์ ์ ์ธ์งํ๊ณ ๋ณ๊ฒฝํ๊ธฐ ์ ์ ํ์ธํด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ ์ธ์ ์ ๊ทผ์ ์ฐ๋ฆฌ๊ฐ ์์ฑํ ๋์ผํ ๊ฐ์ฒด ์ ์ ํ์ผ์ ์ฌ์ฉํ๋ค.
kubectl create
, kubectl replace
๋ช
๋ น์ ์ฌ์ฉํ๋ ๋์ kubectl apply
๋ช
๋ น์ ์ฌ์ฉํ๋ค.
kubectl appply
๋ช
๋ น์ ์ด๋ฏธ ์กด์ฌํ์ง ์๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ๋งํผ ์๋ฆฌํ๋ค.
๋ํ ๊ฐ์ฒด ์ ์ ํ์ผ์ด ์ฌ๋ฌ ๊ฐ์ผ ๊ฒฝ์ฐ, ๋จ์ผ ํ์ผ ๋์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ฒฝ๋ก๋ก ์ง์ ํ ์๋ ์๋ค. ๊ทธ๋์ผ ๋ชจ๋ ๊ฐ์ฒด๋ค์ด ํ ๋ฒ์ ๋ง๋ค์ด์ง๋ค.
๋ณํ๊ฐ ํ์ํ๋ฉด ๊ฐ์ฒด ์ ์ ํ์ผ์ ์
๋ฐ์ดํธํ๊ณ kubectl apply
๋ช
๋ น์ ๋ค์ ์คํํ๋ฉด ๋๋ค. ์ด๋ฒ์๋ ๊ฐ์ฒด๊ฐ ์กด์ฌํ๋ค๋ ๊ฒ์ ์๊ธฐ ๋๋ฌธ์ ์๋ก ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ง ์๊ณ ๊ธฐ์กด์ ๊ฐ์ฒด๋ง ์
๋ฐ์ดํธํ๋ค. ๊ทธ๋์ ๊ฐ์ฒด๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ค๊ฑฐ๋ ์
๋ฐ์ดํธ๊ฐ ์ ์ฉ๋ ์ ์๋ค๋ ์ค๋ฅ๋ฅผ ๋ด์ง ์๋๋ค.
๊ฐ์ฒด ์ ์ ํ์ผ์ ์
๋ฐ์ดํธํ๊ณ kubectl apply
๋ช
๋ น์ ์ฌ์ฉํ๋ฉด kubectl apply
๋ช
๋ น์ด ์์์ ๋๋จธ์ง๋ฅผ ์ฒ๋ฆฌํด์ค๋ค.
๋ค์์ ์ํ์ ๋ํ ๋ช๊ฐ์ง ํ์ด๋ค.
์ํ์ ๊ด์ ์์ ๋ณด๋ฉด ๋ช
๋ น์ ์ ๊ทผ์ ์จ์ ์ต๋ํ ์๊ฐ์ ์ ์ฝํด์ผ ํ๋ค.
๋ณต์กํ ์๊ตฌ์ฌํญ์ด ์๋ค๋ฉด ๊ฐ์ฒด ์ ์ ํ์ผ์ ์์ ํ๊ณ kubectl apply
๋ช
๋ น์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ํฉํ ์๋ ์๋ค.
Imperative commands๋ฅผ ํตํด ๋น ๋ฅด๊ฒ ๊ฐ์ฒด ์ ์ ํ์ผ ํ ํ๋ฆฟ์ ์์ฑํ ์ ์๋ค.
--dry-run=client
์ต์
: ๋ฆฌ์์ค๋ฅผ ์์ฑํ์ง ์๊ณ ๋ฆฌ์์ค๋ฅผ ์์ฑํ ์ ์๋์ง ์ฌ๋ถ์ ๋ช
๋ น์ด ์ฌ๋ฐ๋ฅธ์ง ์ฌ๋ถ๋ฅผ ์๋ ค์ค๋ค.-o yaml
์ต์
: ๋ฆฌ์์ค ์ ์๋ฅผ YAML ํ์์ผ๋ก ํ๋ฉด์ ์ถ๋ ฅํ๋ค. ์์ ๋ ์ต์ ์ ํจ๊ป ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค ์ ์ ํ์ผ ํ ํ๋ฆฟ์ ๋น ๋ฅด๊ฒ ์์ฑํ ์ ์๋ค.
Generate POD Manifest YAML file (-o yaml). Don't create it(--dry-run)
kubectl run nginx --image=nginx --dry-run=client -o yaml
Generate Deployment YAML file (-o yaml). Don't create it(--dry-run)
kubectl create deployment --image=nginx nginx --dry-run=client -o yaml
Generate Deployment with 4 Replicas
kubectl create deployment nginx --image=nginx --replicas=4
๋๋
kubectl scale
๋ช ๋ น์ ํตํด์๋ ๊ฐ๋ฅํ๋ค.
kubectl scale deployment nginx --replicas=4
Another way to do this is to save the YAML definition to a file and modify
kubectl create deployment nginx --image=nginx --dry-run=client -o yaml > nginx-deployment.yaml
Create a Service named redis-service of type ClusterIP to expose pod redis on port 6379
kubectl expose pod redis --port=6379 --name redis-service --dry-run=client -o yaml
์์ ๋ฐฉ๋ฒ์ ์๋์ผ๋ก pod์ label์ selector๋ก ์ฌ์ฉํ๋ค.๋๋
kubectl create service clusterip redis --tcp=6379:6379 --dry-run=client -o yaml
์์ ๋ฐฉ๋ฒ์ pod์ label์ selector๋ก ์ฌ์ฉํ์ง ์๊ณ , ๋์ ์ ํ์๋ฅผ app=redis๋ก ๊ฐ์ ํ๋ค. selector๋ฅผ ์ต์ ์ผ๋ก ์ ๋ฌํ ์ ์๋ค. ๋ฐ๋ผ์, pod์ ๋ค๋ฅธ label์ด ์๋ ๊ฒฝ์ฐ ์ ๋๋ก ์๋ํ์ง ์๋๋ค. ์ด ๊ฒฝ์ฐ, ์๋น์ค๋ฅผ ์์ฑํ๊ธฐ ์ ์ ์๋น์ค ์ ์ ํ์ผ์ ์์ฑํด์ selector๋ฅผ ์์ ํด์ผ ํ๋ค.
Create a Service named nginx of type NodePort to expose pod nginx's port 80 on port 30080 on the nodes
kubectl expose pod nginx --type=NodePort --port=80 --name=nginx-service --dry-run=client -o yaml
์์ ๋ฐฉ๋ฒ์ ์๋์ผ๋ก pod์ label์ selector๋ก ์ฌ์ฉํ๋ค. ๊ทธ๋ฌ๋ node port๋ฅผ ๋ช ์ํ ์ ์๋ค. node port๋ฅผ ๋ช ์ํ๊ธฐ ์ํด์๋ ์๋น์ค๋ฅผ ์์ฑํ๊ธฐ ์ ์ ์๋น์ค ์ ์ ํ์ผ์ ์์ฑํ๊ณ node port๋ฅผ ๋ช ์ํด์ผ ํ๋ค.๋๋
kubectl create service nodeport nginx --tcp=80:80 --node-port=30080 --dry-run=client -o yaml
์์ ๋ฐฉ๋ฒ์ pod์ label์ selector๋ก ์ฌ์ฉํ ์ ์๋ค.
๋ฐ๋ผ์, ์์ ๋ ๋ฐฉ๋ฒ์ ๋ ๋ค ์ด๋ ค์์ ๊ฐ๊ณ ์๋ค. kubectl expose
๋ node port๋ฅผ ๋ช
์ํ ์ ์๊ณ kubectl create
๋ pod์ label์ ์ ํํ ์ ์๋ค.
ํ์์ ๊ฒฝ์ฐ, kubectl expose
๋ช
๋ น์ ์ถ์ฒํ๋ค. node port๋ฅผ ๋ช
์ํด์ผ ํ๋ ๊ฒฝ์ฐ, ์ ์ ํ์ผ์ ์์ฑํด์ node port๋ฅผ ์ถ๊ฐํ๋ฉด ๋๋ค.
kubectl expose
๋ช
๋ น์ ์ฌ์ฉํ๋๋ label 'tier=db'๋ฅผ ์๋์ผ๋ก ํ์งํ๊ณ selector๋ก ์ง์ ํ๋ค.
--expose ์ต์
์ฌ์ฉ ์, ์ฃผ์์ฌํญ์ ๋ค์๊ณผ ๊ฐ๋ค.
--expose=true
๋ก ์ค์ ํ๋๋ pod์ ํจ๊ป service๊ฐ ์์ฑ๋์๋ค.
kubectl apply
๋ช
๋ น์ ์ ์ฉ ์๋ฆฌ์ ๋ํด ์์๋ณด์.
kubectl apply
๋ช
๋ น์ local file
๊ณผ last applied configuration
, kubernetes live object configuration
๋ฅผ ๊ณ ๋ คํ๋ค.
๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ด๋ค ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ์ง ์๊ด์์ง๋ง kubectl apply
๋ช
๋ น์ ์ ์ฉํ๋ฉด ๊ทธ ์ด์์ ์์
์ ์ํํ๋ค.
์ฐ๋ฆฌ๊ฐ ์์ฑํ YAML ํ์์ ๋ก์ปฌ ๊ฐ์ฒด ์ ์ ํ์ผ์ json ํ์์ผ๋ก ๋ณํ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก ์ ์ฉ๋ ๊ตฌ์ฑ(last applied configuration)์ผ๋ก ์ ์ฅ๋๋ค.
์ค๋ธ์ ํธ์ ๋ํ ์
๋ฐ์ดํธ๋ ์ธ ๊ฐ์ง๋ฅผ ๋ชจ๋ ๋น๊ตํ์ฌ ์ฟ ๋ฒ๋คํฐ์ค ๋ผ์ด๋ธ ๊ฐ์ฒด์ ์ด๋ค ๋ณํ๊ฐ ์๋์ง ํ์ธํ๋ค.
์๋ฅผ ๋ค์ด, nginx ์ด๋ฏธ์ง๋ฅผ 1.19๋ฒ์ ์ผ๋ก ์
๋ฐ์ดํธ ํ๊ณ kubectl apply
๋ช
๋ น์ ์ฌ์ฉํ๋ค๋ฉด ๋ก์ปฌ ํ์ผ์ 1.19 ๊ฐ์ ๋ผ์ด๋ธ ๊ฐ์ฒด ์ค์ ๊ฐ๊ณผ ๋น๊ต๋๋ค.
์ฐจ์ด๊ฐ ์๋ค๋ฉด ๋ผ์ด๋ธ ๊ฐ์ฒด ์ค์ ๊ฐ์ ์ ๊ฐ์ผ๋ก ์
๋ฐ์ดํธ๋๋ค.
์ด๋ ํ ๋ณํ๊ฐ ์๋๋ผ๋ ๋ง์ง๋ง์ผ๋ก ์ ์ฉ๋๋ json ํ์์ ํ๊ฒฝ ์ค์ (last applied configuration)์ ํญ์ ์ต์ ์ผ๋ก ์
๋ฐ์ดํธ๋๋ค.
๊ทธ๋์ ํญ์ '์ต์ '์ด๋ค.
๊ทธ๋ผ ๋ง์ง๋ง์ผ๋ก ์ ์ฉ๋ ํ๊ฒฝ ์ค์ (last applied configuration)์ด ์ ํ์ํ ๊น?
ํ๋๊ฐ ์ญ์ ๋๋ฉด, ์๋ฅผ ๋ค์ด 'type' label์ด ์ญ์ ๋๋ฉด kubectl apply
๋ช
๋ น์ด ์คํ๋์์ ๋ ๋ง์ง๋ง์ผ๋ก ์ ์ฉ๋ ํ๊ฒฝ ์ค์ (last applied configuration)์ label์ด ์กด์ฌํ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
ํ์ง๋ง ๋ก์ปฌ ํ์ผ์์ ์ด๋ฏธ label์ ์ญ์ ํ๊ธฐ ๋๋ฌธ์ ๋ก์ปฌ ์ ์ ํ์ผ์๋ label์ด ์กด์ฌํ์ง ์๋๋ค. ์ด์ ๋ฐ๋ผ, live object configuration์์ 'type' label์ด ์ ๊ฑฐ๋๋ค.
์ฆ, ๋ง์ง๋ง์ผ๋ก ์ ์ฉ๋ ํ๊ฒฝ ์ค์ (last applied configuration)์๋ง ํด๋น label์ด ์กด์ฌํ๋ ๊ฒ์ ์ด์ ๋จ๊ณ์์ ํน์ ๋ง์ง๋ง์ผ๋ก kubectl apply
๋ช
๋ น์ ์คํํ์ ๋ ๊ทธ ํน์ ํ๋๊ฐ ๊ฑฐ๊ธฐ ์์๊ณ ์ง๊ธ์ ์ ๊ฑฐ๋๊ณ ์๋ ๊ฒ์ ์๋ฏธํ๋ค.
๋ง์ง๋ง์ผ๋ก ์ ์ฉ๋ ํ๊ฒฝ ์ค์ (last applied configuration) ํ์ผ์ ๋ก์ปฌ ํ์ผ์์ ์ด๋ค ํ๋๊ฐ ์ ๊ฑฐ๋์๋์ง ์์๋ด๋ ๊ฒ์ ๋๋๋ค.
์ด ๋ด์ฉ์ ๊ณต์ ๋ฌธ์์์ ์์ธํ ์ดํด๋ณผ ์ ์๋ค.
๋ก์ปฌ ์์คํ
์ ์ ์ฅ๋ ๊ฒ์ local file์ด๋ค. Live Object configuration์ ์ฟ ๋ฒ๋คํฐ์ค ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋์ด ์๋ค. last applied configuration์ด ์ ์ฅ๋ json ํ์ผ์ live object configuration์ annotation ์์ญ์ ์ ์ฅ๋์ด ์๋ค.
kubectl apply
๋ช
๋ น์ ์ฌ์ฉํ ๋์๋ง last applied configuration์ ์ ์ฅ๋๋ค. kubectl create
๋ kubectl replace
๋ฑ ๋ค๋ฅธ ๋ช
๋ น์ ์ฌ์ฉํ ๋์๋ last applied configuration์ ์ ์ฅ๋์ง ์๋๋ค.
์ฆ, imperative(๋ช
๋ น์ ) ์ ๊ทผ(kubectl apply
์ด์ธ์ ๋ช
๋ น์ด)์์๋ last applied configuration์ด ์ ์ฅ๋์ง ์๊ณ , ๊ฐ์ฒด๊ฐ ์ด๋ฏธ ์กด์ฌํ๋์ง ๋ฑ์ ํ์ธํ์ง ์์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋ค.
๋ฐ๋ฉด์, declarative(์ ์ธ์ ) ์ ๊ทผ(kubectl apply
๋ช
๋ น์ด)์์๋ last applied configuration์ด ์ ์ฅ๋๊ณ , ๊ฐ์ฒด๊ฐ ์ด๋ฏธ ์กด์ฌํ๋์ง ๋ฑ์ ํ์ธํ๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.