λ컀λ λ컀 μ€μ λͺ¨λμλ 컨ν
μ΄λλ₯Ό λ
Όλ¦¬μ μΌλ‘ λλ κ΄λ¦¬νλ κ°λ
μ΄ μλ€. 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