์์ ๋ถํฐ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ์์ด์ ๊ถ๊ธํ ์ ์ด ์์์ต๋๋ค.
"์์ฒญ ๋๊ฒ ๋ง์ ๋ก๊ทธ๋ฅผ ์์ฑํ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ค๋ก ์ธํด ๋ ธ๋์ ๋์คํฌ๊ฐ ๋ถ์กฑํด์ง๋ฉด ์ด๋กํ์ง?"
"๊ณ์ ์๋ก์ด ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด ๋ฐ์์ ๊ทธ๋ก ์ธํด ๋ ธ๋์ ๋์คํฌ๊ฐ ๋ถ์กฑํด์ง๋ฉด ์ด๋กํ์ง?"
๋ ธ๋์ ๋์คํฌ๊ฐ ๋ถ์กฑํ๊ฒ ๋๋ฉด ๋ ธ๋์์ DiskPressure ๋ผ๋ ๋ฉ์์ง๋ฅผ ๋ฑ๊ฒ ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฐ๋ฐ ๊ถ๊ธํ ์์ ์ ๋์คํฌ๊ฐ ๋ถ์กฑํ ๋ "์ด๋ป๊ฒ ํด๊ฒฐํ๋" ๊ฐ ์๋๊ณ "์ด๋ป๊ฒ ์๋ฐฉํ๋" ์ ๋๋ค.
๊ทธ๋์ ์ด๋ฒ ๊ธ์์๋ ์๋ฐฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ณ ์ ํฉ๋๋ค.
๋ ์ธ ๋๋์ฝ๋~
์ ๋ ๊ฐ์ธ์ ์ผ๋ก ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ๊ด๋ฆฌํ๋ฉด์ ๊ฐ์ฅ ์ค์์ํ๊ฒ ์๊ฐํ๋ ํค์๋๊ฐ ์์ต๋๋ค.
๋ฐ๋ก ์ผ์์ (empheral) ๊ณผ ๋์ (Dynamic) ์ ๋๋ค.
์๋ฅผ ๋ค์ด, ์ฟ ๋ฒ๋คํฐ์ค์ ๊ฐ์ฅ ๊ธฐ๋ณธ ๋จ์์ธ ํ๋๋ ์ธ์ , ์ด๋์๋ ์ ์์ ์ธ ์ข ๋ฃ๊ฐ ๋ ์ ์์ด์ผ ํ๋ ์ํ๋ฅผ ์ ์งํ๊ณ ์์ด์ผ ํ๋ฉฐ, ์ข ๋ฃ ๋์์ ๋ ๋ค๋ฅธ ๋ฆฌ์์ค์ ์ํฅ์ด ์์ด์ผ ํฉ๋๋ค. ์ดํ ๋ค์ ์์ฑ๋๋๋ผ๋ ์ด์ ์ํ๋ฅผ ์ ์งํ ์ ์๊ฒ๋ ๊ตฌ์ฑ์ ํด์ผ ํฉ๋๋ค.
ํ๋์ ์ํ๋ฅผ ์ ์งํ๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ์ Storage Class, PV ๊ทธ๋ฆฌ๊ณ PVC ๋ฅผ ์ด์ฉํ๋ ๊ฒ ์ ๋๋ค.
๋ ๋์๊ฐ NFS ์ ๊ฐ์ ๋คํธ์ํฌ ํ์ผ ์์คํ ์ ๋์ ํ๋ฉด ์ฌ์ฐ๋ฉด์ ํจ์จ์ ์ผ๋ก ํด๋ฌ์คํฐ ๋ด ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
์ด๋ ๋ ธ๋์ ํ๋๊ฐ ์คํ๋๋ ์ง Stateful ํ ์ํ๋ฅผ ์ ์งํ ์ ์๊ฒ ๋์ฃ .
AWS EFS ๋ฅผ ์ด์ฉํด์ Storage Class, PV ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ด ๊ถ๊ธํ๋ค๋ฉด ์ฌ๊ธฐ!
๊ทธ๋ฐ๋ฐ ๋ฌธ์ ๋ ์ฐ๋ฆฌ๊ฐ ํํ kubectl logs ๋ช ๋ น์ด๋ฅผ ์จ์ ๋ณด๋ ์ปจํ ์ด๋์ ๋ก๊ทธ๋ค์ ์ปจํ ์ด๋ ๋ด๋ถ์ ์ ์ฅ๋์ง ์์ต๋๋ค.
Nginx ๋ก ์ดํด๋ณด๋ฉด ๋ฆฌ๋ ์ค ํ์ค ์ถ๋ ฅ์ธ stdout ์ผ๋ก ๋ก๊ทธ๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
access.log ์ error.log ๊ฐ ๊ฐ stdout, stderr ์ ์ํํธ ๋งํฌ ๋์ด ์์ต๋๋ค.
๋ฐ๋ผ์ ์ด๋ฌํ ํ์ค ์ถ๋ ฅ์ ํ๋์ ์ ์ฅ๋์ง ์์, NFS ์ ๊ฐ์ ํ์ผ ์์คํ ์ ํ์ฉํ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์ ์ ๊น!
ํ๋์ Sidecar Pattern ์ ์ด์ฉํด์ Sidecar ์ปจํ ์ด๋์ ๋ฐ๋ก ๋ก๊ทธ๋ฅผ ์ ์ฅํด NFS ๋ฅผ ํ์ฉํ ์ ์๊ฒ ์ง๋ง, ๋งค๋ฒ ๋ฐฐํฌํด์ผ ํ๋ ํ๋์ Sidecar ์ปจํ ์ด๋๋ฅผ ์ถ๊ฐํด์ผ ํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์์ฃ .
๊ทธ์น๋ง ์ด ๋ฐฉ๋ฒ๋ ์์ฃผ ์ข์ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ฐ๋จํ๊ฒ ํ๋ฒ ๋ค๋ค๋ณด๋๋ก ํ์ฃ .
์ฌ์ฉํ yaml ์ ์๋์ ๊ฐ์์!
apiVersion: v1
kind: Pod
metadata:
name: nginx-sidecar
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
volumeMounts:
- name: log
mountPath: /var/log/nginx
- name: sidecar-access
image: busybox
args: [/bin/sh, -c, 'tail -n+1 -f /var/log/nginx/access.log']
volumeMounts:
- name: log
mountPath: /var/log/nginx
- name: sidecar-error
image: busybox
args: [/bin/sh, -c, 'tail -n+1 -f /var/log/nginx/error.log']
volumeMounts:
- name: log
mountPath: /var/log/nginx
volumes:
- name: log
emptyDir: {}
nodeSelector:
kubernetes.io/hostname: k8s-worker-3
๋์ํํ๋ฉด ์๋์ ๊ฐ์ฃ !
Nginx ์ปจํ ์ด๋์์ curl ๋ช ๋ น์ด๋ฅผ ํตํด localhost ๋ก ์ ๊ทผํ์ฌ ํ์ค ์ถ๋ ฅ์ ์ป๊ฒ ๋๊ณ ,
Sidecar access ์ปจํ ์ด๋๋ก ์ ์ํด์ access.log ๋ฅผ ํ์ธํด๋ณด๋ฉด ์๋์ ๊ฐ์ ๋ก๊ทธ๊ฐ ์ ๋ ฅ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๊ทธ๋ผ ๋ค์ Fluentd ๋ Loki ๋ฅผ ์ด์ฉํด์ ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ์์งํด๋๊ฐ๋ฉด ๋ฉ๋๋ค.
ํ์ง๋ง ์์์ ์ธ๊ธํ ๋ฐ์ ๊ฐ์ด ์ฌ์ด๋์นด๋ฅผ ์ถ๊ฐํด์ผ ํ๋ค๋ ๋ถํธํจ์ด ์์ต๋๋ค. (์ ๋ง ๋ถํธํ ๊ฒ์ผ ์๋..)
๋ก๊ทธ๋ก ์ธํ ๋์คํฌ ๋ถ์กฑ
๊ทธ๋ผ ๋ค์ ๋ณธ๋ก ์ผ๋ก ๋์์ค๊ฒ ์ต๋๋ค.
stdout ์ผ๋ก๋ง ๋ก๊ทธ๊ฐ ์ถ๋ ฅ๋๋ค๊ณ ํด์ ๋ก๊ทธ๋ฅผ ํ์ผ๋ก ํ์ธํ ์ ์๋ ๊ฒ์ ์๋๋๋ค. ํ๋๊ฐ ์คํ๋๊ณ ์๋ ๋ ธ๋์ ์ ๊ทผํ๋ฉด ๊ด๋ จ๋ ๋ก๊ทธ๋ฅผ ํ์ผ๋ก ํ์ธ ํ ์ ์์ต๋๋ค.
๋ณดํต ๋ ธ๋์ /var/log/pods ์ ์ ์ฅ๋ฉ๋๋ค
๋ฐ๋ผ์ ํ๋ ๋ด์ ๋ก๊ทธ๊ฐ ์ ์ฅ๋์ง ์๋๋ผ๋ ๋ ธ๋์ ์ ์ฅ์ด ๋๊ณ , ๋ก๊ทธ๊ฐ ์ง์์ ์ผ๋ก ์์ด๊ฒ ๋๋ค๋ฉด ์ถฉ๋ถํ ๋ ธ๋์ ๋์คํฌ๊ฐ ๋ถ์กฑํด์ง๋ ์ํฉ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
default_nginx_ ๋ค์ ์๋ ๋์๋ Pod ์ Uid ์ ๋๋ค
crictl ps ์ crictl inspect <cotainer_id> | grep "uid" ๋ก ์์ ๋ผ ์ ์์ฃ .
EKS ๋ฅผ ์ด์ฉํด์ ๋ ธ๋๋ค์ ๊ตฌ์ฑํ ๋, ๋ชจ๋ฒ ์ฌ๋ก๋ SSH ๋ก ์ธํ ์ ๊ทผ์ ๋ง๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ SSH ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์ง์ ์ ์ผ๋ก ๋ก๊ทธ๋ฅผ ์ญ์ ํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ์ฃ . ๊ณ์ ์์ฌ๋ง ๊ฐ ๊ฒ์ ๋๋ค.
EC2 Userdata ๋ฅผ ์ด์ฉํด์ CronTab ๊ณผ ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํด์ ํน์ ๊ธฐ๊ฐ ๋์ ์ก์ธ์ค ๋์ง ์์ ๋ก๊ทธ๋ฅผ ์ญ์ ํ๋ ๋ฐฉ๋ฒ๋ ์์ ์ ์๊ฒ ์ง๋ง, ์ด๊ฒ๋ ์ฉ ๋ดํค๋ ๋ฐฉ๋ฒ์ ์๋๋๋ค.
์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ก ์ธํ ๋์คํฌ ๋ถ์กฑ
๋ฐ๋ก ์์์ ์ถ์ ๋ ๋ก๊ทธ๋ก ์ธํด ๋ ธ๋์ ๋์คํฌ ๋ถ์กฑ์ด ๋ฐ์ํ ์ ์๋ ์ํฉ์ ๋ดค๋ค๋ฉด, ์ด๋ฒ์๋ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ก ์ธํด ๋์คํฌ ๋ถ์กฑ์ด ๋ฐ์ํ ์ ์๋ ์ํฉ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ ธ๋ ์ ์ํด์ crictl ๋ช ๋ น์ด๋ฅผ ํตํด ์ด๋ฏธ์ง๋ค์ ์ฌ์ด์ฆ๋ฅผ ๋ณผ ์๊ฐ ์์ต๋๋ค.
ํ์ฌ ์ฌ์ฉํ๋ ์ด๋ฏธ์ง๋ผ๋ฉด ์๊ด์์ง๋ง, ๋ถ๋ช ๋ ธ๋์์ ์ญ์ ๋์ด ๋ถํ์ํ ์ด๋ฏธ์ง๊ฐ ์๋ ๊ฒฝ์ฐ๋ ์์ ๊ฒ๋๋ค.
์๋ฅผ ๋ค์ด, Nginx 1.23 ๋ฒ์ ์ ์ฐ๊ณ ์๋ค๊ฐ ๋๊ฐ์ ๋ ธ๋์์ 1.24 ๋ฒ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ ํ๋ค๋ฉด ์ด์ ์ด๋ฏธ์ง๋ ๋ ์ด์ ์ธ๋ชจ๊ฐ ์๊ณ ์ฉ๋๋ง ์ฐจ์งํ๊ณ ์๊ฒ ๋์ฃ .
๋ฐ๋ผ์ ์ด๋ฌํ ๋ถํ์ํ ์ด๋ฏธ์ง๋ค์ด ์์ด๋ฉด ๋ง์ฐฌ๊ฐ์ง๋ก ๋ ธ๋๋ ๊ธ๋ฐฉ ์ฉ๋์ด ๋ถ์กฑํด ์ง ๊ฒ์ ๋๋ค.
๋์คํฌ ๋ถ์กฑ ๋ฏธ๋ฆฌ ์๋ฐฉํ๊ธฐ
์ฐ์ ์ถ์ ๋ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ก ์ธํ ๋์คํฌ ๋ถ์กฑ์ ๋ํด ์๋ฐฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค.
์๋ง EKS ๋ , ๋ก์ปฌ ์ฟ ๋ฒ๋คํฐ์ค ๋ ์ด๋ฏธ ์ด ์๋ฐฉ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ณ ๊ณ์ค ๊ฒ๋๋ค.
๋ฐ๋ก ๊ฐ๋น์ง ์ปฌ๋ ํฐ ์ ๋๋ค.
๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ Kubelet ์ ๋ด์ฅ๋์ด Kubelet ์ด ์คํ๋๊ณ ์๋ ๋ ธ๋์์ ์ด๋ฏธ ์ฌ์ฉ๋๊ณ ์์ต๋๋ค. ์ฟ ๋ฒ๋คํฐ์ค์์์ ๊ฐ๋น์ง๋ผ ํ๋ฉด ์ข ๋ฃ๋ ์ก, ๊ณ ์ ์ค๋ธ์ ํธ, ์ฌ์ฉ๋์ง ์๋ ์ปจํ ์ด๋์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง, ๋ณผ๋ฅจ ๋ฑ์ด ์์ต๋๋ค.
๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ๋ ธ๋ ๋ด์์ ๋ถํ์ํ ์ด๋ฏธ์ง๋ฅผ ๋ชจ๋ ์ญ์ ํด์ฃผ์๋ ๊ฒ์ด์ฃ .
๊ทธ๋ผ ์ง์ง ๋ถํ์ํ ์ด๋ฏธ์ง๊ฐ ์ญ์ ๋๋ ์ง ํ๋ฒ ์์๋ณด์ฃ !
aws-cli ๋ฅผ ์ด์ฉํ๋ ํ๋๋ฅผ ๋ฐฐํฌํจ์ ๋ฐ๋ผ ๋ ธ๋์๋ aws-cli ์ปจํ ์ด๋์ aws-cli ์ด๋ฏธ์ง๊ฐ ์ค์น๋์ด ์๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
istio-proxy ๋ ์ด์คํฐ์ค์ ์ํด ์๋ ์ฃผ์ ๋์ด์ ์กด์ฌํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์๋์ ๊ฐ์ ํด๋์ ์ด์ stdout ์ผ๋ก ์ถ๋ ฅ๋๋ ๋ฐ์ดํฐ๋ค์ ์ ์ฅํ๊ณ ์์ฃ .
์ปจํ ์ด๋ ์ด๋ฏธ์ง, ๋ก๊ทธ ๋ชจ๋ ๋ ธ๋์ ์ง์ ์ ์ธ ๋์คํฌ๋ฅผ ์ฐจ์งํ๋ ๊ฑธ ํ์ธ ํ ์ ์์ต๋๋ค.
์ดํ, ์ด์ ๋ค์ aws-cli ํ๋๋ฅผ ์ญ์ ํ๊ฒ ์ต๋๋ค. ๊ทธ๋ผ Kubelet ์ด ์๋์ ๊ฐ์ ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํ๋ฉด์ ๊ด๋ จ ์ปจํ ์ด๋์ ๋ก๊ทธ๊ฐ ์ ์ฅ๋์ด ์๋ ๋ณผ๋ฅจ ๋ฑ์ ์ญ์ ํ๋ ๊ฒ์ ํ์ธ ํ ์ ์์ต๋๋ค.
journalctl | grep -i "kubelet" ์ ํตํด kubelet ์ ๋ก๊ทธ๋ฅผ ๊ด์ฐฐ ํ ์ ์์ต๋๋ค.
๊ณต์ ๋ฌธ์์ ๋์ ์๋ ๊ฒ์ฒ๋ผ ์ฌ์ฉ๋์ง ์๋ ์ปจํ ์ด๋์ ๊ฐ๋น์ง ์์ง์ 1๋ถ๋ง๋ค ์ํ๋๋ ๊ฒ์ ํ์ธ ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ก๊ทธ ๋ํ ์ญ์ ๋์์ฃ .
๊ทธ๋ฐ๋ฐ ๋ฌธ์ ๋ 5๋ถ์ด ์ง๋๋ ์ฌ์ฉ๋์ง ์๋ ์ด๋ฏธ์ง๋ ๊ทธ๋๋ก ๋จ์ ์์์ต๋๋ค. ๊ทธ๋์ ํ๋ฒ kubelet ์ config ๋ฅผ ์์ ํด๋ณด๋๋ก ํ์ต๋๋ค.
์ ์ต์ ๋ค์ด ์ด๋ฏธ์ง์ ๊ด๋ จ๋ ์ต์ ์ธ ๊ฑฐ ๊ฐ์์ ํด๋น ๋ถ๋ถ์ ์์ ํด์ฃผ์์ต๋๋ค.
kubectl ์ config ์์น๋ /var/lib/kubelet/config.yaml ์ ๋๋ค.
imageMinimumGCAge ์ ์ง์ ๋ ์๊ฐ๋งํผ์ ๊ฐ๋น์ง ์ปฌ๋ ํฐ์ ์ํด ์ญ์ ๋์ง ์๋ ์ต์ ์ ๋๋ค. ์ฌ๊ธฐ์ ์ค์ํ ๊ฑด imageGCHighThresholdPercent ์ imageGCLowThresholdPercent ์ ๋๋ค.
imageGCHighThresholdPercent ์ ๊ธฐ๋ณธ๊ฐ์ด 85์ธ๋ฐ ํ์ฌ ๋ ธ๋์ ๋จ์์๋ ๋์คํฌ ์ฉ๋์ ํผ์ผํธ๋ก ๊ณ์ฐํด์ 85 ์ด์์ด๋ผ๋ฉด ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ํญ์ ์คํ๋๊ฒ๋ ํ๋ ์ต์ ์ด๊ณ , imageGCLowThresholdPercent ์ ๋ฐ๋๋ก ์ฃผ์ด์ง ๊ฐ๋ณด๋ค ๋ฎ๋ค๋ฉด ์คํ๋์ง ์๋ ์ต์ ์ ๋๋ค.
๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ํญ์ ์คํ๋ ์ ์๋๋ก imageGCHighThresholdPercent ์ 1, imageGCLowThresholdPercent ์ 0 ์ ๋ถ์ฌํ์ต๋๋ค.
๋ณ๊ฒฝ๋ ์ต์ ์ด ์ ์ฉ๋ ์ ์๋๋ก kubelet ์ ์ฌ์คํ์ ํด์ฃผ์์ต๋๋ค. ๋คํํ ๋ฌด์ฌํ ๋์ํ๋ค์.
kubelet ์ ์ฌ์์ํ๋ ๋ช ๋ น์ด๋ systemctl restart kubelet ์ ๋๋ค.
์ดํ ๋ค์ crictl images ๋ช ๋ น์ด๋ก ํ์ธํด ๋ณธ ๊ฒฐ๊ณผ, aws-cli ๋ฟ๋ง ์๋๋ผ ์ด์ธ์ ์ฌ์ฉํ์ง ์๋ ๋ชจ๋ ์ด๋ฏธ์ง๊ฐ ์ญ์ ๋์์ต๋๋ค. ๋ง์นจ docker image prune ๊ณผ ๊ฐ์ ํจ๊ณผ์์ฃ .
์ด๋ ๊ฒ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ก ์ธํด ๋ ธ๋ ๋ด์ ๋ถํ์ํ ์ปจํ ์ด๋ ์ด๋ฏธ์ง, ๋ณผ๋ฅจ ๋ฆฌ์์ค๋ค์ ์ ๋ฆฌํ์ฌ ์ง์์ ์ผ๋ก ๋์คํฌ๋ฅผ ํ๋ณดํ ์ ์์ต๋๋ค.
๊ทธ๋ผ ๋ค์์ผ๋ก ๋ ธ๋์ ์ถ์ ๋ ๋ก๊ทธ๋ฅผ ์ธํ ๋์คํฌ ๋ถ์กฑ์ ์๋ฐฉํด๋ณด๊ฒ ์ต๋๋ค.
์ฌ๊ธฐ์ ๋ค์ ํ๋ฒ ์ผ์์ (empheral) ๊ณผ ๋์ (Dynamic) ์ด๋ผ๋ ํค์๋๋ฅผ ์๊ธฐํฉ๋๋ค.
์ด๋ฒ์๋ ์์ฝ๊ฒ๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ์ ๋์์ ๋ฐ์ ์ ์์ต๋๋ค. ํ์ฌ๋ก์ฌ ๋ก๊ทธ๋ฅผ ์ง์์ฃผ๋ ํน๋ณํ ๋ฌด์ธ๊ฐ๋ ์กด์ฌํ์ง ์์ต๋๋ค. (์๋ค๋ฉด ๊ผญ ์๋ ค์ฃผ์ธ์!)
๋ณดํต Cloud ํ๊ฒฝ์์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ด์ํ๊ณ ๊ณ์ค ๊ฒ๋๋ค. EKS ๊ฐ์ ๊ฒฝ์ฐ๋ Karpenter ๋ฅผ ์ด์ฉํด์ ๋ ธ๋๋ค์ ์ค์ผ์ผ ์์ํ๊ฑฐ๋ ์ค์ผ์ผ ์ ์ ํ๊ณ ๊ณ์ค ๊ฒ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ ธ๋์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ๋ ๋ณดํต ๋ก๊ทธ ์ ๊ฐ์ ๋ฐ์ดํฐ์ด์ง, ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ ์ค์ํ์ง ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ก๊ทธ ๋ฐ์ดํฐ๋ ๋ฏธ๋ฆฌ Fluentd, Loki, AWS Cloudwatch ์ ๊ฐ์ ๋ก๊ทธ ์ค์ ์์คํ ์ ๋ชฐ์ ๋ฃ๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ ์ค์ํ ๋ฐ์ดํฐ๋ PVC ๋ฅผ ์ด์ฉํ๋ฉด ๋ฉ๋๋ค. ์ด ๋ง์ ์ฆ์จ, ๋ ์ด์ ๋ ธ๋์ ๊ฐ์น ์๋ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ ๋ป์ ๋๋ค.
๊ทธ๋ฅ ๋ ธ๋๋ฅผ ์ข ๋ฃ์ํค๊ณ ๋ค์ ์คํ์์ผ ๋ฒ๋ฆฌ๋ฉด ๋ฉ๋๋ค. ์ด๋ ๊ฒ ํด๋, ์ด๋ฏธ ์ด์ ๋ ธ๋์ ์๋ ๋ก๊ทธ ๋ฐ์ดํฐ๋ค์ ๋ก๊ทธ ์ค์ ์์คํ ์ ์ ์ฅ๋์ด ์๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ํ ์ค์ํ ๋ฐ์ดํฐ๋ค์ PVC ๋ฅผ ํตํด EFS ์ ์ ์ฅ๋์ด ์์ฃ .
์ด ๋ฐฉ๋ฒ์ ๋ถ๋ช ์ผ์์ (empheral) ์ด๋ฉด์ ๋์ (Dynamic) ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ! Karpenter ๋ ๋ถ๋ช ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฃ !
์๋๋ Karpenter ๋ฆฌ์์ค ์ค ํ๋์ธ NodePools ์ ์ผ๋ถ๋ถ ์ ๋๋ค.
Karpenter v0.32 ๋ฒ์ ๋ถํฐ Provisioner ๊ฐ NodePools ๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค.
Karpenter ๊ฐ ๊ถ๊ธํ๋ค๋ฉด ์ฌ๊ธฐ!
expireAfter ์ด 720h ๋ก ์ ์๋์ด ์๋๋ฐ, ๊ทธ ๋ง์ ์ฆ์จ, 30 ์ผ ๋ค์ ํด๋น ๋ ธ๋๋ฅผ ์ข ๋ฃํ๊ณ ์๋กญ๊ฒ ๋์ด๋ค๋ ์ต์ ์ ๋๋ค.
์ด๋ ๊ฒ ํจ์ผ๋ก์จ ์ค๋ ์ง์๋ ๋ ธ๋์ ๋ํ ๋ณด์ ์ทจ์ฝ์ ์ ์์จ ์ ์๊ณ , ๋ํ file fragmentation ๊ณผ memory leaks ๋ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
๋ ธ๋๊ฐ ์ข ๋ฃ๋๊ธฐ ์ง์ ๊น์ง ์ง์์ ์ผ๋ก ๋ก๊ทธ ์ค์ ์์คํ ์ ๋ก๊ทธ๋ฅผ ์ ์ฅํ๊ณ , ๋ ธ๋๋ฅผ ํต์งธ๋ก ์ข ๋ฃ์ํค๋ฉด์ ์์ ์ด์ ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ๋ ๋ ค๋ฒ๋ฆฌ๋ ๊ฑฐ์ฃ . ๊ทธ๋ฆฌ๊ณ ๋ ์๋กญ๊ฒ ์์ฑ๋ ๋ ธ๋์์ ๋ก๊ทธ๋ฅผ ์์งํ๋ฉด ๋ฉ๋๋ค.
๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์ ํ๋ ๋ฌธ์ ๊ฐ ๋ ์์ต๋๋ค. Karpenter ๋ฅผ ์ด์ฉํ์ง ์๋ ๋ก์ปฌ ์ฟ ๋ฒ๋คํฐ์ค ํ๊ฒฝ์ ์ด๋กํ๋๋ ๊ฒ์ด์ฃ . CronTab ๊ณผ ์คํฌ๋ฆฝํธ๋ฅผ ์ง์ผํ๋ ๊ฒ์ผ๊น?..
๋คํํ ์ฌ๊ธฐ๋ ํด๊ฒฐ์ฑ ์ด ์กด์ฌํฉ๋๋ค. Kured(KUbernetes REboot Daemon) ๋ผ๋ ํ๋ก์ ํธ๊ฐ ๋ฐ๋ก ๊ทธ ํด๊ฒฐ์ฑ ์ด์ฃ . ์ง์ ์ฌ์ฉํด๋ณด์ง ์์์ง๋ง, ์ด๋ฆ์์ ์ ์ ์๋ฏ์ด ํน์ ๊ธฐ๊ฐ๋ง๋ค ๋ฐ๋ชฌ์ด ๋์๊ฐ๋ ๋ ธ๋๋ฅผ ์ฌ๋ถํ ํด์ฃผ๊ณ ๊ทธ์ ๋ฐ๋ผ ๋ถํ์ํ ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋๋ ๊ฒ์ ๊ธฐ๋ํด ๋ณผ ์ ์์ต๋๋ค.
24๋ 1์ 08์ผ ๊ธฐ์ค SandBox ์ด๊ธด ํ์ง๋ง CNCF ํ๋ก์ ํธ ์ค ์ผ๋ถ์ด๊ธฐ ๋๋ฌธ์ ์ฟ ๋ฒ๋คํฐ์ค์๋ ํธํ์ฑ์ด ๋ฐ์ด๋ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค.
๊ณ์ํด์ ์์ด๋ ๋ก๊ทธ ๋ฐ์ดํฐ๋ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ก ์ธํด ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ๋ง๊ฐ์ง๋ฉด ์ด๋กํ์ง? ๋ผ๋ ๊ฑฑ์ ์ ํด์๋๋ฐ, ์ด๋ก์จ ๋ชจ๋ ํด์ํ ์ ์์์ต๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ผ๋ ๋ ์์ ๊น๋ฉด ๊น ์๋ก ์ฐธ ์ฌ๋ฐ๋ ๋ ์์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ง์..
๊ทธ๋ผ ์ค๋์ ์ฌ๊ธฐ๊น์ง~
ps. Karpenter ์ NodePools ๋ก Kubelet ์ Config ๊ฐ๋ ์ค์ ํ ์ ์์ต๋๋ค!
์์ ์ ๋์์๋ ์ต์ ๋ง๊ณ ๋ ์ฟ ๋ฒ๋คํฐ์ค ๊ณต์ ๋ฌธ์์ ๋์์๋ ์ต์ ๋ค๋ ์ถ๊ฐํด๋ ๋ฉ๋๋ค.