๋์ปค๋ ๋์ปค ์ค์ ๋ชจ๋์๋ ์ปจํ
์ด๋๋ฅผ ๋
ผ๋ฆฌ์ ์ผ๋ก ๋๋ ๊ด๋ฆฌํ๋ ๊ฐ๋
์ด ์๋ค. docker ps๋ฅผ ์คํํ๋ฉด ํธ์คํธ์ ๋ ์๋ ๋ชจ๋ ์ปจํ
์ด๋๊ฐ ํ ๋ชฉ๋ก์ ๋ค์์ฌ ๋์จ๋ค. ์ปจํ
์ด๋ ์๊ฐ ๋์ด๋ ์๋ก ์ด๋ค ๊ฒ์ด ์ด๋ค ์ ํ๋ฆฌ์ผ์ด์
์ ์ํ๋์ง ๊ตฌ๋ถํ๊ธฐ๊ฐ ์ด๋ ค์์ง๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ ์ด ๋ฌธ์ ๋ฅผ ๋ค์์คํ์ด์ค(Namespace)๋ผ๋ ์ค๋ธ์ ํธ๋ก ํด๊ฒฐํ๋ค. ๋ค์์คํ์ด์ค๋ ํ๋, ๋ ํ๋ฆฌ์นด์
, ๋ํ๋ก์ด๋จผํธ, ์๋น์ค ๊ฐ์ ๋ฆฌ์์ค๋ค์ด ๋ฌถ์ฌ ์๋ ํ๋์ ๊ฐ์ ๊ณต๊ฐ์ด๋ค.
๋ฆฌ์์ค๋ฅผ ์ฉ๋๋ณ๋ก ๋ฌถ์ด ๋๋ฉด, ์๋ก ๋ค๋ฅธ ๋ชฉ์ ์ ๋ฆฌ์์ค๊ฐ ํ ํด๋ฌ์คํฐ ์์์ ๋ค์์ด์ง ์๊ณ ๋
ผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌ๋ ์ฑ ์ด์๋๋ค.
๋ค์์คํ์ด์ค๋ namespace ๋๋ ์ถ์ฝํ ns๋ก ๋ค๋ฃฌ๋ค. ํ์ฌ ํด๋ฌ์คํฐ์ ๋ค์์คํ์ด์ค ๋ชฉ๋ก์ ๋ค์ ๋ช
๋ น์ด๋ก ํ์ธํ๋ค.
kubectl get namespaces
kubectl get ns
๋ณ๋๋ก ๋ง๋ค์ง ์์๋ ํด๋ฌ์คํฐ์๋ ๊ธฐ๋ณธ ๋ค์์คํ์ด์ค ๋ช ๊ฐ๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ค. ๊ทธ ์ค ๊ฐ์ฅ ์์ฃผ ์ฐ๋ ๊ฒ์ด default์ด๋ค. ์ฟ ๋ฒ๋คํฐ์ค ์ค์น ์ ์๋์ผ๋ก ์ค์ ๋๋ฉฐ, kubectl ๋ช
๋ น์ ๋ค์์คํ์ด์ค๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด ์ด default๊ฐ ๋์์ด ๋๋ค.
kubectl get pods --namespace defaultํน์ ๋ค์์คํ์ด์ค๋ฅผ ์ง์ ํ ๋๋ --namespace ๋์ ์ถ์ฝํ -n์ ์ธ ์ ์๋ค. ๋ค์์ kube-system ๋ค์์คํ์ด์ค์ ํ๋๋ฅผ ์กฐํํ๋ ๋ช
๋ น์ด๋ค.
kubectl get pods -n kube-systemkubectl์ด ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ๋ ๋ค์์คํ์ด์ค๋ default์ด์ง๋ง, ์ด ๊ฐ์ ๊ณ ์ ๋ ๊ฒ์ด ์๋๋ค. kubeconfig ํ์ผ์ ์ปจํ
์คํธ ์ค์ ์ ์์ ํ๋ฉด ๊ธฐ๋ณธ ๋ค์์คํ์ด์ค๋ฅผ ์ํ๋ ๊ฒ์ผ๋ก ๋ฐ๊ฟ ์ ์๋ค.
ํน์ ๋ค์์คํ์ด์ค์์ ์ฃผ๋ก ์์
ํ๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๋ฐ๊ฟ ๋์ด ๋งค๋ฒ -n ์ต์
์ ๋ถ์ด๋ ๋ฒ๊ฑฐ๋ก์์ ์ค์ผ ์ ์๋ค.
์ด์ฒ๋ผ ๋ค์์คํ์ด์ค๋ ๋ฆฌ์์ค๋ฅผ ๋
ผ๋ฆฌ์ ์ผ๋ก ๋ฌถ์ด ํ๋์ ๊ฐ์ ํด๋ฌ์คํฐ์ฒ๋ผ ๋ค๋ฃฐ ์ ์๊ฒ ํด์ค๋ค. ํ๋์ ํด๋ฌ์คํฐ๋ฅผ ์ฌ๋ฌ ๋ช
์ด ํจ๊ป ์ฌ์ฉํ๋ค๋ฉด ์ฌ์ฉ์๋ง๋ค ๋ค์์คํ์ด์ค๋ฅผ ๋ฐ๋ก ๋์ด ์๋ก์ ๋ฆฌ์์ค๊ฐ ์์ด์ง ์๊ฒ ํ ์ ์๋ค.
์ฉ๋์ ๋ฐ๋ผ ๋ค์์คํ์ด์ค๋ฅผ ๋๋๋ ๋ฐฉ์๋ ํํ๋ค. ํน์ ๋ชฉ์ ์ ๋ํ๋ก์ด๋จผํธ์ ์๋น์ค๊ฐ ์ง์ ํ ๋ค์์คํ์ด์ค์์๋ง ์กด์ฌํ๋๋ก ๋๋ ๊ฒ์ผ๋ก, ๋ณดํต ๋ชจ๋ํฐ๋ง, ๋ก๋ ๋ฐธ๋ฐ์ฑ, ์ธ๊ทธ๋ ์ค์ฒ๋ผ ์ฑ๊ฒฉ์ด ๋๋ ทํ ์ปดํฌ๋ํธ๋ฅผ ๋ฌถ๋ ๋ฐ ์ฌ์ฉํ๋ค.
๋ค๋ง ๋ค์์คํ์ด์ค๋ ์ด๋๊น์ง๋ ๋
ผ๋ฆฌ์ ๊ตฌ๋ถ์ผ ๋ฟ, ๋ฌผ๋ฆฌ์ ์ผ๋ก ๊ฒฉ๋ฆฌ๋ ๊ณต๊ฐ์ ์๋๋ค. ์๋ก ๋ค๋ฅธ ๋ค์์คํ์ด์ค์์ ์์ฑ๋ ํ๋๊ฐ ๊ฐ์ ๋
ธ๋ ์์ ํจ๊ป ๋ ์์ ์ ์๋ค. ๋ค์์คํ์ด์ค๊ฐ ๋๋๋ ๊ฒ์ ๋ฆฌ์์ค๋ฅผ ๋ฐ๋ผ๋ณด๊ณ ๊ด๋ฆฌํ๋ ๋จ์์ด์ง, ํ๋๊ฐ ์ค์ ๋ก ๋ฐฐ์น๋๋ ๋ฌผ๋ฆฌ์ ์์น๊ฐ ์๋๊ฐ.
*๋ฆฌ๋
์ค ๋ค์์คํ์ด์ค
์ด๋ฆ์ ๊ฐ์ง๋ง ๋ณ๊ฐ์ ๊ฐ๋
์ด๋ค. ๋ฆฌ๋
์ค ๋ค์์คํ์ด์ค๋ ์ปจํ
์ด๋์ ๊ฒฉ๋ฆฌ๋ ๊ณต๊ฐ์ ๋ง๋ค๊ธฐ ์ํด ๋ฆฌ๋
์ค ์ปค๋์ด ์ ๊ณตํ๋ ์์ฒด ๊ธฐ๋ฅ์ผ๋ก, ๋คํธ์ํฌ / ๋ง์ดํธ / ํ๋ก์ธ์ค ๋ค์์คํ์ด์ค ๋ฑ์ ๊ฐ๋ฆฌํจ๋ค. ์ฟ ๋ฒ๋คํฐ์ค์ ๋ค์์คํ์ด์ค๋ ํด๋ฌ์คํฐ ๋ฆฌ์์ค๋ฅผ ๋ฌถ๋ ๋
ผ๋ฆฌ์ ๋จ์๋ผ๋ ์ ์์ ์ธต์๊ฐ ๋ค๋ฅด๋ค.
๋ฆฌ์์ค๋ฅผ ๋ฌถ๋๋ค๋ ์ ์์ ๋ค์์คํ์ด์ค๋ ๋ผ๋ฒจ(Label)๊ณผ ๋น์ทํด ๋ณด์ธ๋ค. ๋ผ๋ฒจ๋ ๋ค์์ฒ๋ผ ํน์ ์กฐ๊ฑด์ ํ๋๋ง ๊ณจ๋ผ๋ผ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
kubectl get pods -l app=webserver๊ทธ๋ฌ๋ ๋ค์์คํ์ด์ค๋ ๋ผ๋ฒจ๋ณด๋ค ๋์ ์ฉ๋๋ก ์ฐ์ธ๋ค. ๋ผ๋ฒจ์ด ๋ฆฌ์์ค๋ฅผ ์ ํํ๊ณ ๋ฌถ๋ ์์ค์ ๊ทธ์น๋ค๋ฉด, ๋ค์์คํ์ด์ค๋ ๊ทธ ๊ฒฝ๊ณ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ์ฑ
์ ์ ์ฉํ๋ ๋จ์๊ฐ ๋๋ค.
์๋ฅผ ๋ค์ด ResourceQuota ์ค๋ธ์ ํธ๋ก ํน์ ๋ค์์คํ์ด์ค์์ ์์ฑ๋๋ ํ๋์ ์์ ์ฌ์ฉ๋์ ์ ํํ๊ฑฐ๋, ์ ๋๋ฏธ์
์ปจํธ๋กค๋ฌ(Admission Controller)๋ฅผ ์ด์ฉํด ํน์ ๋ค์์คํ์ด์ค์ ํ๋์๋ ํญ์ ์ฌ์ด๋์นด ์ปจํ
์ด๋๊ฐ ๋ถ๋๋ก ๊ฐ์ ํ ์ ์๋ค.
๋ฌด์๋ณด๋ค ๋ค์์คํ์ด์ค๋ ์ฌ์ฉ ๋ชฉ์ ์ ๋ฐ๋ผ ํ๋, ์๋น์ค ๊ฐ์ ๋ฆฌ์์ค๋ฅผ ๊ฒฝ๊ณ ๋จ์๋ก ๊ฒฉ๋ฆฌํด, ๊ด๋ฆฌ ๋์์ ํธ๋ฆฌํ๊ฒ ๊ตฌ๋ถํ๊ฒ ํด ์ค๋ค.
๋ค์์คํ์ด์ค๋ ๋ช ๋ น ํ ์ค๋ก๋, YAML ๋งค๋ํ์คํธ๋ก๋ ๋ง๋ค ์ ์๋ค.
kubectl create namespace <name>
kubectl apply -f namespace.yml
์์ฑ ์ฌ๋ถ๋ ๋ชฉ๋ก์์ ์ด๋ฆ์ผ๋ก ๊ฑธ๋ฌ ํ์ธํ๋ค.
kubectl get ns | grep <name>ํน์ ๋ค์์คํ์ด์ค์ ๋ฆฌ์์ค๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๋ค. ๋ฆฌ์์ค YAML์ metadata.namespace ํญ๋ชฉ์ ๋ค์์คํ์ด์ค ์ด๋ฆ์ ์ ์ผ๋ฉด ๋๋ค.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
namespace: my-namespace
spec:
# ...
ํ๋์ YAML ํ์ผ ์์ ---๋ฅผ ๊ตฌ๋ถ์๋ก ๋ฃ์ผ๋ฉด ์ฌ๋ฌ ๋ฆฌ์์ค๋ฅผ ํ ๋ฒ์ ์ ์ํ ์๋ ์๋ค. ๋ค์์คํ์ด์ค์ ๊ทธ ์์ ๋ค์ด๊ฐ ๋ํ๋ก์ด๋จผํธ, ์๋น์ค๋ฅผ ํ ํ์ผ์ ๋ด์ ํจ๊ป ์ ์ฉํ๋ ์์ด๋ค.
kubectl apply -f deploy-svc-ns.yamlํน์ ๋ค์์คํ์ด์ค์ ๋ฆฌ์์ค๋ฅผ ์กฐํํ ๋๋ -n์ผ๋ก ์ง์ ํ๊ณ , ๋ค์์คํ์ด์ค์ ์๊ด์์ด ์ ์ฒด๋ฅผ ๋ณด๋ ค๋ฉด --all-namespaces๋ฅผ ์ด๋ค.
kubectl get pods,services -n <name>
kubectl get pods --all-namespaces
์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ์์์๋ ์๋น์ค ์ด๋ฆ๋ง์ผ๋ก ๊ทธ ์๋น์ค์ ์ ๊ทผํ ์ ์๊ณ , ์๋น์ค๊ฐ ํธ๋ํฝ์ ๋ค์ ๋ฌถ์ธ ํ๋๋ก ๋ผ์ฐํ
ํ๋ค. ๋ค๋ง ์ด๋ ์ ํํ๋ ๊ฐ์ ๋ค์์คํ์ด์ค ์์์๋ง ์ฑ๋ฆฝํ๋ค. ๋ค๋ฅธ ๋ค์์คํ์ด์ค์ ์๋ ์๋น์ค๋ ์ด๋ฆ๋ง์ผ๋ก๋ ์ ๊ทผํ ์ ์๋ค.
๋ค๋ฅธ ๋ค์์คํ์ด์ค์ ์๋น์ค์ ์ ๊ทผํ๋ ค๋ฉด ์๋น์ค ์ด๋ฆ ๋ค์ ๋ค์์คํ์ด์ค ์ด๋ฆ์ ๋ถ์ธ๋ค.
<์๋น์ค ์ด๋ฆ>.<๋ค์์คํ์ด์ค ์ด๋ฆ>ํ๋ ์์ DNS ์ค์ (resolv.conf)์ svc.cluster.local ๊ฐ์ ๊ฒ์ ๋๋ฉ์ธ์ด ๋ฑ๋ก๋ผ ์์ด, ์์ฒ๋ผ ์๋น์ค ์ด๋ฆ๊ณผ ๋ค์์คํ์ด์ค๋ง ์ ์ด๋ ๋๋จธ์ง ๊ฒฝ๋ก๊ฐ ์๋์ผ๋ก ์ฑ์์ ธ ์ ๊ทผ๋๋ค.
์ด๋ฅผ ๋๊น์ง ํผ์น ์๋น์ค์ ์์ ํ ๋๋ฉ์ธ ์ด๋ฆ(FQDN, Fully Qualified Domain Name)์ ์ผ๋ฐ์ ์ผ๋ก ๋ค์ ํ์์ผ๋ก ๊ตฌ์ฑ๋๋ค.
<์๋น์ค ์ด๋ฆ>.<๋ค์์คํ์ด์ค ์ด๋ฆ>.svc.cluster.local๊ฐ์ ๋ค์์คํ์ด์ค ์์์๋ ์๋ถ๋ถ๋ง์ผ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์๋น์ค ์ด๋ฆ๋ง ์จ๋ ๋๋ ๊ฒ์ด๊ณ , ๋ค์์คํ์ด์ค๋ฅผ ๋์ด์ค ๋๋ ๋ค์ชฝ ๊ฒฝ๋ก๋ฅผ ํจ๊ป ๋ช ์ํด์ผ ํ๋ ๊ฒ์ด๋ค.
๋ค์์คํ์ด์ค๋ ๋งค๋ํ์คํธ ํ์ผ์ด๋ ์ด๋ฆ์ผ๋ก ์ญ์ ํ๋ค.
kubectl delete -f <YAML>
kubectl delete namespace <name>
๋จ, ๋ค์์คํ์ด์ค๋ฅผ ์ญ์ ํ๋ฉด ๊ทธ ์์ ์กด์ฌํ๋ ๋ชจ๋ ๋ฆฌ์์ค๊ฐ ํจ๊ป ์ญ์ ๋๋ค. ํ๋, ์๋น์ค, ๋ํ๋ก์ด๋จผํธ ๋ฑ์ด ํ๊บผ๋ฒ์ ์ฌ๋ผ์ง๋ฏ๋ก, ์ญ์ ์ ์ ๋์ ๋ค์์คํ์ด์ค์ ์ด๋ค ๋ฆฌ์์ค๊ฐ ๋ค์ด ์๋์ง ๋ฐ๋์ ํ์ธํด์ผ ํ๋ค.
๋ชจ๋ ๋ฆฌ์์ค๊ฐ ๋ค์์คํ์ด์ค๋ก ๊ตฌ๋ถ๋๋ ๊ฒ์ ์๋๋ค. A๋ผ๋ ๋ค์์คํ์ด์ค์์ ํ๋๋ฅผ ๋ง๋ค๋ฉด ๊ทธ ํ๋๋ A์์๋ง ๋ณด์ธ๋ค. ์ด๋ ๊ฒ ํน์ ๋ค์์คํ์ด์ค์ ์์๋๋ ๊ฒฝ์ฐ๋ฅผ ๋๊ณ '์ค๋ธ์ ํธ๊ฐ ๋ค์์คํ์ด์ค์ ์ํ๋ค(namespaced)'๊ณ ํํํ๋ค.
๋ค์์คํ์ด์ค์ ์ํ๋ ์ค๋ธ์ ํธ์ ์ข
๋ฅ๋ ๋ค์ ๋ช
๋ น์ผ๋ก ํ์ธํ๋ค.
kubectl api-resources --namespaced=true๋ฐ๋๋ก ๋ค์์คํ์ด์ค์ ์ํ์ง ์๋ ์ค๋ธ์ ํธ๋ ์๋ค. ๋ํ์ ์ธ ์๊ฐ ๋
ธ๋(Node)๋ค. ๋
ธ๋๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๊ฐ ์ฌ์ฉํ๋ ์ ์์ค ์ค๋ธ์ ํธ๋ก, ๋ค์์คํ์ด์ค๋ก ๊ตฌ๋ถ๋์ง ์๋๋ค. ๋ฐ๋ผ์ ๋
ธ๋๋ฅผ ์กฐํํ ๋ --namespace ์ต์
์ ๋ถ์ฌ๋ ์๋ฏธ๊ฐ ์๋ค.
๋ค์์คํ์ด์ค์ ์ํ์ง ์๋ ์ค๋ธ์ ํธ์ ์ข
๋ฅ๋ ๋ค์ ๋ช
๋ น์ผ๋ก ํ์ธํ ์ ์๋ค.
kubectl api-resources --namespaced=false