๐ŸŽถ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ&์•„ํ‚คํ…์ณ

๊น€์„ฑ์ธยท2023๋…„ 10์›” 20์ผ
0

[DevOps] ๐ŸณDocker & Kubernetes

๋ชฉ๋ก ๋ณด๊ธฐ
44/62

๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋น„์Šค ํ”Œ๋žซํผ

Heapster, Metrics Service, ...

  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘ ๋ชจ๋‹ˆํ„ฐ๋ง ์•„ํ‚คํ…์ฒ˜์—์„œ ์ฝ”์–ด ๋ฉ”ํŠธ๋ฆญ ํŒŒ์ดํ”„๋ผ์ธ ๊ฒฝ๋Ÿ‰ํ™”
    kubectl top node
    kubectl top pod

https://kubernetes.io/ko/docs/tasks/debug/debug-cluster/resource-usage-monitoring/

๋ฆฌ์†Œ์Šค ๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ

  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ๊ฒ€์‚ฌ
  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ฐ ๋ ˆ๋ฒจ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰ ์ƒ์„ธ ์ •๋ณด ์ œ๊ณต
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•˜๊ณ  ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ์ œ๊ฑฐํ•˜์—ฌ ์ „์ฒด ์„ฑ๋Šฅ์„ ํ–ฅ์ƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

๋ฆฌ์†Œ์Šค ๋ฉ”ํŠธ๋ฆญ ํŒŒ์ดํ”„๋ผ์ธ

  • HPA ์ปจํŠธ๋กค๋Ÿฌ์™€ ๊ฐ™์€ ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ ์š”์†Œ๋‚˜ kubectl top ์œ ํ‹ธ๋ฆฌํ‹ฐ์— ๊ด€๋ จ๋œ ๋ฉ”ํŠธ๋ฆญ๋“ค๋กœ ์ œํ•œ๋œ ์ง‘ํ•ฉ์„ ์ œ๊ณต
  • ์ด ๋ฉ”ํŠธ๋ฆญ์€ ๋‹จ๊ธฐ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ์†Œ์ธ metrics-server์— ์˜ํ•ด ์ˆ˜์ง‘
  • metrics.k8s.io API๋ฅผ ํ†ตํ•ด ๋…ธ์ถœ๋จ
  • metrics-server๋Š” ํด๋Ÿฌ์Šคํ„ฐ ์ƒ์˜ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  ๊ฐ ๋…ธ๋“œ์˜ kubelet์— CPU์™€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์งˆ์˜
  • kubelet์€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋งˆ์Šคํ„ฐ์™€ ๋…ธ๋“œ ๊ฐ„์˜ ๋‹ค๋ฆฌ ์—ญํ• ์„ ํ†ตํ•ด ํŒŒ๋“œ์™€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ด€๋ฆฌ
  • kubelet์€ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„์„ ํ†ตํ•ด์„œ ์‚ฌ์šฉ๋Ÿ‰ ํ†ต๊ณ„๋ฅผ ๊ฐ€์ ธ์˜ด. ํ†ต๊ณ„์น˜๋ฅผ ํผ๋ธ”๋ฆฌ์‹ฑํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, cAdvisor ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์ง์ ‘ ์กฐํšŒ
  • /metrics/resource/v1beta1 API๋ฅผ ํ†ตํ•ด ๋…ธ์ถœ

์™„์ „ํ•œ ๋ฉ”ํŠธ๋ฆญ ํŒŒ์ดํ”„๋ผ์ธ

  • ๋ณด๋‹ค ํ’๋ถ€ํ•œ ๋ฉ”ํŠธ๋ฆญ์— ์ ‘๊ทผ
  • HPA์™€ ๊ฐ™์€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ๋ฉ”ํŠธ๋ฆญ์— ๋Œ€ํ•œ ๋ฐ˜์‘์œผ๋กœ, ํด๋Ÿฌ์Šคํ„ฐ์˜ ํ˜„์žฌ์ƒํƒœ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž๋™์œผ๋กœ ์Šค์ผ€์ผ๋ง/ ํด๋Ÿฌ์Šคํ„ฐ ์กฐ์ •
  • ๋ชจ๋‹ˆํ„ฐ๋ง ํŒŒ์ดํ”„๋ผ์ธ์€ kubelet์—์„œ ๋ฉ”ํŠธ๋ฆญ์„ ๊ฐ€์ ธ์™€์„œ custom.metrics.k8s.io์™€ external.metrics.k8s.io API๋ฅผ ๊ตฌํ˜„ํ•œ ์–ด๋Œ‘ํ„ฐ๋ฅผ ํ†ตํ•ด ๋…ธ์ถœํ•จ.

Metrics-Server

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
or
git clone https://github.com/kubernetes-sigs/metrics-server
kubectl create -f metrics-server/deploy/kubernetes

์ตœ์ดˆ์— kubectl top pod ๋ช…๋ น์–ด ์•ˆ๋จนํž˜
-> Metrics ์„ค์น˜ ํ›„ tlsํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ์˜ต์…˜์„ ๋ฐ”๊ฟ”์•ผํ•จ.
-> CA, ๊ฐœ์ธํ‚ค ํ•„์š” (but configuration์œผ๋กœ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ)

configuration

https://github.com/kubernetes-sigs/metrics-server#configuration
kubectl edit deployments.apps -n kube-system metrics-server

--kubelet-insecure-tls : Kubelet์— ๋‚˜ํƒ€๋‚˜ ์žˆ๋Š” CA ์ œ๊ณต ์ธ์ฆ์„œ๋ฅผ ์ฆ๋ช…ํ•˜์ง€ ์•Š๋Š”๋‹ค. (ํ…Œ์ŠคํŒ… ๋ชฉ์ ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ• ๊ฒƒ)
--kubelet-preferred-address-typs : ํŠน์ • ๋…ธ๋“œ์— ์—ฐ๊ฒฐํ•˜๊ธฐ์œ„ํ•œ ์ฃผ์†Œ๋ฅผ ๊ฒฐ์ •ํ• ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋…ธ๋“œ ์ฃผ์†Œ์˜ ํƒ€์ž… ์šฐ์„ ์ˆœ์œ„ (default: Hostname, internalDNS, externalDNS, externalIP)
metrics-server ๋””ํ”Œ๋กœ์ด์— edit ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด์„œ spec.containers.args ํ•„๋“œ์— ํ•ด๋‹น ์˜ต์…˜์„ ์ค€๋‹ค

profile
๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฟˆ์ธ 25์‚ด ๋Œ€ํ•™์ƒ์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€