Kube-API Server
: μΏ λ²λ€ν°μ€ ν΄λ¬μ€ν°μ κΈ°λ³Έ κ΄λ¦¬ κ΅¬μ± μμ
kubectl λͺ
λ Ήμ΄λ₯Ό μ€ν ν λ Kube-API Serverμ μ°κ²°
μμ²μ μΈμ¦νκ³ κ²μ¦ ν λ€ ETCD ν΄λ¬μ€ν°μμ λ°μ΄ν°λ₯Ό κ°μ Έμ μμ²ν μ 보λ₯Ό λ°ν νκ±°λ μ
λ°μ΄νΈ νλ μν μ νλ€.
μλ₯Ό λ€μ΄ Pod λ₯Ό μμ± νλ κ²½μ°, μΈμ¦μ κ±°μ³ κ²μ¦μ΄ λλ λ€μ API μλ²λ Pod κ°μ²΄λ₯Ό μμ±νμ§λ§ λ
Έλμ ν λΉ νμ§λ μλλ€. μ΄ μ 보λ ETCD μλ²μ μ
λ°μ΄νΈ λκ³ , μ¬μ©μλ Pod κ° μμ± λμμμΌλ‘ μκ² λλ€.
μ€μΌμ€λ¬λ APIμλ²λ₯Ό μ§μμ μ λͺ¨λν°λ§ νλ©΄μ λ
Έλκ° ν λΉλμ§ μμ μ Pod κ° μμμ μΈμνλ€. μ€μΌμ€λ¬λ μ Pod λ₯Ό λ°°μΉν μ μ ν λ
Έλλ₯Ό μλ³νκ³ μ΄λ₯Ό Kube-API Serverμ λ€μ μ λ¬ νλ€. κ·Έλ¬λ©΄ API μλ²λ ETCD ν΄λ¬μ€ν°μ μ 보λ₯Ό μ
λ°μ΄νΈ νλ€.
API μλ²λ κ·Έ μ 보λ₯Ό ν΄λΉ μμ
νλ €λ λ
Έλμ kubelet μ μ λ¬νλ€. kubelet μ κ·Έ λ
Έλμμ Podλ₯Ό μμ±νκ³ , 컨ν
μ΄λ λ°νμ μμ§μ μ ν리μΌμ΄μ
μ΄λ―Έμ§λ₯Ό λ°°ν¬ νλλ‘ μ§μνλ€. μ΄ν μλ£ λλ©΄ kubelet μ μνλ₯Ό API μλ²μ λ€μ μ
λ°μ΄νΈνκ³ , API μλ²λ ETCD ν΄λ¬μ€ν°μ λ€μ λ°μ΄ν°λ₯Ό μ
λ°μ΄νΈ νλ€.
kubeadmin λꡬλ₯Ό μ¬μ© ν΄ μ€μ ν κ²½μ°,
kubeadmin-apiserverλ₯Ό λ§μ€ν° λ
Έλμ kube-system λ€μ μ€νμ΄μ€μ PodμΌλ‘ λ°°ν¬
Pod μ μ νμΌμ /etc/kubernetes/manifest ν΄λμ μμΉ
kubectl get pods -n kube-system
# Pod λ₯Ό νμΈ
cat /etc/kubernetes/manifests/kube-apiserver.yaml
# Pod μ μ νμΌ κ²½λ‘λ‘ μ΄λνμ¬ νμΈ
Bash
볡μ¬
kubeadminμ μ¬μ©νμ§ μμ κ²½μ°,
cat /etc/systemd/system/kube-apiserver.service
# kube-apiserver μλΉμ€λ₯Ό νμΈνμ¬ μ΅μ
μ νμΈ
ps -aux | grep kube-apiserver
# νλ‘μΈμ€ λͺ©λ‘μ μΆλ ₯ νμ λ μ¬μ© ν μ΅μ
μ νμΈ
Bash
볡μ¬
Kube Controller Manager
Kubernetes μ μ©μ΄λ‘ 컨νΈλ‘€λ¬λ μ¬λ¬ κ΅¬μ± μμμ μνλ₯Ό μ§μμ μΌλ‘ λͺ¨λν°λ§νκ³ μμ€ν
μ 체λ₯Ό μνλ μνλ‘ μ μ§νκΈ° μν΄ μλνλ νλ‘μΈμ€
μλ₯Ό λ€μ΄, λ κ°μ§μ μμλ₯Ό λ³΄μΌ μ μμ.
λ
Έλ 컨νΈλ‘€λ¬ : λ
Έλμ μνλ₯Ό λͺ¨λν°λ§ νκ³ μ ν리μΌμ΄μ
μ΄ κ³μ μ€ν λλλ‘ νμν μ‘°μΉλ₯Ό μ·¨νλ μν μ ν¨.
볡μ 컨νΈλ‘€λ¬ : λ ν리카 μ
μ μνλ₯Ό λͺ¨λν°λ§ νκ³ νμ μνλ μμ PODκ° μΈνΈ λ΄μ μ‘΄μ¬νλμ§ νμΈνλ μν μ ν¨.
μ¬λ¬ 컨νΈλ‘€λ¬λ€μ Kubenetes Controller Manager λΌλ λ¨μΌ νλ‘μΈμ€λ‘ ν¨ν€μ§ λλ€.
Kubernetes λ¦΄λ¦¬μ€ νμ΄μ§μμ λ€μ΄λ‘λνμ¬ μμΆμ νκ³ μλΉμ€λ‘ μ€νν μ μμ.
wget https://dl.k8s.io/v1.31.1/bin/linux/amd64/kube-controller-manager
Bash
볡μ¬
kube-controller-manager.service μ λ€μν μ΅μ
μ μ μ© ν μ μλλ°, μ΄λ€ 컨νΈλ‘€λ¬λ§ νμ±ν μν¬μ§, node-monitor-period, node-monitor-grace-period, pod-eviction-timeout μ λν μ΅μ
μ μ€ μ λ μμ.
kube admin λꡬλ₯Ό μ¬μ© νμ κ²½μ°
Kube Controller Managerλ₯Ό λ§μ€ν° λ
Έλμ Kube system λ€μμ€νμ΄μ€μ PODλ‘ λ°°ν¬
kubectl get pods -n kube-system
# Pod λ₯Ό νμΈ
cd /etc/kubernetes/manifests/kube-controller-manager.yaml
# μ μ νμΌμμ μ΅μ
μ νμΈ
Bash
볡μ¬
kube admin λꡬλ₯Ό μ¬μ© νμ§ μμμ κ²½μ°
cat /etc/systemd/system/kube-controller-manager.service
# μλΉμ€ λλ ν°λ¦¬μ μλΉμ€λ₯Ό νμΈ νμ¬ μ΅μ
μ κ²μ¬
ps -aux | grep kube-controller-manager
# νλ‘μΈμ€ λͺ©λ‘μ μΆλ ₯ νμ λ μ¬μ© ν μ΅μ
μ νμΈ
Bash
볡μ¬
Kube Scheduler
Kubernetes μ€μΌμ€λ¬λ Podλ₯Ό λ
Έλμ μ€μΌμ€λ§νλ μν μ λ΄λΉ
μ€μΌμ€λ¬λ λ¨μ§ μ΄λ€ Podκ° μ΄λ λ
Έλμ λ°°μΉλ μ§ κ²°μ λ§ ν¨.
μ€μ λ‘ Pod μ λ
Έλλ₯Ό λ°°μΉ νλ μΌμ kubelet μ΄ ν¨.
κ·ΈλΌ μ€μΌμ€λ¬λ μ΄λ»κ² Pod κ° λ
Έλμ λ°°μΉ λ μ§ κ²°μ μ ν κΉ?
1.
쑰건μ λ§μ§ μμ λ
Έλλ€μ νν°λ§
2.
μ€μΌμ€λ¬λ λ
Έλλ€μ μμλ³λ‘ νκ°νμ¬ Podμ κ°μ₯ μ ν©ν λ
Έλλ₯Ό μλ³
μ€μΌμ€λ¬λ 0μμ 10κΉμ§μ μ μλ₯Ό λ§€κΈ°λ μ°μ μμ ν¨μλ₯Ό μ¬μ©
kube-scheduler λ°μ΄λ리λ₯Ό kubernetes λ¦΄λ¦¬μ€ νμ΄μ§μμ λ€μ΄λ‘λ νκ³ μμΆμ νμ΄ μλΉμ€λ‘ μ€ν
wget https://dl.k8s.io/v1.31.1/bin/linux/amd64/kube-controller-manager
Bash
볡μ¬
μ΄λ, μλΉμ€λ‘ μ€ν ν λ, μ€μΌμ€λ¬ κ΅¬μ± νμΌμ μ§μ ν΄μΌ νλ€.
μ΅μ νμΈ λ°©λ²
cat /etc/kubernetes/manifests/kube-scheduler.yaml
ps -aux | grep kube-controller-manager
Bash
볡μ¬
Kubelet
Pod μ κ·Έ μμ 컨ν
μ΄λ μνλ₯Ό λͺ¨λν°λ§ νλ©°, κ·Έ μνλ₯Ό kube API μλ²μ μ κΈ°μ μΌλ‘ 보κ³
λ
Έλμ 컨ν
μ΄λλ Pod λ₯Ό μ μ¬νλΌλ μ§μλ₯Ό λ°μμ λ, 컨ν
μ΄λ λ°νμ μμ§(Docker)μκ² νμν μ΄λ―Έμ§λ₯Ό κ°μ Έμ μΈμ€ν΄μ€λ₯Ό μ€ν νλλ‘ μμ²
kubelet μ κ³μ ν΄μ Pod μ κ·Έ μμ 컨ν
μ΄λ μνλ₯Ό λͺ¨λν°λ§ νλ©°, κ·Έ μνλ₯Ό kube API μλ²μ μ κΈ°μ μΌλ‘ 보κ³
kubeadm - kubelet μ μλμΌλ‘ λ°°ν¬ νμ§ μμ - μλμΌλ‘ μ€μΉ νμ
wget https://dl.k8s.io/v1.31.1/bin/linux/amd64/kubelet
Bash
볡μ¬
μ€μΉ νλ‘κ·Έλ¨μ λ€μ΄λ‘λ νκ³ μμΆμ νμ΄ μλΉμ€λ‘ μ€ν
μ΅μ νμΈ
ps -aux | grep kubelet
Bash
볡μ¬
μ€ν μ€μΈ νλ‘μΈμ€λ₯Ό νμΈ
Kube-Proxy
kube-proxyλ Kubernetes ν΄λ¬μ€ν°μ κ° λ
Έλμμ μ€νλλ νλ‘μΈμ€
νλ‘μΈμ€μ μν μ μλ‘μ΄ μλΉμ€λ₯Ό μ°Ύκ³ , μλ‘μ΄ μλΉμ€κ° μμ±λ λλ§λ€ κ° λ
Έλμ μ μ ν κ·μΉμ λ§λ€μ΄μ ν΄λΉ μλΉμ€λ‘ ν₯νλ νΈλν½μ λ°±μλ Podλ‘ μ λ¬νλ κ²
μ΄ μμ
μ μννλ ν κ°μ§ λ°©λ²μ iptables κ·μΉμ μ¬μ©
μ΄ κ²½μ°, ν΄λ¬μ€ν°μ κ° λ
Έλμ iptables κ·μΉμ μμ±νμ¬ μλΉμ€μ IP(μ: 10.96.0.12)λ‘ ν₯νλ νΈλν½μ μ€μ Podμ IP(μ: 10.32.0.15)λ‘ μ λ¬
λ°μ΄λ리 νμΌ
wget https://dl.k8s.io/v1.31.1/bin/linux/amd64/kube-proxy
kubectl get deamonset -n kube-system
Bash
볡μ¬
λ€μ΄λ‘λ ν μλΉμ€λ‘ μ€ν
Kubernetes κ°μ²΄
- pods, replicas, deployments, services
κ°μ²΄λ₯Ό μμ± νκΈ° μν΄μλ yaml νμΌμ μ¬μ©νλ€
Kubernetes μ μ νμΌμλ νμ λ€ κ°μ§ μ΅μμ νλκ° ν¬ν¨
β’
API λ²μ , kind, metadata, spec
μ΄λ€μ μ΅ μμ λλ λ£¨νΈ μμ€μ νλλ‘, λ°λμ κ΅¬μ± νμΌμ ν¬ν¨
API λ²μ
β’
μμ±νλ €λ κ°μ²΄μ λ°λΌ μ¬λ°λ₯Έ API λ²μ
β¦
POD : v1
β¦
Service : v1
β¦
ReplicaSet : apps/v1
β¦
Deployment : apps/v1
kind
β’
μμ±νλ €λ κ°μ²΄μ μ’
λ₯
metadata
β’
κ°μ²΄μ μ΄λ¦, λΌλ²¨ λ±μ λ°μ΄ν° (λμ
λ리 ννλ‘ μ 곡)
β¦
name : μ΄λ¦
β¦
labels : ν€-μ μ ννλ‘ μΆκ°
spec
β’
κ°μ²΄μ λν μΆκ° μ 보λ₯Ό Kubernetesμ μ 곡 (λμ
λ리 ννλ‘ μ 곡)
β¦
containers
βͺ
리μ€νΈ λλ λ°°μ΄
βͺ
μ¬λ¬ 컨ν
μ΄λλ₯Ό κ°μ§ μ μκΈ° λλ¬Έμ 리μ€νΈ νμ
# pod-definition.yml
apiVersion : v1
kind : Pod
metadata:
- name :
- labels :
app : myapp
type : frond-end
spec:
containers:
- name : nginx-container
image: nginx
YAML
볡μ¬
kubectl create -f pod-definition.yaml
# Pod μμ±
kubectl get pods
# Pod λͺ©λ‘
kubectl describe pod
# Pod μμΈν μ¬ν
Bash
볡μ¬
replicas
λμΌν Podλ₯Ό μ¬λ¬ κ° μ€νν΄ λμ΄ ν κ°κ° μ€ν¨ν΄λ λ€λ₯Έ Podμμ μ ν리μΌμ΄μ
μ κ³μ μ€νν μ μλλ‘ νλ€.
λ¨μΌ Podμ μ¬λ¬ μΈμ€ν΄μ€λ₯Ό μ€ννμ¬ κ³ κ°μ©μ±μ μ 곡
λ¨μΌ Pod μ¬λ Replication Controller λ κΈ°μ‘΄ Pod κ° μ€ν¨ νμ λ μλμΌλ‘ Pod λ₯Ό μμ± νμ¬ μ§μ λ κ°μμ Pod κ° νμ μ€ν λλλ‘ λ³΄μ₯
API λ²μ μ κ²½μ° μμ± νλ €λ νλͺ©μ λ°λΌ λ€λ¦.
Replication Controller λ Kubernetes API λ²μ V1μ μ§μ, Kindλ Replication Controller λ‘ μ€μ
Metadata λ pod μ λμΌ, Spec μΉμ
μ κ²½μ° μ€μνλ°, μ΄λ μμ±νλ €λ κ°μ²΄μ λ΄λΆλ₯Ό μ μν¨
Spec μλμ template μΉμ
μ μμ±νμ¬ Replication Controller κ° λ³΅μ μ μ¬μ© ν Pod ν
νλ¦Ώμ μ 곡
Specμ replicas μμ±μ μΆκ° νκ³ , μνλ κ°μλ₯Ό μ
λ ₯.
Replication Controller VS Replica Set
λͺ©μ μ κ°μ§λ§ μμ ν λμΌ ν κ² μ μλ
Replication Controller λ μ΄μ κΈ°μ λ‘, νμ¬λ Replica Set μ΄ κΆμ₯ λλ€.
replicaset μ API λ²μ μ apps/v1
selector μ λν μ μμ λ°λΌ μ°¨μ΄κ° μμ.
selector μΉμ
μ Replica Setμ΄ κ΄λ¦¬ν Pod λ₯Ό μλ³νλλ° λμμ μ€.
Replica Set μ μμ± μμ μ selector μ μ§μ λ λΌλ²¨κ³Ό μΌμΉνλ κΈ°μ‘΄ Pod λ κ΄λ¦¬ ν μ μμ.
λ°λΌμ, Replica Set μ selector λ match labels νν°λ₯Ό μ¬μ©νμ¬ Pod λΌλ²¨κ³Ό μΌμΉ μν¨λ€
kubectl scale β-replicas=<μλ‘μ΄ μ><νμΌλͺ
>
kubectl scale rs <replicaset> βreplicas=<μλ‘μ΄μ>
kubectl scale λͺ
λ Ήμ΄λ₯Ό μ¬μ© νλ©΄ νμΌ λ΄μ replicas μλ μ
λ°μ΄νΈ λμ§ μμ
kubectl create -f <νμΌλͺ
> μ μ μ νμΌμ μ¬μ©νμ¬ Replica Set μ΄λ κΈ°ν κ°μ²΄λ₯Ό μμ±νλλ° μ¬μ©.
Deployment
μμ°¨μ μ
λ°μ΄νΈ, λ³κ²½ μ·¨μ(λ‘€λ°±), μΌμμ μ§ λ° μ¬κ°μ κ°μ κΈ°λ₯μ μ 곡
Deployment μ μ νμΌμ λ΄μ©μ ReplicaSet μ μ νμΌκ³Ό κ±°μ λμΌνλ©°, kindκ° Deploymentλ‘ μ€μ λλ μ λ§ λ€λ¦.
νμΌ λ΄μ©μλ API λ²μ (apps/v1), λ©νλ°μ΄ν°(nameκ³Ό labels), κ·Έλ¦¬κ³ spec(template, replicas, selector)μ΄ ν¬ν¨λ¨.
templateμλ Pod μ λν λ΄μ©μ΄ μ μ λ¨
Deployment μ μ νμΌμ μ€ν kubectl create -f <νμΌλͺ
>
μμ±λ Deploymentλ₯Ό νμΈkubectl get deployment
Deploymentλ μλμΌλ‘ ReplicaSetμ μμ±ν¨.
kubectl get replicaset λͺ
λ Ήμ΄λ₯Ό μ€ννλ©΄ Deployment μ΄λ¦μ λ΄ μ ReplicaSetμ νμΈν μ μμ.
ReplicaSetμ κ²°κ΅ Podλ₯Ό μμ±νλ―λ‘, kubectl get pods λͺ
λ Ήμ΄λ₯Ό μ€ννλ©΄ Deployment λ° ReplicaSet μ΄λ¦μ κ°μ§ Podλ€μ νμΈν μ μμ.
μ§κΈκΉμ§λ ReplicaSetκ³Ό Deploymentμ μ°¨μ΄μ μ΄ ν¬μ§ μμ§λ§, Deploymentκ° μλ‘μ΄ Kubernetes κ°μ²΄λ₯Ό μμ±νλ€λ μ μμ μ°¨μ΄κ° μμ.
λ§μ§λ§μΌλ‘, μμ±λ λͺ¨λ κ°μ²΄λ₯Ό ν λ²μ λ³΄λ €λ©΄ kubectl get all λͺ
λ Ήμ΄λ₯Ό μ€ν νλ©΄ λ¨, Deploymentκ° μμ±λμκ³ , μ΄μ΄μ ReplicaSetκ³Ό Deploymentμ μΌλΆλ‘ μμ±λ μΈ κ°μ Podκ° νμ λ¨.
Service
μ¬λ¬ Pod κ·Έλ£Ή κ°μ μ°κ²°μ κ°λ₯νκ² νκ³ λ§μ΄ν¬λ‘ μλΉμ€ κ°μ λμ¨ν κ²°ν©μ κ°λ₯νκ² ν¨
NodePort μλΉμ€λ₯Ό ν΅ν΄ λ
Έλμ ν¬νΈλ₯Ό μμ νμ¬ Pod λ‘ μμ²μ μ λ¬ν¨
μ΄μΈμλ λ
Έλμ ν¬νΈλ₯Ό ν΅ν΄ λ΄λΆ ν¬νΈλ₯Ό μ κ·Ό κ°λ₯νκ² ν¨
λ
Έλμ ν¬νΈλ₯Ό Pod μ ν¬νΈμ λ§€ν νμ¬ μΈλΆμμ μ κ·Ό ν μ μλλ‘ ν¨.
1.
μλ₯Ό λ€μ΄, μΉ μλ²κ° μ€νλ ν¬νΈκ° 80μ΄λΌκ³ κ°μ ν λ μ΄κ±Έ targetPort λΌκ³ λΆλ¦. μλΉμ€κ° μμ²μ μ λ¬νλ λμ ν¬νΈ.
2.
μλΉμ€ μ체μ ν¬νΈλ‘, port λΌκ³ λ ν¨. μ΄λ μλΉμ€λ ν΄λ¬μ€ν° λ΄μμ μ체 IP μ£Όμ ( ClusterIp) λ₯Ό κ°μ§λ©° μ΄λ₯Ό ν΅ν΄ ν΄λ¬μ€ν° λ΄μμ κ°μμλ² μ²λΌ μλ.
3.
μΉ μλ²μ μ κ·Ό ν λ μ¬μ©νλ ν¬νΈλ‘ nodePort λΌκ³ λ ν¨. μ£Όλ‘ 30000 ~ 32767 μ¬μ΄ λ²μ λ΄μμ ν λΉ
Cluster IP μλΉμ€λ₯Ό μ΄μ©ν΄ ν΄λ¬μ€ν° λ΄μμ κ°μ IP λ₯Ό μμ±ν΄ μλ² κ°μ ν΅μ μ κ°λ₯νκ² ν¨
LoadBalancer λ μ§μλλ ν΄λΌμ°λ μ 곡 μ
체μμ μ ν리μΌμ΄μ
μ© λ‘λλ°Έλ°μλ₯Ό μ€μ
μλΉμ€λ₯Ό μμ± νλ €λ©΄ API λ²μ μ v1, kind λ Service, metadata μμλ μ΄λ¦μ μ§μ ν¨.
spec μΉμ
μμλ μ€μ ꡬμ±μ μ μν¨, type μλ μμ± ν μλΉμ€ μ νμ μ§μ ν¨. ports μλ targetPort, port, nodePort μ 보λ₯Ό μ
λ ₯, λ°°μ΄ κ°μ΄ λ€μ΄κ° μ μκ³ λμλ‘ νμ ν¨.
ReplicaSet μμ νλ κ² μ²λΌ labels μ selectorsλ₯Ό μ¬μ©νμ¬ μ°κ²°, Pod μ labelμ μλΉμ€ μ μ νμΌμ selector μΉμ
μ μΆκ° νλ©΄ Pod μ μ°κ²° λ¨
kubectl create -f <μ μνμΌ> λ‘ μ€ν νλ©΄ λλ€.
νμΈ νκΈ° μν΄μλ kubectl get servicesλ₯Ό μ€ν νμ.
μλΉμ€λ μκ³ λ¦¬μ¦μ ν΅ν΄ μ¬λ¬ Pod κ°μ λΆνλ₯Ό λΆμ° μν¨λ€
μΈμ€ν΄μ€λ₯Ό μ¬λ¬ κ° μ€ν νλ κ²½μ°κ° μκΈ° λλ¬Έμ, μ¬λ¬ Pod κ° λμΌν μ ν리μΌμ΄μ
μ μ€ν νλ©°, λμΌν label μ 곡μ νλ€. μλΉμ€ μμ± μ label μ selector λ‘ μ΄μ©νλ©΄, μλΉμ€λ ν΄λΉ λΌλ²¨κ³Ό μΌμΉνλ λͺ¨λ Pod λ₯Ό μ°Ύμ μμ²μ μ λ¬ν μλν¬μΈνΈλ‘ μλ μ ν νλ€.
λ°λΌμ , μλΉμ€λ λλ€ μκ³ λ¦¬μ¦μ μ¬μ©ν΄ μ¬λ¬ Pod κ°μ λΆνλ₯Ό λΆμ° μν¨λ€
λ§μ§λ§μΌλ‘ Pod κ° μ¬λ¬ λ
Έλμ λΆμ° λμ΄ μμ λλ, μλΉμ€λ ν΄λ¬μ€ν°μ λͺ¨λ λ
Έλμ κ±Έμ³ μλμΌλ‘ μμ± λκ³ , λͺ¨λ λ
Έλμμ λμΌν NodePort λ‘ λ§€νλ¨.
μ΄λ κ² λ κ²½μ°μ ν΄λ¬μ€ν° λ΄ μ΄λ λ
Έλμ IP λ₯Ό μ¬μ© νλκ°μ λμΌν ν¬νΈλ‘ μ΄ν리μΌμ΄μ
μ μ κ·Ό ν μ μμ.
μ 리νλ©΄, λ¨μ΄ Pod κ° μλ λ¨μΌ λ
Έλ, λ¨μΌ λ
Έλμ λμ€ Pod, λλ λ€μ€ λ
Έλμ λ€μ€ Pod λͺ¨λμμ μλΉμ€ μμ± λ°©μμ λμΌ.
Pod κ° μ κ±° λκ±°λ μΆκ° λ λ μλΉμ€λ μλμΌλ‘ μ
λ°μ΄νΈ λ¨. μλΉμ€κ° μμ± λ μ΄νμλ μΌλ°μ μΌλ‘ μΆκ° ꡬμ±μ΄ νμνμ§ μμ μν!
Service ClusterIP
μλΉμ€λ Pod λ€μ κ·Έλ£ΉμΌλ‘ λ¬Άκ³ ν΄λΉ κ·Έλ£Ήμ Pod μ μ κ·Ό ν μ μλ λ¨μΌ μΈν°νμ΄μ€λ₯Ό μ 곡ν¨.
λ°±μλ Pod λ€μ μν΄ μμ± λ μλΉμ€λ λͺ¨λ λ°±μλ Podλ₯Ό νλμ κ·Έλ£ΉμΌλ‘ λ¬Άκ³ , λ€λ₯Έ Pod κ° μ΄ μλΉμ€λ₯Ό μ κ·Ό ν μ μλ λ¨μΌ μΈν°νμ΄μ€λ₯Ό μ 곡.
μμ²μ μλΉμ€ νμμ Pod λ€ μ€ νλλ‘ λλ€ νκ² μ λ¬.
κ° μλΉμ€λ ν΄λ¬μ€ν° λ΄μμ κ³ μ μ IPμ£Όμμ μ΄λ¦μ ν λΉ λ°κ³ , κ° Pod λ μ΄ μ΄λ¦μ μ¬μ©νμ¬ ν΄λΉ μλΉμ€μ μ κ·Ό.
μ΄λ₯Ό ClusterIPλΌκ³ ν¨
μ΄λ¬ν μλΉμ€λ₯Ό μμ± νλ €λ©΄ API λ²μ μ v1, kindλ Service, spec μλ type κ³Ό ports λ₯Ό μ€μ .
type μ ClusterIP, ports μμλ targetPortsμ port μ μ§μ . targetPort λ λ°±μλκ° λ
ΈμΆ λλ ν¬νΈ, port λ μλΉμ€κ° λ
ΈμΆ λλ ν¬νΈ
μλΉμ€λ₯Ό νΉμ Pod μ§ν©μ μ°κ²° νκΈ° μν΄ Selector λ₯Ό μ¬μ©ν¨.
Pod μ μ νμΌμμ λΌλ²¨μ λ³΅μ¬ νμ¬ selector μΉμ
μλμ μΆκ°.
kubectl create -f <μ μνμΌ> λ‘ μ€ν νλ©΄ λλ€.
νμΈ νκΈ° μν΄μλ kubectl get servicesλ₯Ό μ€ν νμ.
Service LoadBalancer
NameSpace
κΈ°λ³Έ λ€μμ€νμ΄μ€κ° default μ΄λ μ²μ ν΄λ¬μ€ν°κ° μμ± λ λ μλμΌλ‘ μμ± ν¨.
kube-system : λ΄λΆμ μΌλ‘ νμν λ€νΈμν¬ μ루μ
μ΄λ DNS μλΉμ€μ κ°μ Pod μ Serviceλ₯Ό μν΄ λ§λ€μ΄μ§ λ€μμ€νμ΄μ€
μ¬μ©μκ° μ€μλ‘ μ΄ μλΉμ€λ₯Ό μμ νκ±°λ μμ νλ κ²μ λ°©μ§
kube-public : λͺ¨λ μ¬μ©μμκ² κ³΅κ° λμ΄μΌ νλ 리μμ€λ₯Ό λ§λ€κΈ° μν΄ μ‘΄μ¬
λμΌν ν΄λ¬μ€ν°λ₯Ό dev μ production μμ μ¬μ©νλ©° 리μμ€λ₯Ό λΆλ¦¬ νκ³ μΆμ λ νκ²½μ λ§κ² λ€μμ€νμ΄μ€λ₯Ό μ€κ³ νλ©΄ λ¨.
κ³ μ μ μ μ±
μΈνΈλ₯Ό μ€μ ν μ μμ. κ° λ€μμ€νμ΄μ€μ ν λΉ ν 리μμ€μ ν λΉλ μ μ§μ ν μ μμ.
λ€μμ€νμ΄μ€μ νΉμ μμ 리μμ€λ₯Ό 보μ₯νκ³ , νμ©λ νλ μ΄μμ μ¬μ© ν μ μλλ‘ ν μ μμ.
λ€λ₯Έ λ€μμ€νμ΄μ€μ μ κ·Ό νλ €λ©΄ <μλΉμ€μ΄λ¦>.<λ€μμ€νμ΄μ€>.svn.cluster.local νμμΌλ‘ μ£Όμλ₯Ό μ€μ νλ©΄ λ¨
μλμΌλ‘ μ΄λ¬ν νμμΌλ‘ DNS νλͺ©μ΄ μΆκ°λ¨.
μλΉμ€μ DNS μ΄λ¦μ μμΈν μ΄ν΄λ³΄λ©΄ cluster.local μ kubernetes ν΄λ¬μ€ν°μ κΈ°λ³Έ λλ©μΈ μ΄λ¦ μ΄λ©°, svcλ μλΉμ€μ μλΈ λλ©μΈμ.
κΈ°λ³Έμ μΌλ‘ κΈ°λ³Έ λ€μμ€νμ΄μ€μ μμ± λλ©°, λ€λ₯Έ λ€μμ€νμ΄μ€μ μ§μ νμ¬ μμ± νλ €λ©΄ --namespace μ΅μ
μ μ¬μ© νλ©΄ λ¨
kubectl create namespace <λ€μμ€νμ΄μ€ μ΄λ¦> λͺ
λ Ήμ΄λ₯Ό μ€ν.
λ€λ₯Έ λ€μμ€νμ΄μ€λ‘ μ΄λ νκ³ μΆμ λλ kubectl config set-context --current --namespace=dev λͺ
λ Ήμ΄λ₯Ό μ¬μ©ν΄ dev λ€μμ€νμ΄μ€λ‘ μ ν ν μ μμ.
λͺ¨λ λ€μμ€νμ΄μ€μ Pod λ₯Ό νμΈ ν λλ --all-namespaces μ΅μ
μ μ¬μ©νμ¬ λͺ¨λ λ€μμ€νμ΄μ€μ Pod λͺ©λ‘μ λ³Ό μ μμ.
리μμ€λ₯Ό μ ν νκ³ μΆμΌλ©΄ 리μμ€ ν λΉλ(resource quota) μ μμ±.
리μμ€ ν λΉλ μ μ νμΌμμ μ νν λ€μμ€νμ΄μ€λ₯Ό μ§μ νκ³ , Pod 10 κ°, CPU 10κ°, λ©λͺ¨λ¦¬ 10GBμ κ°μ΄ μ ν μ¬νμ μ€μ .
Schedule