โ ์ฟ ๋ฒ๋คํฐ์ค ์ด๋๋ ํด๋์ค (์ง์ํธ) - Spring 1, 2 ์ ๋ฃ๊ณ ์์ฑํ๋ ๋ณต์ต ๋ธ๋ก๊ทธ ์ ๋๋ค.
1. ์ ์ฒด ๊ฐ์
1-1. ์ฟ ๋ฒ๋คํฐ์ค ๊ตฌ์ถ ๊ฐ์
- VM์ ๋ง์คํฐ ๋
ธ๋ ์์ฑ
- ๋ง์คํฐ ๋ ธ๋๋ ํด๋ฌ์คํฐ ์ ์ฒด๋ฅผ ์ ์ดํ๋ ์ค์ฌ ๋ ธ๋
- ๋ค์ ๊ตฌ์ฑ์์ ์ค์น
- kubectl : CLI ๋๊ตฌ, API ํธ์ถ์ฉ
- kubeadm : ํด๋ฌ์คํฐ ์ค์น ๋ฐ ์ด๊ธฐํ ๋๊ตฌ
- kubelet : ๊ฐ ๋ ธ๋์์ Pod๋ฅผ ์คํ/๊ด๋ฆฌ
- container runtime : ์ค์ ์ปจํ ์ด๋ ์์ฑ๊ธฐ (ex: contianerd)
- ํด๋ฌ์คํฐ ์ด๊ธฐํ
- kubeadm init ๋ช ๋ น์ ํตํด ํด๋ฌ์คํฐ ์์ฑ
- ๋ด๋ถ์ ์ผ๋ก ์ฌ๋ฌ ์ปดํฌ๋ํธ ์์ฑํ๋ Pod ์ ์ YAML ์ ์คํํ์ฌ Control Plane ๊ตฌ์ฑ
1-2. ์์ปค ๋ ธ๋ ๊ตฌ์ฑ
- ๋ค๋ฅธ VM์ ์์ปค ๋ ธ๋๋ก ๊ตฌ์ฑ ๊ฐ๋ฅ
- ๋ง์คํฐ ๋ ธ๋์ ์ค์นํ๋ ๊ตฌ์ฑ์์์ ๋์ผํ ํด๋ค ์ค์น
- kubeadm join ๋ช ๋ น์ด๋ก ๋ง์คํฐ ๋ ธ๋ ์ฐ๊ฒฐ
- ์์ปค ๋ ธ๋๋ ํด๋ฌ์คํฐ์ ์กฐ์ธ๋๋ฉด, ์์ ๋ง์ ์ปดํฌ๋ํธ ์์ญ์ด ์์ฑ
- ์ฌ์ฉ์๊ฐ ๋ง๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ์์ปค ๋ ธ๋์ ๋ฐฐํฌ
- ๋ฆฌ์์ค๊ฐ ๋ถ์กฑํ๋ฉด ์์ปค ๋ ธ๋๋ฅผ ์ํ์ผ๋ก ์ถ๊ฐํ๋ค
1-3. Addon Pod
์ฟ ๋ฒ๋คํฐ์ค ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ํ์ฅ์ํค๊ธฐ ์ํ ํ์ ๊ตฌ์ฑ ์์
- metrics-server
- coredns
- calico
- kubernates-dashbnoard
1-4. ์ธ์ฆ ๋ฐ ํต์ ํ๋ฆ
- /root/.kube/config ํ์ผ์ ์ธ์ฆ ์ ๋ณด ์ ์ฅ๋จ
- kubectl → kube-apiserver๋ก ์์ฒญ ์ ์ก
- kube-apiserver → etcd์ ๋ฆฌ์์ค(๊ฐ์ฒด) ๋ฐ์ดํฐ ์ ์ฅ
- etcd๋ Kubernetes์ ๋จ์ผ ์ ์ฅ์ (Key-Value DB) ์ญํ
- Controller (ํ Controller ๋ Object ๋ฅผ ์ ์ด) : HPA, Deployment, ReplicaSet
- Object (ํ๋์ ์ธํ๋ผ ๊ฐ๋ ์ผ๋ก ๋จ๋ ๊ธฐ๋ฅ) : Service, Pod, Configmap, Secret, PVC
- Controller ์ Object ๋ฅผ ํฉ์ณ์ Resource ๋ก ๋ถ๋ฅธ๋ค
- ์ ๋ฆฌ์์ค๋ค์ Control Plane Component ๋ผ๋ Pod ์ ์ํด์ ๋์
- ์ค์ ์ปจํ
์ด๋๋ container d ๊ฐ ์์ฑ
- ์ฟ ๋ฒ๋คํฐ์ค๋ ์ปจํ ์ด๋ ์์ฑ ์์ฒญ๋ง
2. ๊ฐ ๋ฆฌ์์ค๋ณ ๋์ (Probe, Service, Secret, HPA)
2-1. Pod ์์ฑ ๋ฐ probe
- Deployment ์์ฑ
- ๋์๋ณด๋๋ kubectl ๋ก ๋ง๋ค ์ ์๋ค
- ๋๊ฐ์ด kube-apiserver ๊ฐ API ๋ฅผ ๋ฐ๋๋ค
- etcd ๋ฅผ ํตํด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
- Deployment ๊ฐ ์กฐํ๋๊ฑฐ๋ ๋์๋ณด๋์ ๋ํ๋๋ค
- kube-controller-manger๋ ๊ณ์ Database ๋ชจ๋ํฐ๋ง
- Deployment ๊ฐ ์กฐํ๋๋ฉด, ReplicaSet์ ์์ฑํ๋ผ๋ API
- ์์ฑ๋ ReplicaSet์ ๋ณด๊ณ Pod ๋ฅผ ์์ฑํ๋ผ๋ API ๋ฅผ ํธ์ถ
- Pod ๋ผ๋ ๋ฐ์ดํฐ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ง๋ค์ด์ง
- ์์ง ๋ฐ์ดํฐ๋ง ์๋๊ฑฐ์ง ์ค์ ์ปจํ ์ด๋๊ฐ ๋ง๋ค์ด์ง ๊ฒ์ ์๋
- kube-scheduler ๋ kube-apiserver๋ฅผ ํตํด ๋ ธ๋ ์์์ ๋ชจ๋ํฐ๋ง
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ Pod ๊ฐ ์๋๊ฒ ํ์ธ → Pod ๋ฅผ ๋์ธ ๋
ธ๋๋ฅผ ์ค์ผ์ค๋ง
- Pod ์์ ์ฌ์ฉ์๊ฐ ์ค์ ํด๋์ ๋ด์ฉ ์ฐธ๊ณ
- kubelet ์ด kube-apiserver๋ฅผ ํตํด ์์ ์ ๋
ธ๋ ์ ๋ณด๊ฐ ์๋ Pod๋ฅผ ๋ชจ๋ํฐ๋ง
- ๋ณ๊ฒฝ์ฌํญ์ด ์์ผ๋ฉด contianer runtime ์ ์ปจํ ์ด๋ ์์ฑ ์์ฒญ
- kubelet ์ด probe ์ค์ ์ ๋ง๊ฒ ์ปจํ ์ด๋๋ก ํฌ์ค์ฒดํฌ API ๋ฅผ ์ฃผ๊ธฐ์ ์์ฒญ
2-2. Service ๋์
- nodePort ํ์ ์ผ๋ก ์๋น์ค๋ฅผ ์์ฑํ Pod ์ ์ฐ๊ฒฐ
- kubelet ์ด kube-proxy ํํ ๋คํธ์ํฌ๋ฅผ ์์ฑํด๋ฌ๋ผ๊ณ ์์ฒญ
- kube-proxy ๋ iptables ์ ๋ด์ฉ ์ถ๊ฐ
- ๋ฆฌ๋ ์ค๋ก ๋ค์ด์ค๋ ๋ชจ๋ ํจํท ๊ด๋ฆฌ
- ์ฌ์ฉ์๊ฐ API ๋ฅผ ํธ์ถํ๋ฉด ์ปจํ ์ด๋๋ก ํธ๋ํฝ ์ ๋ฌ
- calico ๊ฐ ํธ๋ํฝ ์ ๋ฌ
2-3. Secret ๋์
- ์ปจํ
์ด๋ ๋ด๋ถ ํ์ผ๋ค์ ๋
ธ๋์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ง์ดํ
- ์ ๋ฉ๋ชจ๋ฆฌ๋ ์ ์ OFF ์ ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋๋ ์์ญ
- ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋์คํฌ๋ฅผ ๋ณ๊ฒฝํด์ผ ๋๋ ์ผ์ด ์๊ฒผ์ ๋ ๋ณต๊ตฌ๋ฅผํ๋๋ผ๋ ์ผ๋ฐ ๋ฐ์ดํฐ์ฒ๋ผ ๋ณต๊ตฌ X
- ๋๊ฐ ๋ด ๋์คํฌ๋ฅผ ํ์ทจํด๊ฐ๋๋ผ๋ ๋ณด์์ ์์
- Secret ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ๋ง์ด ๋ง๋ค๋ฉด ๋ ธ๋์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑ
- ๋ด์ฉ ์์ ์ ๋ฐ๋ก ๋ณ๊ฒฝ๋์ง ์๊ณ , kubelet ์ด ์ฃผ๊ธฐ์ ์ผ๋ก ์ฒดํฌ๋ฅผ ํ๊ณ ์๋ค๊ฐ ๋ณ๊ฒฝ์ฌํญ์ด ์๊ธฐ๋ฉด ์
๋ฐ์ดํธ
- ์กฐ๊ธ์ ๋๋ ์ด๊ฐ ์๋ค
2-4. HPA ๋์
- ํ์ฌ ์ปจํ ์ด๋์ ๋ํ ์์ ์ฌ์ฉ๋์ containerd ๊ฐ ์๊ณ ์๋ค
- kubelet ์ด CPU ์ Memory ๋ฅผ 10์ด์ ํ ๋ฒ์ฉ ์กฐํ
- metrics-server ๋ฅผ ์ค์นํด์ผ ์ฃผ๊ธฐ์ ์ผ๋ก ์ฌ์ฉ๋ ์์ง (60์ด)
- kube-controller-manager ๊ฐ HPA ์ ์๊ณ๊ฐ ๋ฐ ๋งคํธ๋ฆญ ํ์ธ (15์ด)
- ํ์ธ์ ๋ฐ๋ผ ์ค์ผ์ผ๋ง ๋ฐ์ (๋ฐ์์๊ฐ : 1~85์ด)
3. ์ฃผ์ ์ปดํฌ๋ํธ ๋ก๊ทธ ํ์ธ
3-1. ์ฃผ์ ์ปดํฌ๋ํธ ๊ตฌ์ฑ
โก๏ธ Resource ํ์ธ
kubectl api-resources
- ๋ฆฌ์์ค ์ด๋ฆ (NAME), ์ฝ์ด (SHORTNAMES), ๋ฒ์ ์ ๋ณด (APIVERSION)
- ๋ค์์คํ์ด์ค (NAMESPACE)
- false ⇒ cluster level ์ ๋ฆฌ์์ค
โก๏ธ Cluster ์ฃผ์ ์ปดํฌ๋ํธ ๋ก๊ทธ ํ์ธ
// ์ฃผ์ ์ปดํฌ๋ํธ ๋ก๊ทธ ๋ณด๊ธฐ (kube-system)
kubectl get pods -n kube-system
kubectl logs -n kube-system etcd-k8s-master
kubectl logs -n kube-system kube-scheduler-k8s-master
kubectl logs -n kube-system kube-apiserver-k8s-master
์ค์น๊ฐ ์ ๋ ๊ฒฝ์ฐ์๋ ํ์ธํด๋ณผ ๊ฒฝ์ฐ๊ฐ ์๋ค.
โก๏ธ Master Node ํ์ผ ์์น
// ์ฟ ๋ฒ๋คํฐ์ค ์ธ์ฆ์ ์์น
cd /etc/kubernetes
ls /root/.kube/config
⇒ /root/.kube/config
- admin.conf ํ์ผ์ด kube-apiserver ์ ์ ์ํ ์ ์๋ ์ธ์ฆ์
- ์ด ์ธ์ฆ์ ๋ด์ฉ์ /root/.kube/config ์์น์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ค์นํ ๋ ๋ณต์ฌ๋ฅผ ํด๋์
- kubectl ์ด ์ด๊ฑธ ์ฐธ์กฐํด์ API ๋ฅผ ํธ์ถ
// Control Plane Component Pod ์์ฑ yaml ํ์ผ ์์น
ls /etc/kubernetes/manifests
⇒ etcd.yaml kube-apiserver.yaml kube-controller-manager.yaml kube-scheduler.yaml
- Controler Plane Component ์ ๋์ธ yaml ํ์ผ๋ค
// ์ ์ฒด Pod ๋ก๊ทธ
/var/log/pods/<namespace_<pod-name>_<uid>/<number>.log
/var/log/containers/<pod-name>_<namespace>_<container-name>_<container-id>.log
cd /var/log/pods/
ls
- /var/log/pods/ ์ ๋ง์คํฐ ๋ ธ๋ ์์ ์ฌ๋ผ๊ฐ๋ ๋ชจ๋ Pod ๋ค์ ๋ก๊ทธ๊ฐ ์ ์ฅ
- /var/log/containers/ ๋ ์ปจํ ์ด๋ ๋ณ๋ก๋ ํ์ผ์ด ๋ง๋ค์ด์ง๋ค
cd /var/log/pods/
ls -al
- Pod ํด๋์ ์๋ ๋ฐ์ดํฐ์ ๋งํฌ๋ก ์ฐ๊ฒฐ์ด ๋์ด ์๋ค
โก๏ธ ํธ๋ฌ๋ธ ์ํ
์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ํ๋ค๊ฐ ์ ์๋๋๊ฒ ์์ ๋ ์๋ ๋ช ๋ น์ด๋ค์ ๋ ๋ ค๋ณด๋ฉด ๋๋ค
kubelet ์ํ ํ์ธ
systemctl status kubelet
journalctl -u kubelet | tail -10
containerd ์ํ ํ์ธ
systemctl status containerd
journalctl -u containerd | tail -10
๋ ธ๋ ์ํ ํ์ธ
kubectl get nodes -o wide
kubectl describe node k8s-master
Pod ์ํ ํ์ธ
kubectl get pods -A -o wide
Event ํ์ธ (๊ธฐ๋ณธ๊ฐ : 1h)
kubectl get events -A
kubectl events -n anotherclass-123 --types=Warning
Log ํ์ธ
kubectl logs -n anotherclass-123 api-tester-1231-755676484f-rlpl5 --tail 10
2. Service ๋์
iptables -t nat -L KUBE-NODEPORTS -n | column -t
- iptables ์์ nodePort ๋งคํ ๋ด์ฉ ํ์ธ ๋ช ๋ น์ด
- target : ๋ชฉ์ ์ง
'๐ฑ ์ธํ๋ฐ > โ ์ฟ ๋ฒ๋คํฐ์ค ์ด๋๋ ํด๋์ค (์ง์ํธ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฏธ์ 3] Application ๊ธฐ๋ฅ์ผ๋ก ์ดํดํ๊ธฐ - Configmap, Secret > ์์ฉ๊ณผ์ (0) | 2025.06.08 |
---|---|
[๋ฏธ์ 2] Application ๊ธฐ๋ฅ์ผ๋ก ์ดํดํ๊ธฐ - Probe > ์์ฉ๊ณผ์ (0) | 2025.06.08 |
(7) PV/PVC, Deployment, Service, HPA (1) | 2025.06.08 |
(6) Configmap, Secret ์ดํดํ๊ธฐ (2) | 2025.06.08 |
(5) Probe ์ดํดํ๊ธฐ (1) | 2025.06.02 |