๐คย metric: ์ธก์ ์ ํตํ์ฌ ์ํํธ์จ์ด์ ํ์ง, ์์ฐ์ฑ ๋๋ ๊ฐ๋ฐ ๋น์ฉ ๋ฑ์ ์ถ์ ํ ์ ์๋ ์ฒ๋.
๋ฉํธ๋ฆญ ์๋ฒ๋ ํด๋ฌ์คํฐ ์ ์ฒด์ ๋ฆฌ์์ค ์ฌ์ฉ ๋ฐ์ดํฐ๋ฅผ ์ง์ฐํ๋ค. ๊ฐ ๋ ธ๋์ ์ค์น๋ kubelet์ ํตํด ๋ ธ๋๋ ์ปจํ ์ด๋์ cpu, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ๊ฐ์ ๋ฉํธ๋ฆญ์ ์์ง.
Metricbeat๋ ์์คํ ๋ฐ ์๋น์ค์์ ๋ฉํธ๋ฆญ์ ์์งํ๋ ๊ฒฝ๋ ์์ง๊ธฐ๋ค.
Linux, Windows, Mac ํธ์คํธ์ ๋ฐฐํฌํ๊ณ Elasticsearch์ ์ฐ๊ฒฐํ๋ฉด ์์คํ ์ cpu์ฌ์ฉ๋ฅ ๊ณผ ๋ฉ๋ชจ๋ฆฌ, ํ์ผ ์์คํ , ๋์คํฌ IO, ๋คํธ์ํฌ IO์ ๋ํ ํต๊ณ์ ์์คํ ์์ ์คํ๋๋ ๋ชจ๋ ํ๋ก์ธ์ค์ ๋ํ ํต๊ณ๋ฅผ ํ์ธํ๊ณ , ๊ฐ๋ณ๊ฒ ์ ์กํ ์ ์๋ค.
Metricbeat๋ ๋ฌด๋ฃ ๋ผ์ด์ผ์ค์ด๋ฉฐ, ์๊ณ์ด (์ฅ๋น)๋ชจ๋ํฐ๋ง์ ๊ฒฝ์ฐ elasticsearch์์ ์กฐํฉ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ฉ์ดํ๋ค. ๋ฐ์ดํฐ๋ฅผ ์์ ๋ docํ๋์ ๋ค์ํ metric์ ํ๋ฒ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ํจ์จ์ ์ด๋ฉฐ, ์์ ์งํ์ ๋ํ ๊ฒ์ ์ฑ๋ฅ์ด ๋ฐ์ด๋๋ค. ๋ํ es์ ์๊ณ์ด๋ก metric์ ์ ์ฌํ ์คํค๋ง๋ฅผ ๋ณธ์ธ๋ค์ด ์์์ ์์ฑํด ์ฃผ๋ ๊ฒ๋ ์ฅ์ ์ด๋ค. ๋๋ถ์ด kibana ๋์๋ณด๋๋ ์๋์ผ๋ก ์์ฑํ ์ ์๊ธฐ ๋๋ฌธ์ ์ง๊ด์ ์ผ๋ก ์ค๋ฒ๋ทฐ ์งํ๋ค์ ์ดํด๋ณผ ์ ์๋ค.
CPU, MEM,DISK,NETWORK๊ฐ์ ๋ฌผ๋ฆฌ ์ฅ๋น์ ๋ํ metric ์์ง ๋ฟ๋ง ์๋๋ผ JMX ์ง์์ผ๋ก ์ธํด JVM๊ธฐ๋ฐ ๊ธฐ์ ๋ค๋ ์๋น์ ์์ง์ด ๊ฐ๋ฅํ๋ค.
System, Aerospike, Apache, Ceph, Couchbase, Docker, Dropwizard, Elasticsearch
Etcd, Golang, expvar, HAProxy, HTTP, json, Jolokia, jmx, Kafka, Kibana, Kubernetes
Logstash, Memcached, MongoDB, dbstats, MySQL, Nginx, PHP_FPM, PostgreSQL
RabbitMQ, Redis, vSphere, Windows, ZooKeeper
http://www.kwangsiklee.com/2018/04/๋ฉํธ๋ฆญ๋นํธmetricbeat๋ก-์์คํ -๋ชจ๋ํฐ๋ง-ํ๊ธฐ/
๋์ฉ๋, ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ๋๋ก ๊ฐ๋ฐ๋ ๊ตฌ๋ ํ ๋ถ์ฐ ๋ฉ์์ง ํ๋ซํผ์ด๋ค.
์ค์๊ฐ ๋ก๊ทธ ์คํธ๋ฆฌ๋ฐ์ ์ํด ํน๋ณํ ์ ์๋์์ผ๋ฉฐ, ์ฌ๋ฌ ์์ค์์ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ์ฒ๋ฆฌํ๊ณ ์ฌ๋ฌ ์ฌ์ฉ์์๊ฒ ์ ๋ฌํ๋๋ก ์ค๊ณ๋์๋ค. ์ด๋น ์๋ฐฑ๋ง ๊ฐ์ ๋ฐ์ดํฐ ํฌ์ธํธ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ด ๋น ๋ฐ์ดํฐ ๊ณผ์ ์ ์ ํฉํ๋ค. ์นดํ์นด๋ ์์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํด ๋์คํฌ Read/Write๋ฅผ ํ์ง ์๊ณ , ํ์ด์ง ์บ์๋ฅผ ํตํ๊ธฐ ๋๋ฌธ์ ์ฒ๋ฆฌ ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๋ค.
์นดํ์นด๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋ฌ์คํฐ๋ฅผ ํ์ฉํด ํ์ฅ์ฑ์ ๋์ผ ์ ์๊ณ , ์ค์ผ์ผ ์์์ผ๋ก ๊ณ ๊ฐ์ฉ์ฑ์ ๊ฐ์ถ๊ณ , ๋์ ์ฒ๋ฆฌ๋์ ํตํ ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ์ด ๊ฐ๋ฅํ๋ค.
์๋ก ๋ค๋ฅธ ๊ตฌ์ฑ ์์ ๊ฐ์ ์์ ์ ์ธ ๋ฐ์ดํฐ ๊ตํ, ์ ํ๋ฆฌ์ผ์ด์ ์๊ตฌ ์ฌํญ ๋ณ๊ฒฝ์ ๋ฐ๋ผ ๋ฉ์์ง ์ํฌ๋ก๋๋ฅผ ๋ถํ ํ๋ ๊ธฐ๋ฅ, ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ, ๋ฐ์ดํฐ/๋ฉ์์ง ์ฌ์์ ๋ํด ์ง์ํ๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ก ์นดํ์นด๋ฅผ ํ์ฅํ๋ ๊ฒ์ ์ด์์ ์ธ ๋ฐฉ์์ธ๋ฐ, ์นดํ์นด์ ๋ฐฐํฌ, ์ค์ , ๊ด๋ฆฌ ๋ฐ ์ฌ์ฉ์ ๊ฐ์ํ ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ํ ์ฟ ๋ฒ๋คํฐ์ค์ ํ์ฅ์ฑ๊ณผ ๊ณ ๊ฐ์ฉ์ฑ, ์ด์์ฑ ๋ฐ ๋ฐฐํฌ ํธ์์ฑ๋ ํ์ฉํ ์ ์๋ค.
์นดํ์นด ๋์ ์ด์ ์๋ point to point ๋ฐฉ์์ผ๋ก, ๋ฐ์ดํฐ ์ ์ก ๋ผ์ธ์ด ๋ง์ ๋ฐฐํฌ ๋ฐ ์ฅ์ ๋์์ด ์ด๋ ต๊ณ , ๋ฐ์ดํฐ ํฌ๋งท์ ๋ณ๊ฒฝ ์ฌํญ์ด ์๊ธธ ๋ ์ ์ง ๋ณด์๊ฐ ์ด๋ ค์ ๋ค.
์นดํ์นด ๋์ ์ ์ค๊ฐ์ Topic์ ๋ง๋ จํด(Pub/Sub ๋ฐฉ์) ํน์ ํ ํฝ์ด๋ ์ด๋ฒคํธ์ ๋ํ ํต์ง๋ฅผ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋ฐ์ ์ ์๊ฒ ํด์ค๋ค. publisher๊ฐ Topic์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ฉด ํด๋น topic์ ๊ตฌ๋ ํ๋ ๋ชจ๋ ์ฌ์ฉ์๋ค์๊ฒ ๋ฉ์์ง๊ฐ ์ ์ก๋๋ค.
๋ถ์ฐ ์ฝ๋๋ค์ด์ ์๋น์ค(๋ถ์ฐ ์์คํ ์์ ์์คํ ๊ฐ์ ์ ๋ณด ๊ณต์ , ์ํ ์ฒดํฌ, ์๋ฒ๋ค ๊ฐ์ ๋๊ธฐํ๋ฅผ ์ํ ๋ฝ ๋ฑ์ ์ฒ๋ฆฌํด์ค)๋ฅผ ์ ๊ณตํ๋ ์คํ์์ค ํ๋ก์ ํธ. ๋ถ์ฐ ์์ ์ ์ ์ดํ๊ธฐ ์ํ ํธ๋ฆฌ ํํ์ ๋ฐ์ดํฐ ์ ์ฅ์๋ค.
zookeeper๋ฅผ ์ฌ์ฉํด ๋ฉํฐ kafka Broker๋ค ๊ฐ์ ์ ๋ณด๋ฅผ ๊ณต์ , ๋๊ธฐํ๋ฅผ ์งํํ๋ค.
๋ธ๋ก์ปค์ ๋ชฉ๋ก/์ค์ ์ ๊ด๋ฆฌํ ์ ์๊ณ , zookeeper ์์ด๋ kafka๊ฐ ์๋ํ ์ ์์ผ๋ฉฐ, zookeeper๋ ํ์์ ์๋ฒ๋ก ์๋ํ๊ฒ ๋์ด์๋ค.
Leader(writes)์ ๋๋จธ์ง Follower(reads) ์๋ฒ๋ก ๋์ด์๋ค.
cf) ์นดํ์นด๋ ํฌ๊ฒ ํ๋ก๋์, ๋ธ๋ก์ปค, ์ปจ์๋จธ, ์ฃผํคํผ๋ก ๊ตฌ์ฑ๋๋ค.
Apache Lucene(๋ชจ๋ ๊ฒ์ ์์ง์ ์์ด) ๊ธฐ๋ฐ์ Java ์คํ์์ค ๋ถ์ฐ ๊ฒ์ ์์ง. ํ
์คํธ, ์ซ์, ์์น ๊ธฐ๋ฐ ์ ๋ณด, ์ ํ ๋ฐ ๋น์ ํ ๋ฐ์ดํฐ ๋ฑ ๋ชจ๋ ์ ํ์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์, ๋ถ์ํ ์ ์๋ค. ๋จ๋
์ผ๋ก ์ฌ์ฉํ๊ธฐ๋ณด๋ค๋ ELK ์คํ์ด๋ผ๊ณ ๋ถ๋ฅด๋ Logstash, Kibana, Beats๋ฅผ ์ถ๊ฐ์ ์ผ๋ก ์ฌ์ฉ.
์ปจํ
์ด๋๊ฐ ๋ด์ ๋ ๋ก๊ทธ๋ฅผ ๋ณด๊ณ ์ถ์ผ๋ฉด ์ค์ ๋ก๋ ํ์ผ๋ก ๋
ธ๋์ ๋จ๊ฒจ์ ธ ์๋ค. ๊ทธ๋ฐ๋ฐ ์ปจํ
์ด๋๊ฐ ์ฃฝ์ผ๋ฉด ๋ก๊ทธ๋ ์ฃฝ์ผ๋ฏ๋ก ์๋ผ์คํฑ ์์น์ ์์๋๊ฒ ํ๋ค. ๊ทธ๋ ๊ฒ ์์ธ ๋ฐ์ดํฐ๋ค์ ํ์ธํ๋ ์ฉ๋.
๊ธฐ๋ณธ์ ์ผ๋ก HTTP ํ๋กํ ์ฝ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ REST API๋ฅผ ํตํด ๋ฐ์ดํฐ ์กฐ์์ ์ง์ํ๋ค.
RDB๋ ํ์ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋, ES๋ ๋จ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก (์ญ์ธ๋ฑ์ค, Inverted Index) ์ ์ฅํ๋ค.
NoSQL์ ์ผ์ข ์ผ๋ก ๋ถ๋ฅํ ์ ์๊ณ , ๋ถ์ฐ์ฒ๋ฆฌ๋ฅผ ํตํด ์ค์๊ฐ์ฑ์ผ๋ก ๋น ๋ฅธ ๊ฒ์์ด ๊ฐ๋ฅํ๋ค. ๊ธฐ์กด ๋ฐ์ดํฐ๋ก ์ฒ๋ฆฌํ๊ธฐ ํ๋ ๋๋์ ๋น์ ํ ๋ฐ์ดํฐ ๊ฒ์์ด ๊ฐ๋ฅํ๋ฉฐ, ์ ๋ฌธ ๊ฒ์๊ณผ ๊ตฌ์กฐ ๊ฒ์ ๋ชจ๋๋ฅผ ์ง์ํ๋ค.
elasticsearch๋ restfulํ ์์ฑ๊ณผ json ๋ฌธ์ ๊ธฐ๋ฐ์ ํต์ ์ ์ง์ํ๋ฏ๋ก http ํ๋กํ ์ฝ์ ์ฌ์ฉํด ์ด๋ค ํด๋ผ์ด์ธํธ์๋ ์์ฝ๊ฒ ์ฐ๋ํ ์ ์๋ค.
kibana๋ elasticsearch๋ฅผ ์ฐ๊ฒฐํด ์ฝ๊ฒ ์๊ฐํํ๊ณ , elastic stack์ ํ์ํ์ฌ, ์ฟผ๋ฆฌ ๋ถํ ์ถ์ ๋ถํฐ ์ฑ์ ํตํด ์์ฒญ์ด ํ๋ฅด๋ ๋ฐฉ์์ ์งํํ ์ ์๋๋ก ๋ง๋ค์ด์ง ๋ฐ์ดํฐ ์๊ฐํ ํ๋ซํผ์ด๋ค. ๋ก๊ทธ์ ์๊ณ์ด ๋ถ์, ์ ํ๋ฆฌ์ผ์ด์ ๋ชจ๋ํฐ๋ง, ์ด์ ์ธํ ๋ฆฌ์ ์ค ์ฌ์ฉ ์ฌ๋ก์ ์ฌ์ฉ๋์ด ๋ฐ์ดํฐ ์๊ฐํ ๋ฐ ํ์์ ๋ด๋นํ๋ค.
ํ์ฌ kubernetes ์์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ์คํ ์์ค ๊ธฐ๋ฐ ๋ชจ๋ํฐ๋ง ์์คํ ์ด์, ์๊ณ์ด DB์ ํ ์ข ๋ฅ.
๊ฐ๋จํ ํ ์คํธ ํ์์ผ๋ก ๋ฉํธ๋ฆญ์ ์ฝ๊ฒ ๋ ธ์ถํ ์ ์๊ณ ๋ฐ์ดํฐ ๋ชจ๋ธ์ key-valueํํ๋ก label ์ง๊ณ ํ Kibana/Grafana๊ฐ์ ๋์ ๋ณด๋ ์์คํ ์์ ๊ทธ๋ํ๋ก ์ฝ๊ณ ๊ฐ๋จํ๊ฒ ๋์ ๋ณด๋๋ฅผ ๋ง๋ค ์ ์๋ค.
์ฟ ๋ฒ๋คํฐ์ค ํ๊ฒฝ์์ ์ ์ฒด ์ธํ๋ผ ํ๊ฒฝ๊ณผ application์ ๋ํ ๋ชจ๋ํฐ๋ง์ด ์ค์ํด์ก๋ค. ์ ์ฒด์ ์ธ ๊ฐ์์ฑ์ ํ๋ณดํด์ผ application์ ๊ฐ์ฉ์ฑ๊ณผ ์์ ์ฑ์ ํ๋ณดํ ์ ์์ผ๋ฉฐ, ๋ชจ๋ํฐ๋ง ๊ฒฐ๊ณผ๋ฅผ ํตํ ๊ณ ๋ํ๋ cloud native system์ ๊ตฌ์ถํ ๋ ์งํ๋ก ํ์ฉํ ์ ์๋ค.
๋ ธ๋๊ฐ ๋ด์ ๋ ์๊ณ์ด๋ก ํผ์ผํธ๋ฅผ ๊ณ์ ์ ์ฅํ๊ณ ๋ชจ๋ํฐ๋งํ๋ค. ์์ฃผ ๋ค์ํ ์๊ณ์ด ์ ๋ณด๊ฐ ์ ์ฅ๋๋ฉฐ, ์นํ์์๋ ํ์ํ ๊ฒฝ์ฐ ์ ๋ณด๋ฅผ ๋ฝ์์์ ์ฌ์ฉํ๋ค.
์ฟ ๋ฒ๋คํฐ์ค ์ฌ์ฉ ์ค์ ์ด์ ๊ด์ ์์ ๋ค์ํ ๋ฉํธ๋ฆญ ์ ๋ณด๋ฅผ ์์งํด ๋ชจ๋ํฐ๋งํ๊ฑฐ๋, ํน์ ํ ์ํฉ(Pod์ ์ฅ์ ์ํฉ ๋ฐ์)์ ๋ณ๋ ์ฑ๋๋ก ์๋ฆผ์ ๋ฐ์กํ ํ์๊ฐ ์์ ์ ์๋ค.
์ด๋ฐ ๊ฒฝ์ฐ, ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ๋ ๋ฒจ์์ ์์ปค๋ ธ๋๋ก ์ฌ์ฉ์ค์ธ ์๋ฒ์ CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ ๋ฟ๋ง ์๋๋ผ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ๋ด๋ถ์ Pod๊ฐ ์ฌ์ฉ์ค์ธ ๋ฆฌ์์ค ๋ฉํธ๋ฆญ๊ณผ ๋คํธ์ํฌ IO, Deployment ๊ฐ์, Pod ๊ฐ์ ๋ฑ์ ๋ค์ํ ์ ๋ณด๋ฅผ ์์งํด์ผ ํ๋ค.
kube-state-metrics๋ ์์ ๊ฐ์ ๋ค์ํ ๋ฉํธ๋ฆญ์ ์์งํด์ ๋ฐ์ดํฐ๋ฅผ /metrics๋ผ๋ HTTP ์๋ํฌ์ธํธ๋ก ์ ๊ณตํด์ค๋ค. (๋ํดํธ ํฌํธ๋ 8080)
kube-state-metrics/docs at master ยท kubernetes/kube-state-metrics
Prometheus Node Exporter๋ UNIX๊ณ์ด ์ปค๋์ ๊ฐ์ง ํ๋์จ์ด์ ์ํ์ ์๋ฒ ์์คํ (cpu, loadAvg, memory) ๋ฐ ๋คํธ์ํฌ ๊ด๋ จ ์ ๋ณด๋ค์ ๋ํ๋ด๋ ์์ง๊ธฐ๋ค. ์ฟ ๋ฒ๋คํฐ์ค์ DaemonSet ๋ฆฌ์์ค๋ก ์ ์๋์ด ์๋ค. ์ฟ ๋ฒ๋คํฐ์ค์ ๊ฐ ๋ ธ๋๋ค์ node-exporter๊ฐ ์ค์น ๋๋ค.
node-exporter๋ ์ค์น๋ ๋
ธ๋์ CPU, ๋ฉ๋ชจ๋ฆฌ, ๋คํธ์ํฌ ๊ฐ์ ํธ์คํธ ๊ด๋ จ ๋ฉํธ๋ฆญ์ ์์งํด API๋ก ๋
ธ์ถํ๋ค. ๋ชจ๋ํฐ๋ง์ ์ํด host system์ ์ ๊ทผํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋์ปค ์ปจํ
์ด๋๋ก ๋ฐฐํฌ๋๋ ๊ฒ์ ์ ์ ํ์ง ์๋ค๊ณ ํ๋ค.
https://github.com/prometheus/node_exporter
NFD๋ ํ๋ซํผ์ ํ๋์จ์ด ๋ฐ ์์คํ ๊ตฌ์ฑ์ ๊ฐ์งํ๊ณ ์๋ฆฌ๋ ์ฟ ๋ฒ๋คํฐ์ค ์ถ๊ฐ ๊ธฐ๋ฅ์ผ๋ก, ์ด๋ฅผ ํตํด ์ํฌ๋ก๋์ ์ง๋ฅ์ ์ธ ์ค์ผ์ฅด๋ง์ ์ฉ์ดํ๊ฒ ํ ์ ์๋ค. ์ฟ ๋ฒ๋คํฐ์ค์ ๋ํ ๋ ธ๋ ๊ธฐ๋ฅ ๊ฒ์์ด ๊ฐ๋ฅํ๋ฉฐ, ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์ ๊ฐ ๋ ธ๋์์ ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋์จ์ด ๊ธฐ๋ฅ์ ๊ฐ์งํ๊ณ , ๋ ธ๋ ๋ ์ด๋ธ์ ์ฌ์ฉํด ํด๋น ๊ธฐ๋ฅ์ ์๋ ค์ค๋ค.
์๋ 3๊ฐ์ง ์ํํธ์จ์ด ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
nfd-master: ์ฟ ๋ฒ๋คํฐ์ค API์ ๋ํ ํต์ ์ ๋ด๋นํ๋ ๋ฐ๋ชฌ. nfd-worker๋ก๋ถํฐ ๋ ์ด๋ธ๋ง ์์ฒญ์ ์์ ํ๊ณ ๊ทธ์ ๋ฐ๋ผ ๋ ธ๋ ๊ฐ์ฒด๋ฅผ ์์ ํ๋ค.
nfd-worker: ๊ธฐ๋ฅ ๊ฐ์ง๋ฅผ ๋ด๋นํ๋ค. ๊ทธ ๋ค์ ์ค์ ๋ ธ๋ ๋ ์ด๋ธ๋ง์ ์ํํ๋ NFD-master์ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ค. nfd-worker์ ํ๊ฐ ์ธ์คํด์ค๋ ํด๋ฌ์คํฐ์ ๊ฐ ๋ ธ๋์์ ์คํ ๋์ด์ผ ํ๋ค.
nfd-topology-updater: worker ๋
ธ๋์ ํ ๋น ๋ ๋ฆฌ์์ค๋ฅผ ๊ฒ์ฌํด ์์ญ๋ณ๋ก ์ ํ๋์ ํ ๋นํ ์ ์๋ ๋ฆฌ์์ค๋ฅผ ์กฐ์ฌํ๋ ๋ฐ๋ชฌ์ด๋ค. ๊ทธ ๋ค์ ํด๋ฌ์คํฐ์ ๋ชจ๋ ๋
ธ๋์ ํด๋นํ๋ NodeResouceTopology CR์ ์์ฑํ๋ nfd-master์ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ค. nfd-topology-updater์ ํ ๊ฐ ์ธ์คํด์ค๋ ํด๋ฌ์คํฐ์ ๊ฐ ๋
ธ๋์์ ์คํ ๋์ด์ผ ํ๋ค.
https://github.com/kubernetes-sigs/node-feature-discovery
๊ฐ๋ฐ๊ณผ ์ด์ ๊ณผ์ ์์ ์ปจํ ์ด๋์ ์ฐ๊ฒฐ, ํธ๋ํฝ ๊ด๋ฆฌ, ๋ชจ๋ํฐ๋ง ๋ฐ ๋ณด์๊ณผ ๊ฐ์ ์ค์์ปจํธ๋กค๋ฌ ์ญํ ์ ํ๋๋ก ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์์ ๊ตฌ์ฑ ๊ฐ๋ฅํ ์๋น์ค ๋ฉ์ ํด์ด๋ค.
Public Cloud ํ๊ฒฝ์ K8s Web Application ๋ฐฐํฌ์์, ์ธ๋ถ์์ ์ ๊ทผํ ์ ์๋๋ก Ingress Controller๋ฅผ ์ฌ์ฉํ๋ค. ์ฌ๋ฌ ๊ฐ์ ์๋น์ค๋ฅผ ๋ ธ์ถํด์ผ ํ๋ ์ํฉ์์, ๋ชจ๋ Service๋ฅผ Loadbalancer ํ์ ์ผ๋ก ์์ฑํ๊ธฐ์ ๋น์ฉ๊ณผ ํฉ์ด์ง Entrypoint ๋ฑ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Ingress Controller๋ฅผ ์ต์ ์ ์ ๋๊ณ Ingress Rule์ ์ถ๊ฐํ์ฌ Hostname๊ณผ Path์ ๋ฐ๋ผ ์ง์ ๋ ์๋น์ค๋ก Routingํ ์ ์๋ค. ๋ค๋ง K8s์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ์ง ์๊ณ Third-party App(ex: ALB, Nginx, Traefik)์ ํตํด ์ด๋ฌํ ๊ธฐ๋ฅ์ด ์ ๊ณต๋๋ค.
Istio๋ ์ฌ๊ธฐ์ ํ์ธต ๋ ๋ฐ์ ํด Service Mesh์ ๊ฒฝ๊ณ์์ Inbound/Outbound ํธ๋ํฝ์ ์ฒ๋ฆฌํ ์ ์๋ Loadbalancer๋ฅผ ์ ๊ณตํ๋ฉฐ, ์ด๋ฅผ 'Gateway'๋ผ๋ Istio Resource๋ก ์ค์ ํ ์ ์๋ค.
(์คํ์์ค์ด๋ฏ๋ก ์ด๋ค ํด๋ฌ์คํฐ ์ํํธ์จ์ด์์๋ ์คํํ ์ ์์ง๋ง, ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ use case๋ ์ฟ ๋ฒ๋คํฐ์ค์์์ ์ฌ์ฉ์ด๋ค.)
Istio๋ ์จํ๋ ๋ฏธ์ค, ํด๋ผ์ฐ๋ ํธ์คํ ,ย k8s ์ปจํ ์ด๋, ๊ฐ์ ๋จธ์ ์์ ์คํ๋๋ ์๋น์ค ๋ฑ ๋ค์ํ ํ๊ฒฝ์์ ๊ตฌ๋๋๋๋ก ์ค๊ณ๋์๋ค.
๐คย ์๋น์ค ๋ฉ์ : ๋ณด์, ๋ก๋๋ฐธ๋ฐ์ฑ, ๋ชจ๋ํฐ๋ง, HealthCheck, ์ํท ๋ธ๋ ์ด์ปค, ํธ๋ํฝ ์ฒ๋ฆฌ ๋ก์ง ๋ฑ ์๋น์ค๊ฐ์ ํต์ ์ ์ธํ๋ผ ๋ด๋ถ์์ ์ถ์ํ๋ฅผ ํตํด ๊ธฐ๋ฅ ์ ๊ณต ํ๋ ๊ฒ์ ์๋น์ค ๋ฉ์๋ผ๊ณ ํ๋ค.
๊ฒฝ๋ ๋ฐ์ดํฐ ์ ์ก๊ธฐ.
๋ง์ ์ ํ๋ฆฌ์ผ์ด์ ๋ค์ด ์์ฑํ๋ ๋ก๊ทธ ํ์ผ๋ค์ ํ๋์ ์๋ฒ์ ์ผ์ผ์ด ssh ํฐ๋ฏธ๋์ ์ด์ฉํด ๋ก๊ทธ ํ์ผ์ ์์งํ๋ ๊ฒ์ ๋นํฉ๋ฆฌ์ ์ด๋ค. ์ด์ ๋ก๊ทธ ๋ฐ ํ์ผ์ ๊ฒฝ๋ํ๋ ๋ฐฉ์์ผ๋ก ์ ๋ฌํ๊ณ , ์ค์ ์ง์คํ ํ์ฌ ์์ ์ ๋ณด๋ค ๊ฐํธํ๊ฒ ๋ง๋ค์ด์ฃผ๋ producer์ธ Filebeat๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
Filebeat๋ ์ง์ ํ ๋ก๊ทธ ํ์ผ ๋๋ ์์น๋ฅผ ๋ชจ๋ํฐ๋งํด ๋ก๊ทธ ์ด๋ฒคํธ๋ฅผ ์์งํ๊ณ , ๋ค์ ์ธ๋ฑ์ฑ์ ์ํด Elasticsearch ๋๋ Logstash(๋ค์ํ ํ๋ฌ๊ทธ์ธ์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์์ง)๋ก ์ ๋ฌํ๋ค.
์๊ณ์ด ๋ฐ์ดํฐ์ ๋ํ ๋์๋ณด๋๋ฅผ ์ ๊ณตํด์ฃผ๋ ์คํ์์ค ๋ฉํธ๋ฆญ ๋ฐ์ดํฐ ์๊ฐํ ๋๊ตฌ.
๋ค์ํ DB๋ฅผ ์ฐ๊ฒฐํ์ฌ DB ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์๊ฐํํ ์ ์์ผ๋ฉฐ, ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ๋ ๊ฐ๋จํ ๋ง์ฐ์ค ํด๋ฆญ์ผ๋ก ์๋ฃํ ์ ์๋ค.
๋ค์ํ ํ๋ฌ๊ทธ์ธ์ด ์์ด ๋ด๋ถ์ ์ผ๋ก ์ฝ๊ฒ ๊ธฐ๋ฅ ํ์ฅ๋ ๊ฐ๋ฅํ๋ค.
NIVIDIA์์ ์ ๊ณตํ๋ Tesla ์๋ฆฌ์ฆ์ ๊ทธ๋ํฝ ์นด๋๋ฅผ ์ฅ์ฐฉํ ํด๋ฌ์คํฐ ๋๋ ๋ฐ์ดํฐ์ผํฐ ํ๊ฒฝ์์ ๋น๊ต์ ๊ฐ๋ฒผ์ด cost๋ก GPU๋ฅผ ๋ชจ๋ํฐ๋งํ๊ฒ ํด์ฃผ๋ ์ญํ ์ ํ๋ค.
GPU ๋ฉํธ๋ฆญ์ ์์งํ๊ณ , ์ํฌ๋ก๋ ๋์์ ์ดํดํ๊ฑฐ๋ ํด๋ฌ์คํฐ์ GPU๋ฅผ ๋ชจ๋ํฐ๋งํ ์ ์๋ NVIDIA DCGM์ ๋ํ Go API๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋๊ตฌ. Prometheus์ ๊ฐ์ ๋ชจ๋ํฐ๋ง ์๋ฃจ์ ์ ์ํด HTTP ์๋ํฌ์ธํธ์์ GPU ๋ฉํธ๋ฆญ์ ๋ ธ์ถํ๋ค.
๋ ๋ฆฝ์ ์ผ๋ก ์ปจํ ์ด๋์์ ์คํํ๊ฑฐ๋, k8s ํด๋ฌ์คํฐ์ GPU ๋ ธ๋์ ๋ฐ๋ชฌ ์ธํธ๋ก ๋ฐฐํฌํ ์ ์๋ค.
์ฟ ๋ฒ๋คํฐ์ค ์์์ ๋์ํ๋ workflow engine์ด๋ค. ์ํฌ ํ๋ก์ฐ๋ ์์ ์ ํ๋ฆ์ผ๋ก์, ๊ธฐ๊ณ ํ์ต์ด๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํด ์ปดํจํ ์ง์ฝ์ ์ธ ์์ ์ ๋จ์๊ฐ์ ์คํํ ์ ์๋๋ก ํด์ค๋ค. ์ฟ ๋ฒ๋คํฐ์ค CRD(Custom Resource Definition)์ผ๋ก ๊ตฌํ๋๋ค.
์ํ๋ Job์ ๊ตฌ์ฑํด ๊ฐ Job๊ฐ์ ์ข ์์ฑ์ ๋ถ์ฌํ๊ณ ์์๋๋ก ์คํํ ์ ์๋ค. ๋ํ ๋ณ๋ ฌ๋ก ์ฌ๋ฌ Job์ ๋์์ ์คํํ ์๋ ์๋ค.