Kubernetes: RC ๋ฐ Pod์—์„œ Pod ์ง€์ • ์‹œ log-driver ๋ฐ log-opt ์ •์˜

์— ๋งŒ๋“  2015๋…„ 10์›” 12์ผ  ยท  117์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: kubernetes/kubernetes

RC ๋ฐ Pod์—์„œ Pod ์ •์˜๋ฅผ ์ง€์ •ํ•  ๋•Œ ๋‹ค์Œ ์˜ต์…˜์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

--log-driver= ์ปจํ…Œ์ด๋„ˆ์šฉ ๋กœ๊น… ๋“œ๋ผ์ด๋ฒ„
--log-opt=[] ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„ ์˜ต์…˜

์ด๋Ÿฌํ•œ ์˜ต์…˜์€ ์ปจํ…Œ์ด๋„ˆ ์ˆ˜์ค€์—์„œ ์„ค์ • ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋ฉฐ Docker 1.8๊ณผ ํ•จ๊ป˜ ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

docker client lib๋Š” ๋‘ ์˜ต์…˜์„ ๋ชจ๋‘ ์ง€์›ํ•˜๊ณ  ์ด๋Ÿฌํ•œ ์˜ต์…˜์„ ํฌ๋“œ ์ •์˜์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์ด์ œ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

areapi arelogging kinfeature lifecyclrotten needs-triage sinode

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š”,
์ด๊ฒƒ์ด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
Docker์˜ ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ช‡ ๊ฐ€์ง€ ์‚ฌ์†Œํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋””์Šคํฌ์— ๋กœ๊น…ํ•˜๋Š” ๊ฒƒ์€ ๋ฐ˜ํŒจํ„ด์ด๋ผ๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ๋Š” ๋ณธ์งˆ์ ์œผ๋กœ "์ƒํƒœ"์ด๋ฉฐ ๋””์Šคํฌ์— ์ €์žฅํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ๋ฅผ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ €์žฅ์†Œ๋กœ ์ง์ ‘ ์ „๋‹ฌํ•˜๋ฉด ๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์„ค์ •ํ•˜๋ฉด kubectl logs ๋ช…๋ น์ด ๋” ์ด์ƒ ์•„๋ฌด ๊ฒƒ๋„ ํ‘œ์‹œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์ด ๊ธฐ๋Šฅ์€ "์žˆ์œผ๋ฉด ์ข‹์€" ๊ธฐ๋Šฅ์ด์ง€๋งŒ ๋‹ค๋ฅธ ์†Œ์Šค์—์„œ ๋กœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์ด ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Docker์—๋Š” ์ด๋ฏธ google ํด๋ผ์šฐ๋“œ(gcplogs) ๋ฐ Amazon(awslogs)์šฉ ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Docker ๋ฐ๋ชฌ ์ž์ฒด์—์„œ ์„ค์ •ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ๋งŽ์€ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๊ฐ€์ง€ ๋„์ปค ์˜ต์…˜์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

--log-driver= ์ปจํ…Œ์ด๋„ˆ์šฉ ๋กœ๊น… ๋“œ๋ผ์ด๋ฒ„
--log-opt=[] ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„ ์˜ต์…˜

๋ ˆ์ด๋ธ”(gcplogs์˜ ๊ฒฝ์šฐ) ๋˜๋Š” awslogs-group(awslogs์˜ ๊ฒฝ์šฐ)์„ ํ•จ๊ป˜ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํฌ๋“œ์— ํŠน์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋‹ค๋ฅธ ์ชฝ ๋์— ์žˆ๋Š” ๋กœ๊ทธ๋ฅผ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์ด kubernetes์—์„œ ๋กœ๊ทธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋กœ๊ทธ๋ฅผ ์ค‘์•™ ์‹œ์Šคํ…œ์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ์ •๊ตํ•œ ์Šคํฌ๋ ˆ์ดํผ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋” ํฅ๋ฏธ๋กœ์šด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์‹œ๊ฐ„์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. :)

๋ชจ๋“  117 ๋Œ“๊ธ€

/ cc @ kubernetes / rh-cluster-infra

ํ , ์šฐ๋ฆฌ๋Š” ์•„๋งˆ๋„ ์ด ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ํŠน์ • ํฌ๋“œ ์ •์˜๋ฅผ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

cc @sosiouxme @smarterclayton @liggitt @jwhonce @jcantrill @bparees @jwforres

์ปจํ…Œ์ด๋„ˆ๋ณ„๋กœ(์‚ฌ์šฉ ์‚ฌ๋ก€) ์ด๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ์ „ํ†ต์ ์œผ๋กœ ๋Ÿฐํƒ€์ž„ ์ „๋ฐ˜์— ๊ฑธ์ณ ๊น”๋”ํ•˜๊ฒŒ ์ถ”์ƒํ™”๋  ์ˆ˜ ์—†๋Š” ํ•œ Docker ํŠน์ • ์˜ต์…˜์„ ์ปจํ…Œ์ด๋„ˆ์— ์ง์ ‘ ๋…ธ์ถœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€์ง€ ์•Œ๋ฉด ๊ทธ๊ฒƒ์„ ์ •๋‹นํ™”ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชฉ๋ก์ด ํ™•์žฅ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๋„์ปค ๋กœ๊ทธ๋Š” ์—ฌ์ „ํžˆ json-file ๋ฐ journald ๋“œ๋ผ์ด๋ฒ„๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์ œ๋กœ ์›ํ•˜๋Š” ๊ฒƒ์€ ๋กœ๊น… ๋“œ๋ผ์ด๋ฒ„ ์„ธ๋ถ€ ์ •๋ณด์— ๋…ธ์ถœ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ •์˜๋œ ๋กœ๊ทธ ์“ฐ๊ธฐ ๋์ ์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@ncdc @smarterclayton ๋‘˜ ๋‹ค ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์žฌ๊ณ ํ•œ ๊ฒฐ๊ณผ

  1. ์šฐ๋ฆฌ์˜ ์ฃผ์š” ์š”๊ตฌ ์‚ฌํ•ญ์€ ๋…ธ๋“œ๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋กœ๊ทธ๋ฅผ ๋กœ๊ทธ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด์ง€๋งŒ ์‹คํŒจํ•˜๋ฉด ๋„์ปค ๋‚ด๋ถ€ ๋กœ๊ทธ์— ๋Œ€์ฒด ๋กœ๊ทธ๋ฅผ ๋‚จ๊น๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ๋…ธ๋“œ ํฌํ™”๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ๋„์ปค ๋กœ๊ทธ์— ๋Œ€ํ•œ ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด ๋™์ž‘์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  2. @smarterclayton์ด ์ œ์•ˆํ•œ ๊ฒƒ์ฒ˜๋Ÿผ pod/Rc ์ •์˜์—์„œ ํŠน์ • ๋„์ปค ์˜ต์…˜์„ ๋…ธ์ถœํ•˜๋Š” ๊ฒƒ์€ ์ข‹์€ ์ƒ๊ฐ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ๋†’์€ ์ˆ˜์ค€์˜ ๋กœ๊ทธ ๋™์ž‘์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ์ถ”์ƒํ™”์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.
  3. ๋˜ ๋‹ค๋ฅธ ์˜ต์…˜์€ ์ด๋Ÿฌํ•œ ๋กœ๊ทธ ๋™์ž‘์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด kubelet ๊ตฌ์„ฑ ํŒŒ์ผ ๋ฐ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์†”ํŠธ ํ…œํ”Œ๋ฆฟ์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
๋”์ฐํ•˜๊ฒŒ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ •๋ง๋กœ ์ ์ ˆํ•œ ๋ฐ๋ชฌ ๊ตฌ์„ฑ์ž…๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ 
๋‹ค์Œ์„ ํ†ตํ•ด fluentd๋ฅผ ํ†ตํ•ด ๋กœ๊ทธ ์ง‘๊ณ„์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
๋‹ค๋ฅธ ์†Œ์Šค ์„ ํƒ)

2015๋…„ 10์›” 13์ผ ํ™”์š”์ผ ์˜ค์ „ 10:55 Epo Jemba [email protected]
์ผ๋‹ค:

@ncdc https://github.com/ncdc @smarterclayton
https://github.com/smarterclayton ๋‘ ๋ถ„ ๋ชจ๋‘ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.
๋‚ด๋ถ€ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์žฌ๊ณ ํ•ด ๋ณด๋ฉด

  1. ์šฐ๋ฆฌ์˜ ์ฃผ์š” ์š”๊ตฌ ์‚ฌํ•ญ์€ ๋…ธ๋“œ๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋กœ๊ทธ๋ฅผ ๋กœ๊ทธ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
    ์„œ๋ฒ„์— ์‹คํŒจํ•˜๋ฉด ๋„์ปค ๋‚ด๋ถ€ ๋กœ๊ทธ์— ํด๋ฐฑ์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ์˜
    ์ด ๊ฒฝ์šฐ ๋…ธ๋“œ ํฌํ™”๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํด๋Ÿฌ์Šคํ„ฐ ์ „๋ฐ˜์— ๊ฑธ์นœ ๋™์ž‘์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
    ๋„์ปค ๋กœ๊ทธ
  2. pod/Rc ์ •์˜์—์„œ ํŠน์ • ๋„์ปค ์˜ต์…˜์„ ๋…ธ์ถœํ•˜๋Š” ๊ฒƒ์€
    @smarterclayton https://github.com/smarterclayton ์œผ๋กœ ์ข‹์€ ์•„์ด๋””์–ด
    ์ œ์•ˆํ–ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ๋†’์€ ์ •์˜๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ์ถ”์ƒํ™”์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.
    ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ๋ ˆ๋ฒจ ๋กœ๊ทธ ๋™์ž‘
  3. ๋˜ ๋‹ค๋ฅธ ์˜ต์…˜์€ kubelet ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•˜๊ณ 
    ์ด๋Ÿฌํ•œ ๋กœ๊ทธ ๋™์ž‘์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/kubernetes/kubernetes/issues/15478#issuecomment -147740136
.

:์—„์ง€์†๊ฐ€๋ฝ:

์ด์ œ 9๊ฐœ์˜ ๋กœ๊น… ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ํ•ฉ์˜๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

+1

๋ชจ๋ฅด๋Š” ์‚ฌ๋žŒ์ด ์žˆ์„ ๊ฒฝ์šฐ Docker ๋ฐ๋ชฌ( --log-driver )์— ๋Œ€ํ•œ ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋…ธ๋“œ๋ณ„๋กœ ๊ธฐ๋ณธ ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ ํ™˜๊ฒฝ์—์„œ๋Š” ์ด๋Ÿฐ ์‹์œผ๋กœ ๋“œ๋ผ์ด๋ฒ„๋ฅผ journald ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ •์งํ•˜๊ฒŒ ์ปจํ…Œ์ด๋„ˆ๋ณ„๋กœ ์ด๊ฒƒ์„ ์žฌ์ •์˜ํ•˜๋Š” ์œ ์Šค ์ผ€์ด์Šค๋ฅผ ์ƒ๊ฐํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ๊ตฐ๋ถ„ํˆฌํ•ฉ๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ํด๋Ÿฌ์Šคํ„ฐ๋ง์€ ๋กœ๊ทธ๊ฐ€ "๋Œ€์—ญ ์™ธ"๊ฐ€ ๋˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด๊ฒƒ์ด ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋˜ํ•œ ์šด์˜ ์ธก๋ฉด์—์„œ ํ†ต์ œ๋ ฅ ์ƒ์‹ค์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•˜๊ณ  ์ง‘๊ณ„ํ•  ๋กœ๊น… ์Šคํƒ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์— +1.
๋„์ปค ๋กœ๊น…์ด ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฐฉ์‹์„ ์ œ์–ดํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์€ ์œ ์ผํ•œ ์ •์ƒ์ ์ธ ๋กœ๊น… ์˜ต์…˜์ด k8๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž„์„ ์˜๋ฏธํ•˜๋ฉฐ, ์ด๋Š” ๋†€๋ผ์šด ํ•œ๊ณ„์ž…๋‹ˆ๋‹ค.

@timothysc๋Š” ์—ฌ๊ธฐ์— ์šฐ๋ฆฌ์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋กœ๊ทธ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ธฐ ์œ„ํ•œ ์ž์ฒด logstash ์™€ ํ•จ๊ป˜ ๋งŽ์€ ๊ธฐ์กด ์„œ๋น„์Šค๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋ณต์žกํ•œ ๋™์  ์ธํ”„๋ผ(๋จธ์‹  100๋Œ€)๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธ€์Ž„, ์šฐ๋ฆฌ๋Š” ์ด์ œ ์šฐ๋ฆฌ์˜ ์„œ๋น„์Šค๋ฅผ ํ•˜๋‚˜์”ฉ k8๋กœ ์˜ฎ๊ธฐ๋ ค๊ณ  ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ k8์— ํด๋Ÿฌ์Šคํ„ฐ๋ง๋œ ์ปจํ…Œ์ด๋„ˆ์™€ ๊ธฐ์กด ์ธํ”„๋ผ ์‚ฌ์ด์— ๋กœ๊น…์„ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ํ™•์‹คํ•œ ๋ฐฉ๋ฒ•์ด ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

K8S๋Š” ๋กœ๊ทธ ์ˆ˜์ง‘ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋งค์šฐ ๋…๋‹จ์ ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‹จ์ˆœํ•œ ์ธํ”„๋ผ์—์„œ ์ฒ˜์Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์‚ฌ๋žŒ์—๊ฒŒ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ์ธํ”„๋ผ์—์„œ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊นŠ์ด ํŒŒ๊ณ ๋“ค๊ณ  ์‚ฌ์šฉ์ž ์ง€์ • ๋กœ๊น… ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํ˜„์žฌ๋กœ์„œ๋Š” ์ด๋ฅผ ์ˆ˜ํ–‰ํ•  ๋ฐฉ๋ฒ•์ด ์—†์œผ๋ฉฐ ์ด๋Š” ๋งค์šฐ ์‹ค๋ง์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

๋ฐ”๋ผ๊ฑด๋Œ€, ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ๋กœ๊ทธ๋Š” ์‹ค์ œ๋กœ "์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๋ณ„"์ด์ง€๋งŒ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ๋ณธ ํ˜ธ์ŠคํŠธ๊ฐ€ ํ•ด๋‹น ๋กœ๊ทธ๋ฅผ ์ง€์›ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ๊ฑฑ์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์„œ ๋…ผ์˜ - ํด๋Ÿฌ์Šคํ„ฐ ์ˆ˜์ค€ ๋˜๋Š” ๋…ธ๋“œ ์ˆ˜์ค€์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ
ํฌ๋“œ ์ˆ˜์ค€์ธ ๊ฒฝ์šฐ ์Šค์ผ€์ค„๋Ÿฌ๋Š” ์–ด๋–ค ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„๊ฐ€
์–ด๋””์— ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฐ€๋Šฅํ•œ ํ•œ ๊ทธ๊ฒƒ์„ ํ”ผํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

2016๋…„ 5์›” 23์ผ ์›”์š”์ผ ์˜ค์ „ 10์‹œ 50๋ถ„, Jacopo Nardiello < [email protected]

์ผ๋‹ค:

์ด๊ฒƒ์— +1.
๋„์ปค ๋กœ๊น…์ด ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฐฉ์‹์„ ์ œ์–ดํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์€
์ •์ƒ์ ์ธ ๋กœ๊น… ์˜ต์…˜์€ k8s์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋†€๋ผ์šด ํ•œ๊ณ„.

@timothysc https://github.com/timothysc ์—ฌ๊ธฐ ์šฐ๋ฆฌ์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€. ์šฐ๋ฆฌ๋Š”
๊ธฐ์กด์˜ ๋งŽ์€ ๋ณต์žกํ•œ ๋™์  ์ธํ”„๋ผ (~ 100 ๋จธ์‹ )
๋กœ๊ทธ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ธฐ ์œ„ํ•ด ์ž์ฒด logstash๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ธ€์Ž„, ์šฐ๋ฆฌ๋Š”
์ด์ œ ์šฐ๋ฆฌ ์„œ๋น„์Šค๋ฅผ ํ•˜๋‚˜์”ฉ k8๋กœ, ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ณณ์—์„œ ๋‚˜์—๊ฒŒ ์˜ฎ๊ธฐ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
์šฐ๋ฆฌ์˜ ๊ธฐ์กด
k8์— ํด๋Ÿฌ์Šคํ„ฐ๋ง๋œ ์ธํ”„๋ผ ๋ฐ ์ปจํ…Œ์ด๋„ˆ.

K8S๋Š” ๋กœ๊ทธ ์ˆ˜์ง‘ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋งค์šฐ ๋…๋‹จ์ ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ›Œ๋ฅญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹จ์ˆœํ•œ ์ธํ”„๋ผ์—์„œ ์ฒ˜์Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์‚ฌ๋žŒ์„ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„์œ„ํ•œ
๋ณต์žกํ•œ ์ธํ”„๋ผ์—์„œ ์ž‘์—…ํ•˜๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์€
์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ณ  ์‚ฌ์šฉ์ž ์ •์˜ ๋กœ๊น… ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด
ํ˜„์žฌ๋กœ์„œ๋Š” ๋งค์šฐ ์‹ค๋ง์Šค๋Ÿฌ์šด ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋ฐ”๋ผ๊ฑด๋Œ€, ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/kubernetes/kubernetes/issues/15478#issuecomment -221002545

@smarterclayton ๊ท€ํ•˜์˜ ์šฐ๋ ค ์‚ฌํ•ญ์„ ์ดํ•ดํ•˜๋ฉฐ ์ž˜ ๋ฐฐ์น˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒด ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ํฌ๋“œ ์ˆ˜์ค€ ๋กœ๊น…์˜ ์กด์žฌ๋ฅผ ์ธ์‹ํ•ด์•ผ ํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์€ ํฌ๋“œ stdout/stderr์„ ์–ด๋”˜๊ฐ€์— ๊ธฐ๋กํ•˜๋Š” ์˜ต์…˜์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(ํ˜„์žฌ ํฌ๋“œ ์ด๋ฆ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ํŒŒ์ผ?) ์‚ฌ์šฉ์ž ์ง€์ • ์†”๋ฃจ์…˜์„ ๊ตฌํ˜„ํ•˜๋ ค๋Š” ์‚ฌ๋žŒ์€ ๋ˆ„๊ตฌ๋‚˜ ์ฝ˜ํ…์ธ ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์˜๊ตฌ์ ์ธ ์œ„์น˜๋ฅผ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ logrotation์ด ์‚ฌ์†Œํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฐ๋Œ€ํ•œ ์ฑ•ํ„ฐ๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚ด 2์„ผํŠธ์— ๋ถˆ๊ณผํ•˜์ง€๋งŒ ์‹ค์ œ ๋ณต์žกํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ๊ธฐ์กด ๋กœ๊น… ์ธํ”„๋ผ๋ฅผ ํฌ๊ธฐํ•˜๋Š” ์ฒ™ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋ณ„๋กœ ์‚ฌ์šฉ์ž ์ •์˜ ๋กœ๊ทธ ์˜ต์…˜์„ ์ง€์ •ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ์–ผ๋งˆ๋‚˜ ๋‹ค๋ฅธ
ํด๋Ÿฌ์Šคํ„ฐ๋‹น ๋กœ๊ทธ ์˜ต์…˜ ์„ธํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ž‘์€ ์„ธํŠธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ
config์—์„œ ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํฌ๋“œ์—์„œ ์ฃผ์„์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋งŽ์€ "ํ‘œ์ค€ ๋กœ๊ทธ
options". ์ฆ‰, kubelet ์‹œ์ž‘ ์‹œ๊ฐ„์— "๋กœ๊ทธ ๋ชจ๋“œ X"๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค(์ด๋Š”
์‚ฌ์šฉ์ž ์ง€์ • ๋กœ๊ทธ ์˜ต์…˜ ๋ฐ ๋“œ๋ผ์ด๋ฒ„), ํฌ๋“œ๋Š” "
pod.alpha.kubernetes.io/log.mode=X".

๋˜ ๋‹ค๋ฅธ ์˜ต์…˜์€ ๋ฐฐํฌ์ž๊ฐ€
์‹œ์ž‘ํ•˜๊ธฐ ์ง์ „์— ์ปจํ…Œ์ด๋„ˆ ์ •์˜๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ
์ปจํ…Œ์ด๋„ˆ. ์˜ค๋Š˜์€ ์ง๋ ฌํ™”ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
docker def๋ฅผ ์ค‘๊ฐ„ ํ˜•์‹์œผ๋กœ ๋งŒ๋“ค๊ณ  ์‹คํ–‰ํ•œ ๋‹ค์Œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ ์•ž์œผ๋กœ๋Š” ๋” ์‰ฌ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ ์ธํ„ฐํŽ˜์ด์Šค์— ํ‚ค ๊ฐ’ ์Œ์„ ๋…ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ปจํ…Œ์ด๋„ˆ ์—”์ง„์— ์ง์ ‘ ์ „๋‹ฌ๋˜๋ฉฐ
๊ทธ๋ฆฌ๊ณ  PodSecurityPolicy๊ฐ€ ์ด๋Ÿฌํ•œ ์˜ต์…˜์„ ๊ทœ์ œํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿด ๊ฒƒ์ด๋‹ค
๋ฐœ์‹ ์ž๋ฅผ ์œ„ํ•œ ํƒˆ์ถœ๊ตฌ ์—ญํ• ์„ ํ•˜์ง€๋งŒ,
๋ฆด๋ฆฌ์Šค ๊ฐ„์— ๊ณ„์† ์ž‘๋™ํ•˜๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

2016๋…„ 5์›” 26์ผ ๋ชฉ์š”์ผ ์˜ค์ „ 5:34 Jacopo Nardiello [email protected]
์ผ๋‹ค:

@smarterclayton https://github.com/smarterclayton ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค
๋‹น์‹ ์˜ ๊ด€์‹ฌ์‚ฌ์™€ ๊ทธ๊ฒƒ๋“ค์€ ์ž˜ ๋ฐฐ์น˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒด ํด๋Ÿฌ์Šคํ„ฐ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
ํฌ๋“œ ์ˆ˜์ค€ ๋กœ๊น…์˜ ์กด์žฌ๋ฅผ ์ธ์‹ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
ํ•ด์•ผ ํ•  ์ผ์€ pod stdout/stderr์„ ์–ด๋”˜๊ฐ€์— ๊ธฐ๋กํ•˜๋Š” ์˜ต์…˜์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(ํŒŒ์ผ
ํ˜„์žฌ ํฌ๋“œ ์ด๋ฆ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ?)
์‚ฌ์šฉ์ž ์ง€์ • ์†”๋ฃจ์…˜์—๋Š” ์ฝ˜ํ…์ธ ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์œ„์น˜๊ฐ€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ logrotation์ด ์‚ฌ์†Œํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฐ๋Œ€ํ•œ ์ฑ•ํ„ฐ๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚ด 2์„ผํŠธ์— ๋ถˆ๊ณผํ•˜์ง€๋งŒ ์‹ค์ œ ๋ณต์žกํ•œ ์ฒ™ ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.
์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ๊ธฐ์กด ๋กœ๊น… ์ธํ”„๋ผ๋ฅผ ํฌ๊ธฐํ•ฉ๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/kubernetes/kubernetes/issues/15478#issuecomment -221823732

@smarterclayton ๋ณด์…จ๋‚˜์š” https://github.com/kubernetes/kubernetes/issues/24677#issuecomment -220735829

๊ณ ๋ง™์ง€ ๋งŒ ์‚ฌ์–‘ ํ• ๊ฒŒ. ๊ฑฐ๊ธฐ์— ํ† ๋ก ์„ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

2016๋…„ 5์›” 26์ผ ๋ชฉ์š”์ผ ์˜ค์ „ 11์‹œ 23๋ถ„, Andy Goldstein ์•Œ๋ฆผ @github.com
์ผ๋‹ค:

@smarterclayton https://github.com/smarterclayton ๋ณด์…จ๋‚˜์š” #24677
(๋…ผํ‰)
https://github.com/kubernetes/kubernetes/issues/24677#issuecomment -220735829

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/kubernetes/kubernetes/issues/15478#issuecomment -221903781

์•ˆ๋…•ํ•˜์„ธ์š”,
์ด๊ฒƒ์ด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
Docker์˜ ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ช‡ ๊ฐ€์ง€ ์‚ฌ์†Œํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋””์Šคํฌ์— ๋กœ๊น…ํ•˜๋Š” ๊ฒƒ์€ ๋ฐ˜ํŒจํ„ด์ด๋ผ๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ๋Š” ๋ณธ์งˆ์ ์œผ๋กœ "์ƒํƒœ"์ด๋ฉฐ ๋””์Šคํฌ์— ์ €์žฅํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ๋ฅผ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ €์žฅ์†Œ๋กœ ์ง์ ‘ ์ „๋‹ฌํ•˜๋ฉด ๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์„ค์ •ํ•˜๋ฉด kubectl logs ๋ช…๋ น์ด ๋” ์ด์ƒ ์•„๋ฌด ๊ฒƒ๋„ ํ‘œ์‹œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์ด ๊ธฐ๋Šฅ์€ "์žˆ์œผ๋ฉด ์ข‹์€" ๊ธฐ๋Šฅ์ด์ง€๋งŒ ๋‹ค๋ฅธ ์†Œ์Šค์—์„œ ๋กœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์ด ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Docker์—๋Š” ์ด๋ฏธ google ํด๋ผ์šฐ๋“œ(gcplogs) ๋ฐ Amazon(awslogs)์šฉ ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Docker ๋ฐ๋ชฌ ์ž์ฒด์—์„œ ์„ค์ •ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ๋งŽ์€ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๊ฐ€์ง€ ๋„์ปค ์˜ต์…˜์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

--log-driver= ์ปจํ…Œ์ด๋„ˆ์šฉ ๋กœ๊น… ๋“œ๋ผ์ด๋ฒ„
--log-opt=[] ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„ ์˜ต์…˜

๋ ˆ์ด๋ธ”(gcplogs์˜ ๊ฒฝ์šฐ) ๋˜๋Š” awslogs-group(awslogs์˜ ๊ฒฝ์šฐ)์„ ํ•จ๊ป˜ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํฌ๋“œ์— ํŠน์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋‹ค๋ฅธ ์ชฝ ๋์— ์žˆ๋Š” ๋กœ๊ทธ๋ฅผ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์ด kubernetes์—์„œ ๋กœ๊ทธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋กœ๊ทธ๋ฅผ ์ค‘์•™ ์‹œ์Šคํ…œ์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ์ •๊ตํ•œ ์Šคํฌ๋ ˆ์ดํผ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋” ํฅ๋ฏธ๋กœ์šด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์‹œ๊ฐ„์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. :)

๋˜ํ•œ ์ €๋ฅผ ํฌํ•จํ•œ ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์€ ํ˜ธ์ŠคํŠธ์—์„œ logrotate๋ฅผ ์„ค์ •ํ•˜๋Š” ๋Œ€์‹  JSON ๋กœ๊น… ๋“œ๋ผ์ด๋ฒ„(docker์— ๊ธฐ๋ณธ)์—์„œ '--log-opt max-size' ์˜ต์…˜์„ ํ†ตํ•ด ๋„์ปค ๋กœ๊ทธ ํšŒ์ „์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๊ณ  ๋ง๋ถ™์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ '--log-opt' ์˜ต์…˜๋งŒ ๋…ธ์ถœํ•ด๋„ ํฌ๊ฒŒ ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ ๊ตฌ์„ฑ LogConfig๋ฅผ ์ƒ์„ฑํ•  ๋•Œ k8์„ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

+1
์ค‘์•™ ์ง‘์ค‘์‹ ๋กœ๊ทธ ์ˆ˜์ง‘์„ ์œ„ํ•ด ๋„์ปค ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋กœ๊ทธ ํŒŒ์ผ์— ๋Œ€ํ•œ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ํŠน๋ณ„ํ•œ fluentd ์ปจํ…Œ์ด๋„ˆ์— ๋งˆ์šดํŠธํ•˜๊ณ , ๋กœ๊ทธ๋ฅผ ์ถ”์ ํ•˜๊ณ , ๋กœ๊ทธ ํšŒ์ „์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๊ฐ„๋‹จํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ ๊ตฌ์„ฑ๋ณ„ ์‚ฌ์šฉ ์‚ฌ๋ก€: ๋ฐฐํฌํ•œ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๊ณณ์— ๋˜๋Š” ๋‹ค๋ฅด๊ฒŒ ๊ธฐ๋กํ•˜๊ณ  ์‹ถ๊ณ  Kubernetes๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ํ‘œ์ค€ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•œ ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„๋Š” ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๋˜๋Š” ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค).

๊ฑฐ๊ธฐ ๋‹น์‹ ์ด ๊ฐ„๋‹ค. ์ด๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜๊ฒŒ ํ•ด์ฃผ์„ธ์š”.

๋˜ ๋‹ค๋ฅธ ์•„์ด๋””์–ด๋Š” ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์—ฌ์ „ํžˆ ๋™์ผํ•œ ์—”๋“œํฌ์ธํŠธ๋กœ ๋กœ๊ทธ๋ฅผ ์ „๋‹ฌํ•˜์ง€๋งŒ ๋กœ๊ทธ ์„œ๋ฒ„์˜ ๋Œ€ํ•ด ์ตœ์†Œํ•œ ๋‹ค๋ฅธ ํ•„๋“œ ๊ฐ’์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

Kubernetes์—์„œ ์ƒ์„ฑํ•œ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์— ์‚ฌ์šฉ์ž ์ง€์ • ๋ ˆ์ด๋ธ”์ด ์ง€์ •๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ด๋Š” gelf ๋„์ปค ๋“œ๋ผ์ด๋ฒ„์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์˜๋ฏธ: ์ผ๋ถ€ Pod ํ•„๋“œ๋Š” ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ด๋ธ”๋กœ ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์•„๋งˆ๋„ ์ด๊ฒƒ์€ ์ด๋ฏธ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ์„ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค).

Kubernetes๊ฐ€ ์—†๋Š” ์˜ˆ, docker ๋ฐ๋ชฌ ๋ฐ gelf ๋“œ๋ผ์ด๋ฒ„๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. --log-driver=gelf --log-opt labels=env,label2 ๋„์ปค ๋ฐ๋ชฌ์„ ๊ตฌ์„ฑํ•˜๊ณ  ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

docker run -dti --label env=testing --label label2=some_value alpine:3.4 /bin/sh -c "while true; do date; sleep 2; done"

๋ฐ ๋‹ค๋ฅธ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ:

docker run -dti --label env=production --label label2=some_value alpine:3.4 /bin/sh -c "while true; do date; sleep 2; done"

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด Graylog์—์„œ env=production ์™€ env=testing ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ๋‚˜๋Š” ์ด๋Ÿฌํ•œ ๋„์ปค ๋ฐ๋ชฌ ์˜ต์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

--log-driver=gelf --log-opt gelf-address=udp://graylog.example.com:12201 --log-opt tag=k8s-testing --log-opt labels=io.kubernetes.pod.namespace,io.kubernetes.container.name,io.kubernetes.pod.name

@xmik , ๊ทธ๊ฒƒ์ด ๊ธฐ์กด ๊ธฐ๋Šฅ์ธ์ง€ ๋˜๋Š” ์ด์— ๊ด€ํ•œ ๊ท€ํ•˜์˜ ์ œ์•ˆ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ

ํ˜„์žฌ ๋‚˜๋Š” ์ด๋Ÿฌํ•œ ๋„์ปค ๋ฐ๋ชฌ ์˜ต์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

--log-driver=gelf --log-opt gelf-address=udp://graylog.example.com:12201 --log-opt tag=k8s-testing --log-opt labels=io.kubernetes.pod.namespace,io.kubernetes.container.name,io.kubernetes.pod.name

๋‚ด๊ฐ€ ํ˜„์žฌ ์‚ฌ์šฉํ•˜๋Š” ๋„์ปค ๋ฐ๋ชฌ ์˜ต์…˜์€ ์ด๋ฏธ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. Kubernetes๋Š” ์ด๋ฏธ ๊ฐ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•ด ์ผ๋ถ€ ๋ ˆ์ด๋ธ”์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด kube-apiserver ์ปจํ…Œ์ด๋„ˆ์—์„œ docker inspect ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ:

 "Labels": {
   "io.kubernetes.container.hash": "4959a3f5",
   "io.kubernetes.container.name": "kube-apiserver",
   "io.kubernetes.container.ports": "[{\"name\":\"https\",\"hostPort\":6443,\"containerPort\":6443,\"protocol\":\"TCP\"},{\"name\":\"local\",\"hostPort\":8080,\"containerPort\":8080,\"protocol\":\"TCP\"}]",
   "io.kubernetes.container.restartCount": "1",
   "io.kubernetes.container.terminationMessagePath": "/dev/termination-log",
   "io.kubernetes.pod.name": "kube-apiserver-k8s-production-master-1",
   "io.kubernetes.pod.namespace": "kube-system",
   "io.kubernetes.pod.terminationGracePeriod": "30",
   "io.kubernetes.pod.uid": "a47396d9dae12c81350569f56aea562e"
}

๋”ฐ๋ผ์„œ ํ•ด๋‹น ๋„์ปค ๋ฐ๋ชฌ ์˜ต์…˜์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ๋Š” Kubernetes๊ฐ€ Pod ์‚ฌ์–‘์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์— ์‚ฌ์šฉ์ž ์ง€์ • ๋ ˆ์ด๋ธ”์„ ์„ค์ •ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด --log-driver=gelf --log-opt labels=env,label2 ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ์ „๋ฉด์— ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋ ˆ์ด๋ธ”์„ ์ง€์ •ํ•œ ๋‹ค์Œ --log-opt labels<> ์ด ์žˆ์œผ๋ฉด ๊ฝค ์ข‹์Šต๋‹ˆ๋‹ค!

@portante @jcantrill ์šฐ๋ฆฌ๊ฐ€ ๋…ผ์˜ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์— ์บก์ฒ˜ํ•˜๊ธฐ ์œ„ํ•ด ์ด๊ฒƒ์ด ์œ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋กœ๊ทธ ๊ธฐ๋ก ํŒŸ(Pod)์ด ์˜ค๋ฅ˜๋ฅผ ๋งŒ๋‚˜ ๊ธฐ๋กํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ํ•ด๋‹น ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ์ธํ”„๋ผ๊ฐ€ ์˜ค๋ฅ˜๋ฅผ ํฌ์ฐฉํ•˜์—ฌ ๋‹ค์‹œ ๊ธฐ๋ก ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ํ”ผ๋“œ๋ฐฑํ•˜์—ฌ ๋” ๋งŽ์€ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ณ  ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

์ด ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„๋Š” ํ•„ํ„ฐ๋ง ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”ผํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์•ฝ๊ฐ„ ์ทจ์•ฝํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋กœ๊น… ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์— ๊ธฐ๋กํ•˜๊ณ  ํšŒ์ „ ์˜ต์…˜์„ ๊ฐ–๋Š” ๊ฒƒ์ด ์ข‹์€ ์†”๋ฃจ์…˜์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚ด 2์„ผํŠธ.

k8 ๋‚ด๋ถ€ ๋กœ๊น…์— ๋Œ€ํ•œ ํ˜„์žฌ ์†”๋ฃจ์…˜์€ (AFAIK):

  • ์–ด๋”˜๊ฐ€์— ๋กœ๊ทธ๋ฅผ ๋ณด๋‚ด๋Š” ์‚ฌ์ด๋“œ์นด ์ปจํ…Œ์ด๋„ˆ
  • ๋ชจ๋“  ๋กœ๊ทธ๋ฅผ ์–ด๋”˜๊ฐ€์— ๋ณด๋‚ด๋Š” ๋ณต์ œ ์ปจํŠธ๋กค๋Ÿฌ
  • ์–ด๋”˜๊ฐ€์— ๋กœ๊ทธ๋ฅผ ๋ณด๋‚ด๋Š” ์ปจํ…Œ์ด๋„ˆ ์ž์ฒด

์‚ฌ์ด๋“œ์นด ์ปจํ…Œ์ด๋„ˆ๋Š” ๋‚˜์—๊ฒŒ ๊ณผํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ณต์ œ ์ปจํŠธ๋กค๋Ÿฌ ์ „๋žต์€ ์ข‹์€ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ๋ชจ๋“  ๋ฐฐํฌ์˜ ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ๋ฅผ ํ˜ผํ•ฉํ•˜๊ณ  ์ผ๋ถ€ ์‚ฌ์šฉ์ž๋Š” ์ด์ œ ์ด๋ฅผ ์›ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋Œ€์‹  ๊ฐ ์•ฑ์„ ๋‹ค๋ฅธ ํ•ญ๋ชฉ์— ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋งˆ์ง€๋ง‰ ์˜ต์…˜์ด IMHO์—์„œ ๊ฐ€์žฅ ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ์— ๋ณต์ œ๋˜๋Š” ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ์„ค์น˜ ๋ฐ ์„ค์ • logentries ๋ฐ๋ชฌ).

log-driver ํ”Œ๋ž˜๊ทธ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ด ๋ชจ๋“  ๊ฒƒ์ด ํ›จ์”ฌ ์‰ฌ์šธ ๊ฒƒ์ด๋ฏ€๋กœ ๊ฐ ๋ฐฐํฌ๋Š” ๋„์ปค ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊น… ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

๊ตฌํ˜„์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ kubernetes ์ฝ”๋“œ๋ฒ ์ด์Šค์— ์ต์ˆ™ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋„์›€์ด ํ•„์š”ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฉ€ํ‹ฐ ํ…Œ๋„Œ์‹œ๊ฐ€ ๋” ์ค‘์š”ํ•ด์ง€๋ฉด ์ œ๋Œ€๋กœ ํ•ด๊ฒฐํ•˜๊ธฐ๊ฐ€ ๋” ์–ด๋ ค์›Œ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํ…Œ๋„ŒํŠธ์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฐ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ๋กœ๊ทธ๊ฐ€ ๋ฐ˜๋“œ์‹œ ์ง‘๊ณ„๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ํ…Œ๋„ŒํŠธ ์ง€์ • ์œ„์น˜๋กœ ๋ณด๋‚ผ ์ˆ˜๋Š” ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์ƒˆ๋กœ์šด ๋ณผ๋ฅจ ์œ ํ˜•์ธ container-logs๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํŠน์ • ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ ์‹œ์ž‘ํ•œ ๋ฐ๋ชฌ์…‹์ด ์ž์ฒด ์ปจํ…Œ์ด๋„ˆ์˜ ๋กœ๊ทธ์—๋งŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์„ ํƒํ•œ ์ €์žฅ์†Œ ๋ฐ๋ชฌ์— ๋Œ€ํ•ด ์„ ํƒํ•œ ๋กœ๊ทธ ์ „๋‹ฌ์ž์™€ ํ•จ๊ป˜ ๋กœ๊ทธ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. fluentd-bit์™€ ๊ฐ™์€ ๋กœ๊ทธ ์ „๋‹ฌ์ž ์ค‘ ํ•˜๋‚˜(๋˜๋Š” ๊ทธ ์ด์ƒ)๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ํฌ๋“œ๊ฐ€ ์žˆ๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ฝ๊ณ  ๊ฐ ํฌ๋“œ์˜ ๋กœ๊ทธ๋ฅผ ํ•ด๋‹น ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ ์„œ๋น„์Šค๋กœ ์‹คํ–‰ ์ค‘์ธ ์ถ”๊ฐ€ ๋กœ๊ทธ ์ „๋‹ฌ์ž๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•ฉ๋‹ˆ๋‹ค. ์œ ์ฐฝํ•œ ๊ฒƒ๊ณผ ๊ฐ™์€. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์ง€์›ํ•˜๋ ค๋Š” ๋กœ๊ทธ ๋ฐฑ์—”๋“œ์— ํ‘ธ์‹œํ•˜๋„๋ก ์ž์ฒด ๋กœ๊ทธ ์ „๋‹ฌ์ž๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@caarlos0 @kfox1111 ์š”์ ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ณ„์ธก, ์Šคํ† ๋ฆฌ์ง€, ๋…ธ๋“œ ๋ฐ ๋” ๋งŽ์€ ํŒ€์˜ ์กฐ์ •์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณต์žกํ•œ ์ฃผ์ œ์ž…๋‹ˆ๋‹ค. ์ „์ฒด ๋กœ๊น… ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์ œ์•ˆ์„ ๋จผ์ € ๋ฐฐ์น˜ํ•œ ๋‹ค์Œ ์ด ์ผ๊ด€๋œ ๋ณด๊ธฐ๋กœ ๋ณ€๊ฒฝ๋œ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด ์ œ์•ˆ์ด ํ•œ ๋‹ฌ ์ •๋„ ํ›„์— ๋‚˜ํƒ€๋‚˜์„œ ์งˆ์„œ๋ฅผ ์žก๊ณ  ์–ธ๊ธ‰๋œ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

@crassirostris ์ œ๊ฐ€ ์ดํ•ดํ–ˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. log-driver ๋“ฑ๋งŒ ํ—ˆ์šฉํ•˜๋ฉด ์Šคํ† ๋ฆฌ์ง€ ๋˜๋Š” ๊ทธ ์ค‘ ์–ด๋–ค ๊ฒƒ๋„ ์ฒ˜๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†๊ฒ ์ฃ  ?

๋„์ปค๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค์ •๋œ ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„์— STDOUT์„ ๋ณด๋‚ด๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ์ผ์ข…์˜ ์ฑ…์ž„์„ ์ปจํ…Œ์ด๋„ˆ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค... ์ €์—๊ฒŒ๋Š” ์•„์ฃผ ๊ฐ„๋‹จํ•œ ํ•ด๊ฒฐ์ฑ…์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ œ๊ฐ€ ๋งํ–ˆ๋“ฏ์ด, ์ €๋Š” ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์•„๋งˆ๋„ ์ œ๊ฐ€ ์™„์ „ํžˆ ํ‹€๋ ธ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค...

๋ฌธ์ œ๋Š” docker์˜ ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ๋‚˜์ค‘์— ๋กœ๊ทธ๋ฅผ ์‹ค์ œ๋กœ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” k8s ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. :/

@kfox1111 ํ , ๋ง์ด ๋˜๋„ค์š”...

๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ kubernetes ๋กœ๊ทธ๊ฐ€ ์•„๋‹Œ "์‘์šฉ ํ”„๋กœ๊ทธ๋žจ" ๋กœ๊ทธ๋งŒ ์›ํ•˜๊ณ  docker ๋กœ๊ทธ๊ฐ€ ์•„๋‹Œ ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ ๋‚ด์—์„œ ์‹คํ–‰ ์ค‘์ธ ์•ฑ๋งŒ ์›ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

์ด ๊ฒฝ์šฐ log-driver ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ...

@caarlos0 ๋ช‡ ๊ฐ€์ง€ ์˜๋ฏธ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด kubelet์€ ์„œ๋ฒ„ kubectl ๋กœ๊ทธ์— ๋Œ€ํ•œ ๋กœ๊น… ํ˜•์‹์— ๋Œ€ํ•ด ๋ช‡ ๊ฐ€์ง€ ๊ฐ€์ •์„ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ๊ฒƒ์„ ์ œ์ณ๋‘๊ณ  log-driver ์ž์ฒด๋Š” Docker ์ „์šฉ์ด๋ฉฐ ๋‹ค๋ฅธ ๋Ÿฐํƒ€์ž„์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด API์— ํฌํ•จํ•˜์ง€ ์•Š๋Š” ์ฃผ๋œ ์ด์œ ์ž…๋‹ˆ๋‹ค.

@crassirostris ๋ง์ด ๋˜๋„ค์š”...

์ด ๊ธฐ๋Šฅ์€ ์ถ”๊ฐ€๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ฏ€๋กœ(๋ฌธ์ œ์— ์„ค๋ช…๋œ ๋Œ€๋กœ) ์ด ๋ฌธ์ œ๋ฅผ ๋‹ซ์•„์•ผ ํ•ฉ๋‹ˆ๊นŒ(๋˜๋Š” ํŽธ์ง‘ํ•˜๊ฑฐ๋‚˜ ๋ฌด์—‡์ด๋“ )?

@caarlos0 ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ํ™•์‹คํžˆ ๋กœ๊น… ์„ค์ •์„ ๋” ์œ ์—ฐํ•˜๊ณ  ํˆฌ๋ช…ํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ํ”ผ๋“œ๋ฐฑ์€ ์ œ์•ˆ์— ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

์ปจํ…Œ์ด๋„ˆ์˜ stdout ๋กœ๊น…์€ ํ˜„์žฌ Kubernetes ๋‚ด์—์„œ ๋Œ€์—ญ ์™ธ์—์„œ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ˜„์žฌ ๋กœ๊น…์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋น„ Kubernetes ์†”๋ฃจ์…˜์— ์˜์กดํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋Œ€์—ญ ์™ธ ๋กœ๊น…์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•ด Kubernetes๋ฅผ ํƒˆ์˜ฅํ•˜๋Š” ๊ถŒํ•œ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ์— ์˜์กดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ๋กœ๊น…์€ ๋Ÿฐํƒ€์ž„(docker, rkt, Windows)๋งˆ๋‹ค ๋‹ค๋ฅด๋ฏ€๋กœ Docker --log-driver์™€ ๊ฐ™์€ ๊ฒƒ์„ ์„ ํƒํ•˜๋ฉด ๋ฏธ๋ž˜์˜ ์ง์ด ์ƒ๊น๋‹ˆ๋‹ค.

๋กœ๊ทธ ์ŠคํŠธ๋ฆผ์„ ๋Œ€์—ญ ๋‚ด๋กœ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด kubelet์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์ปจํ…Œ์ด๋„ˆ์—์„œ stdout ํ–‰์„ ์ˆ˜์ง‘ํ•˜๋Š” ์ตœ์†Œ JSON ๋˜๋Š” XML ๋กœ๊ทธ ํ˜•์‹์„ ์ •์˜ํ•˜๊ฑฐ๋‚˜ ์„ ํƒํ•˜๊ณ  ์ตœ์†Œ ํด๋Ÿฌ์Šคํ„ฐ+๋„ค์ž„์ŠคํŽ˜์ด์Šค+ํฌ๋“œ+์ปจํ…Œ์ด๋„ˆ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋กœ๊ทธ ์†Œ์Šค๊ฐ€ Kubernetes ๊ณต๊ฐ„ ๋‚ด์—์„œ ์‹๋ณ„๋˜๋„๋ก ํ•˜๊ณ  ์ŠคํŠธ๋ฆผ์„ Kubernetes Service+๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ํฌํŠธ. ์‚ฌ์šฉ์ž๋Š” ์›ํ•˜๋Š” ๋กœ๊ทธ ์†Œ๋น„ ์„œ๋น„์Šค๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ Kubernetes๋Š” 'kubectl logs' ์ง€์›์„ ๊ตฌํ˜„ํ•˜๋Š” ํ•˜๋‚˜์˜ ์ฐธ์กฐ/๊ธฐ๋ณธ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋กœ๊น… ์†Œ๋น„ ์„œ๋น„์Šค๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋กœ๊ทธ๊ฐ€ ์‚ญ์ œ๋˜๊ณ  ๋””์Šคํฌ์— ์ „ํ˜€ ๋„๋‹ฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค . ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋กœ๊ทธ๋ฅผ ์ŠคํŠธ๋ฆฌ๋ฐํ•˜๊ฑฐ๋‚˜ ์˜๊ตฌ ์ €์žฅ์†Œ์— ์“ฐ๊ณ  ํšŒ์ „ํ•˜๋Š” ๊ฒƒ์€ ๋ชจ๋‘ ์„œ๋น„์Šค์˜ ์ฑ…์ž„/๊ฒฐ์ •์ž…๋‹ˆ๋‹ค.

kubelet ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ๋ž˜ํผ๋Š” ๊ฐ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„์—์„œ stdout์„ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์†Œํ•œ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  k8 ์ž์ฒด ํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค๊ฐ€ ์†Œ๋น„ ๋ฐ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋Œ€์—ญ ๋‚ด๋กœ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

Deployment ๋˜๋Š” Pod์˜ ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์–‘์€ ์„ ํƒ์ ์œผ๋กœ stdout ๋กœ๊น…์„ ์œ„ํ•œ ๋Œ€์ƒ ์„œ๋น„์Šค ๋ฐ ํฌํŠธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ+๋„ค์ž„์ŠคํŽ˜์ด์Šค+ํฌ๋“œ+์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•œ k8s ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค(๋”ฐ๋ผ์„œ ์›์‹œ/๋ฌด์† ๋˜๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์„ ํƒ). ์‚ฌ์šฉ์ž๋Š” ์ž์œ ๋กญ๊ฒŒ ๋ชจ๋“  ๋กœ๊ทธ๋ฅผ ํ•œ ๊ณณ์œผ๋กœ ์ง‘๊ณ„ํ•˜๊ฑฐ๋‚˜ ํ…Œ๋„ŒํŠธ, ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋ณ„๋กœ ์ง‘๊ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฒƒ์€ 'kubectl logs -f'๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ API ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ๊ฐ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•œ ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ๋ฅผ ์ŠคํŠธ๋ฆฌ๋ฐํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋‹ค์ง€ ํšจ์œจ์ ์ด๊ฑฐ๋‚˜ ํ™•์žฅ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด ์ œ์•ˆ์€ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ๋ž˜ํผ์—์„œ ์„œ๋น„์Šค ๋˜๋Š” ํŒŒ๋“œ๋กœ ์ง์ ‘ ์Šคํ‹ฐ๋ฐ์„ ๋” ํšจ์œจ์ ์œผ๋กœ ํ—ˆ์šฉํ•˜๊ณ  ๋™์ผํ•œ ๋…ธ๋“œ์—์„œ ๋ฐฐํฌ ๋˜๋Š” Daemonset ํŒŒ๋“œ๋ฅผ ๋กœ๊น…ํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋กœ๊ทธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ตœ์ ํ™”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” Kubernetes ๊ณต๊ฐ„ ๋‚ด์—์„œ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ž์ฒด ํ˜ธ์ŠคํŒ…, ๋™์ข… ๋˜๋Š” ์ด์ข… ๋กœ๊น… ์†”๋ฃจ์…˜์— ๋Œ€ํ•ด ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ๋กœ๊ทธ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋Œ€์—ญ ๋‚ด๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ์ตœ์†Œํ•œ์˜ ์กฐ์น˜๋ฅผ ์ทจํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ?

@whereisaaron ๋กœ๊น… ์ƒํƒœ๊ณ„์— ๋Œ€ํ•œ ๋ชจ๋“  ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ํ•œ ๊ณณ์— ์žˆ์ง€ ์•Š์„ ๋•Œ ์ง€๊ธˆ์€ ์ด ํ† ๋ก ์„ ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋กœ๊ทธ ํ๋ฆ„์„ ๋ฐฉํ•ดํ•˜๋Š” ๋„คํŠธ์›Œํฌ ๋ฐ ์‹œ์Šคํ…œ ๋ฌธ์ œ๋ฅผ ๋ณด์•˜์ง€๋งŒ ์•„์ง ๋…ผ์˜ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ œ์•ˆ์ด ์ค€๋น„๋˜๋ฉด ๋‚˜์ค‘์— ๋…ผ์˜ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์ด ๋‹น์‹ ์—๊ฒŒ ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋ณด์ž…๋‹ˆ๊นŒ?

ํ™•์‹คํžˆ @crassirostris. ์ œ์•ˆ์„œ๋ฅผ ํ™•์ธํ•  ์ค€๋น„๊ฐ€ ๋˜๋ฉด ์—ฌ๊ธฐ์—์„œ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.

/ ์‹œ๊ทธ ํ™•์žฅ์„ฑ

๋ชจ๋‘ ์žˆ์ง€๋งŒ --log-driver ๋ฐ --log-opt ๋„์ปค ๋ฐ๋ชฌ์— ๋Œ€ํ•œ ์˜ต์…˜์ž…๋‹ˆ๋‹คํ•˜์ง€๊ฐ€ K8S ํฌ๋“œ ์‚ฌ์–‘์— ๋Œ€ํ•œ ๊ทธ๋“ค์„ ์ง€์ •ํ•˜๋Š” ๋ฐ ์ข‹์€ ๊ฒƒ, ๊ธฐ๋Šฅ์„ K8S :

  1. ๋‹จ์ผ ๋…ธ๋“œ ์ˆ˜์ค€ ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์•„๋‹Œ ํฌ๋“œ๋ณ„ ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„
  2. ๋™์ผํ•œ ๋…ธ๋“œ์— ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ์•ฑ๋ณ„ ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„(fluentd, syslog, journald, splunk)
  3. --log-opt ๋ฅผ ์„ค์ •ํ•˜์—ฌ ํฌ๋“œ์— ๋Œ€ํ•œ ๋กœ๊ทธ ํšŒ์ „์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  4. ํฌ๋“œ๋‹น --log-opt ์„ค์ •์ด ์•„๋‹Œ ๋‹จ์ผ ๋…ธ๋“œ ์ˆ˜์ค€ --log-opt

AFAIK, ์œ„์˜ ์–ด๋Š ๊ฒƒ๋„ ์˜ค๋Š˜๋‚  k8s ํฌ๋“œ ์‚ฌ์–‘์˜ ํฌ๋“œ ์ˆ˜์ค€์—์„œ ์„ค์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@vhosakot ์œ„์˜ ์–ด๋Š ๊ฒƒ๋„ Kubernetes ๊ฐœ๋…์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— Kubernetes์˜ ๋ชจ๋“  ์ˆ˜์ค€์—์„œ ์„ค์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@crassirostris ์ •ํ™•ํžˆ! :)

Docker๊ฐ€ Pod ์ˆ˜์ค€/์ปจํ…Œ์ด๋„ˆ ์ˆ˜์ค€์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋“  ์ž‘์—…์„ k8s๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ์ง€ ์•Š์„๊นŒ์š”? ์‚ฌ์šฉ์ž๊ฐ€ ํฌ๋“œ ์ˆ˜์ค€/์ปจํ…Œ์ด๋„ˆ ์ˆ˜์ค€ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด Docker๋ฅผ ์ „ํ˜€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ทธ๋ฆฌ๊ณ  Docker ํŒฌ์ด ์•„๋‹Œ k8s ์• ํ˜ธ๊ฐ€๋„ ๊ฐ™์€ ์งˆ๋ฌธ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@vhosakot Point๋Š” --log-opt ๋Š” Docker์—๋งŒ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. K8 ์ˆ˜์ค€์—์„œ ์ด๋Ÿฌํ•œ ์˜ต์…˜์„ ๋งŒ๋“ค๋ฉด ์˜๋„์ ์œผ๋กœ ์ถ”์ƒํ™”๊ฐ€ ๋ˆ„์ถœ๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€๊ณ ์ž ํ•˜๋Š” ๋ฐฉ์‹์ด ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ต์…˜์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„์—์„œ ์ง€์›ํ•ด์•ผ ํ•˜๋ฉฐ ์ด์ƒ์ ์œผ๋กœ๋Š” CRI์˜ ์ผ๋ถ€์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๋Ÿฌํ•œ ์˜ต์…˜์ด ์—†์„ ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ Docker์— ๋Œ€ํ•œ ์ง์ ‘์ ์ธ ๊ฒฝ๋กœ๊ฐ€ ์—†์„ ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@crassirostris ์‚ฌ์‹ค, k8์ด Docker ํŠน์ •์ด ์•„๋‹Œ ํฌ๋“œ ์ˆ˜์ค€/์ปจํ…Œ์ด๋„ˆ ์ˆ˜์ค€์—์„œ CRI๊ฐ€ ์ˆ˜ํ–‰/ํ—ˆ์šฉํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

๋„ค, ์ ˆ๋Œ€์ ์œผ๋กœ ๋งž์Šต๋‹ˆ๋‹ค.

๋น„๋ก ๋‚ด๊ฐ€ ์ด ํ† ๋ก ์— ๋Šฆ์—ˆ๊ณ  ์ด ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋˜๋Š” ๊ฒƒ์„ ๋ณด๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์ง€๋งŒ, ์˜ˆ์œ ๋””์ž์ธ์„ ๊ฐ–๋Š” ๊ฒƒ๊ณผ ์ œ์ •์‹ ์ด๊ณ  ๊ท ์ผํ•œ ๋กœ๊น… ์†”๋ฃจ์…˜์„ ์„ค์ •ํ•˜๋Š” ์ง์ ‘์ ์ธ ๋ฐฉ๋ฒ•์„ ๊ฐ–๋Š” ๊ฒƒ ์‚ฌ์ด์—๋Š” ์ ˆ์ถฉ์ ์ด ์žˆ๋‹ค๊ณ  ์ฃผ์žฅํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ. ์˜ˆ, ์ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋ฉด docker internal ๊ฐ€ ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํฐ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋™์‹œ์— ๋Œ€๋ถ€๋ถ„์˜ K8S ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ๋ณธ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ ๋กœ docker๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  docker๋Š” ๋งค์šฐ ํฌ๊ด„์ ์ธ ๋ชฉ๋ก๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋œ๋‹ค๋Š” ์ ์— ์ƒ๋‹นํ•œ ๋ˆ์„ ๊ฑธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„์˜.

@gabriel-tincu ํ˜„์žฌ ์›๋ณธ FR์ด ๋ฌธ์ œ๊ฐ€ ๋  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์‹ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

docker๋Š” ๋งค์šฐ ํฌ๊ด„์ ์ธ ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„ ๋ชฉ๋ก๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

K8 ๋ฐฐํฌ ๋‹จ๊ณ„์—์„œ Docker ์ˆ˜์ค€์—์„œ ๋กœ๊น…์„ ์„ค์ •ํ•˜๊ณ  ์ด ์ •๋ณด๋ฅผ K8์— ์œ ์ถœํ•˜์ง€ ์•Š๊ณ  ์ด๋Ÿฌํ•œ ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜ ํ•  ์ˆ˜์—†๋Š” ์œ ์ผํ•œ ๊ฒƒ์€ ์ปจํ…Œ์ด๋„ˆ / ํฌ๋“œ ๋‹น ์˜ต์…˜์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค (์‹ค์ œ๋กœ๋Š” ์ „์šฉ ๋…ธ๋“œ๋กœ ์„ค์ •ํ•˜๊ณ  ๋…ธ๋“œ ์„ ํƒ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ). ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์ด ํฐ ์ œํ•œ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@crassirostris ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๊ธฐ __์ „์—__ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•˜์ง€๋งŒ ํ™˜๊ฒฝ์ด ์ด๋ฏธ ์„ค์ •๋œ ํ›„์— ๋„์ปค ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ ๊ทน์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฉด ํ˜„์žฌ๋กœ์„œ๋Š” ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@gabriel-tincu @vhosakot >=1.5์˜ '์˜›๋‚ '์— k8๊ณผ Docker ์‚ฌ์ด์— ์กด์žฌํ•˜๋˜ ์ง์ ‘ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ ์ด์ œ ์ฝ”๋“œ๊ฐ€ ์™„์ „ํžˆ ์ œ๊ฑฐ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. kubelet๊ณผ Docker(๋˜๋Š” rkt, cri-o, runc, lxd์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๊ฒƒ๋“ค)์™€ ๊ฐ™์€ ๋Ÿฐํƒ€์ž„ ์‚ฌ์ด์˜ ๋ชจ๋“  ๊ฒƒ์€ CRI๋ฅผ ๊ฑฐ์นฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ๋งŽ์€ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„์ด ์žˆ์œผ๋ฉฐ Docker ์ž์ฒด๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ cri-containerd + containerd ๋ฅผ ์œ„ํ•ด ๊ณง ์ œ๊ฑฐ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

http://blog.kubernetes.io/2017/11/containerd-container-runtime-options-kubernetes.html

image

@crassirostris ์ œ์•ˆ์— ๋Œ€ํ•œ ์–ด๋–ค ์›€์ง์ž„๋„ ๋ฐด๋“œ ๋‚ด ์ปจํ…Œ์ด๋„ˆ ๋กœ๊น…์˜ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

CRI ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ๋Š” ํŒŒ์ผ ๊ธฐ๋ฐ˜(https://github.com/kubernetes/community/blob/master/contributors/design-proposals/node/kubelet-cri-logging.md)์ด๋ฉฐ ๋กœ๊ทธ ๊ฒฝ๋กœ๋Š” ๋ช…์‹œ์ ์œผ๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค.

/var/log/pods/PodUID/ContainerName/RestartCount.log

๋Œ€๋ถ€๋ถ„์˜ ๋„์ปค ๋กœ๊น… ๋“œ๋ผ์ด๋ฒ„ https://docs.docker.com/config/containers/logging/configure/#supported -logging-drivers์—์„œ ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ํด๋Ÿฌ์Šคํ„ฐ์— ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ์ธ์„ ์ˆ˜์ง‘ํ•˜๋Š” ๋“œ๋ผ์ด๋ฒ„๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. splunk , awslogs , gcplogs ๋“ฑ๊ณผ ๊ฐ™์€ ๋กœ๊น… ๊ด€๋ฆฌ ์‹œ์Šคํ…œ

CRI์˜ ๊ฒฝ์šฐ "๋„์ปค ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„"๋ฅผ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ๋ฐ๋ชฌ์…‹์„ ์‹คํ–‰ํ•˜์—ฌ CRI ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์›ํ•˜๋Š” ๊ณณ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ๋ฅผ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ fluentd๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์Šค์Šค๋กœ ๋ฐ๋ชฌ์…‹์„ ์ž‘์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋” ๋งŽ์€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ํ™•์žฅํ•˜๊ฑฐ๋‚˜ daemonset์ด apiserver์—์„œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ๋…ผ์˜๊ฐ€ ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. https://github.com/kubernetes/kubernetes/issues/58638

90์ผ ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ถ€์‹คํ•ด์ง‘๋‹ˆ๋‹ค.
/remove-lifecycle stale ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์ตœ์‹ ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
๋ถ€์‹ค ๋ฌธ์ œ๋Š” ์ถ”๊ฐ€๋กœ 30์ผ ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ฉ๊ณ  ๊ฒฐ๊ตญ ๋‹ซํž™๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์ง€๊ธˆ ์ข…๋ฃŒํ•ด๋„ ์•ˆ์ „ํ•˜๋‹ค๋ฉด /close .

sig-testing, kubernetes/test-infra ๋ฐ/๋˜๋Š” fejta์— ํ”ผ๋“œ๋ฐฑ์„ ๋ณด๋‚ด์‹ญ์‹œ์˜ค.
/์ˆ˜๋ช… ์ฃผ๊ธฐ ๋ถ€์‹ค

30์ผ ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ค๋ž˜๋œ ๋ฌธ์ œ๊ฐ€ ์ฉ์Šต๋‹ˆ๋‹ค.
/remove-lifecycle rotten ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์ตœ์‹ ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
์ฉ์€ ๋ฌธ์ œ๋Š” ์ถ”๊ฐ€๋กœ 30์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋‹ซํž™๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์ง€๊ธˆ ์ข…๋ฃŒํ•ด๋„ ์•ˆ์ „ํ•˜๋‹ค๋ฉด /close .

sig-testing, kubernetes/test-infra ๋ฐ/๋˜๋Š” fejta์— ํ”ผ๋“œ๋ฐฑ์„ ๋ณด๋‚ด์‹ญ์‹œ์˜ค.
/๋ผ์ดํ”„์‚ฌ์ดํด ์ฉ์€
/remove-lifecycle ๋ถ€์‹ค

/remove-lifecycle ์ฉ์Œ

์ด๊ฒƒ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด Docker ์ปจํ…Œ์ด๋„ˆ๋กœ k8์„ ์‹คํ–‰ํ•˜๋Š” ์‚ฌ๋žŒ์ด AWS CloudWatch์™€ ๊ฐ™์€ ์ผ๋ถ€ ๋ฐฑ์—”๋“œ์— ๋Œ€ํ•œ ๋กœ๊น…์„ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๊นŒ?

@bryan831 fluentd ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ k8s ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ ํŒŒ์ผ์„ ์ˆ˜์ง‘ํ•˜๊ณ  ์›ํ•˜๋Š” ๋ฐฑ์—”๋“œ, CloudWatch, StackDriver, Elastisearch ๋“ฑ์œผ๋กœ ์ง‘๊ณ„ํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด fluentd+CloudWatch , fluentd+Elastisearch , fluent-bit->fluentd->your choice , Datadog ๋ฐ ๋‹ค๋ฅธ ์กฐํ•ฉ์— ๋Œ€ํ•œ ๊ธฐ์„ฑํ’ˆ Helm ์ฐจํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

90์ผ ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ถ€์‹คํ•ด์ง‘๋‹ˆ๋‹ค.
/remove-lifecycle stale ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์ตœ์‹ ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
๋ถ€์‹ค ๋ฌธ์ œ๋Š” ์ถ”๊ฐ€๋กœ 30์ผ ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ฉ๊ณ  ๊ฒฐ๊ตญ ๋‹ซํž™๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์ง€๊ธˆ ์ข…๋ฃŒํ•ด๋„ ์•ˆ์ „ํ•˜๋‹ค๋ฉด /close .

sig-testing, kubernetes/test-infra ๋ฐ/๋˜๋Š” fejta์— ํ”ผ๋“œ๋ฐฑ์„ ๋ณด๋‚ด์‹ญ์‹œ์˜ค.
/์ˆ˜๋ช… ์ฃผ๊ธฐ ๋ถ€์‹ค

Docker --log-opt ์˜ต์…˜์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ์—๋Š” '--log-opt tag="{{.ImageName}}/{{.Name}}/{{.ID}}"'์™€ ๊ฐ™์€ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ImageName์„ ๋กœ๊ทธ์— ๋‚ด๋ณด๋‚ด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ปจํ…Œ์ด๋„ˆ ๋ฒ„์ „์—์„œ ๋กœ๊ทธ๊ฐ€ ๋‚˜์˜ค๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์ฐธ๊ณ  : https://docs.docker.com/config/containers/logging/log_tags/)

/remove-lifecycle ๋ถ€์‹ค

@pmahalwar-intertrust ๋„์ปค ๋ฐ๋ชฌ์— ๋™์ผํ•œ --log-opt๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋Š” ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค...

@pmahalwar-intertrust kubernetes๊ฐ€ containerd ์—์„œ ์ˆ˜์ง‘ํ•œ ๋กœ๊ทธ์—๋Š” ์ด๋ฏธ ๊ด‘๋ฒ”์œ„ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ์ปจํ…Œ์ด๋„ˆ์— ์ ์šฉํ•œ ๋ชจ๋“  ๋ ˆ์ด๋ธ”์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. fluentd ์ˆ˜์ง‘ํ•˜๋ฉด ์•„๋ž˜ ๋กœ๊ทธ ํ•ญ๋ชฉ๊ณผ ๊ฐ™์ด ๋ชจ๋“  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

{
    "log": " - [] - - [25/Oct/2018:06:29:48 +0000] \"GET /nginx_status/format/json HTTP/1.1\" 200 9250 \"-\" \"Go-http-client/1.1\" 118 0.000 [internal] - - - - 5eb73997a372badcb4e3d993ceb44cd9\n",
    "stream": "stdout",
    "docker": {
        "container_id": "3657e1d9a86e629d0dccefec0c3c7624eaf0c4a11f60f53c5045ec0839c37f06"
    },
    "kubernetes": {
        "container_name": "nginx-ingress-controller",
        "namespace_name": "ingress",
        "pod_name": "nginx-ingress-dev-controller-69c644f7f5-vs8vw",
        "pod_id": "53514ad6-d0f4-11e8-a04c-02c433fc5820",
        "labels": {
            "app": "nginx-ingress",
            "component": "controller",
            "pod-template-hash": "2572009391",
            "release": "nginx-ingress-dev"
        },
        "host": "ip-172-29-21-204.us-east-2.compute.internal",
        "master_url": "https://10.3.0.1:443/api",
        "namespace_id": "e262510b-180a-11e8-b763-0a0386e3402c"
    },
    "kubehost": "ip-172-29-21-204.us-east-2.compute.internal"
}

์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•  ๊ณ„ํš์€ ์•„์ง ์—†๋‚˜์š”?
--log-driver= ์ปจํ…Œ์ด๋„ˆ์šฉ ๋กœ๊น… ๋“œ๋ผ์ด๋ฒ„
--log-opt=[] ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„ ์˜ต์…˜

์•ˆ๋…•ํ•˜์„ธ์š” @lifubang ๋ˆ„๊ตฌ์˜ ๊ณ„ํš์— ๋Œ€ํ•ด ๋งํ•  ์ˆ˜ ์—†์ง€๋งŒ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š” ๋ฐ๋ชฌ์ธ dockerd ๋Š” ๋” ์ด์ƒ Kubernetes์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค(์œ„์— ๋Œ€ํ•œ ์„ค๋ช… ์ฐธ์กฐ).

์›ํ•œ๋‹ค๋ฉด ์—ฌ์ „ํžˆ ์„ ํƒ์ ์œผ๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด์ „ dockerd ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์˜ต์…˜์€ ์—ฌ๊ธฐ์—์„œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
https://kubernetes.io/blog/2018/05/24/kubernetes-containerd-integration-goes-ga/

๊ทธ๋Ÿฌ๋‚˜ fluentd ์™€ ๊ฐ™์€ ์ „์šฉ ๋กœ๊น… ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ๋˜๋Š” Pod๋ณ„๋กœ ์‚ฌ์ด๋“œ์นด๋กœ ์ „์—ญ์ ์œผ๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ๋Š” Kubernetes ๋กœ๊ทธ์ธ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
https://kubernetes.io/docs/concepts/cluster-administration/logging/

@whereisaaron์— ์˜ํ•ด ์„ค๋ช… ๋œ๋Œ€๋กœ ๋‚ด๊ฐ€๋ณด๊ธฐ ์—” Fluentd์— ์ถ”์ฒœ

์ด ๊ธฐ๋Šฅ ์š”์ฒญ์ด ์ž‘์—… ์ค‘์ธ ํ•œ... kubernetes ์•„ํ‚คํ…์ฒ˜ ๋กœ๋“œ๋งต์—๋Š” kubernetes์˜ "์ผ๋ถ€"๊ฐ€ ์•„๋‹Œ ํ•ญ๋ชฉ์˜ "์ƒํƒœ๊ณ„" ์„น์…˜ ์•„๋ž˜์— ๋กœ๊น…์ด ์žˆ์œผ๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›๋ ์ง€๋Š” ์˜๋ฌธ์ž…๋‹ˆ๋‹ค.
https://github.com/kubernetes/community/blob/master/contributors/devel/architectural-roadmap.md#summarytldr

k8์„ ์‹คํ–‰ํ•  ๋•Œ ์ธ์ƒ์„ ๋ง์น  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฒ„๊ทธ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ fluentd๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

in_tail์€ ๋„์ปค๊ฐ€ https://github.com/fluent/fluentd/issues/1680 ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€

in_tail์€ ์‹œ์ž‘ ๋‹จ๊ณ„์—์„œ ์ถ”์ ๋˜์ง€ ์•Š์€ ํŒŒ์ผ ์œ„์น˜๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” pos_file์˜ ๋‚ด์šฉ์ด ๋‹ค์‹œ ์‹œ์ž‘๋  ๋•Œ๊นŒ์ง€ ์ฆ๊ฐ€ํ•˜๊ณ  ๋™์  ๊ฒฝ๋กœ ์„ค์ •์œผ๋กœ ๋งŽ์€ ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์ด๋ฅผ ํ†ตํ•ด ์Šค์บ”ํ•˜๋Š” ๋งŽ์€ CPU๋ฅผ ๋จน์„ ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
https://github.com/fluent/fluentd/issues/1126.

90์ผ ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ถ€์‹คํ•ด์ง‘๋‹ˆ๋‹ค.
/remove-lifecycle stale ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์ตœ์‹ ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
๋ถ€์‹ค ๋ฌธ์ œ๋Š” ์ถ”๊ฐ€๋กœ 30์ผ ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ฉ๊ณ  ๊ฒฐ๊ตญ ๋‹ซํž™๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์ง€๊ธˆ ์ข…๋ฃŒํ•ด๋„ ์•ˆ์ „ํ•˜๋‹ค๋ฉด /close .

sig-testing, kubernetes/test-infra ๋ฐ/๋˜๋Š” fejta์— ํ”ผ๋“œ๋ฐฑ์„ ๋ณด๋‚ด์‹ญ์‹œ์˜ค.
/์ˆ˜๋ช… ์ฃผ๊ธฐ ๋ถ€์‹ค

@roff๋‹˜์˜ ๊ฒฝํ—˜์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. fluent/fluentd#1680์€ k8s 1.5์— ๋Œ€ํ•œ ๋ฌธ์ œ์˜€์œผ๋ฉฐ ๊ทธ ๋‹น์‹œ์—๋Š” 'in_tail'์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. k8์ด containerd ๋กœ๊น…์œผ๋กœ ์ด๋™ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๊นŒ? fluent/fluentd#1126์—์„œ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ํ–ฅ์„ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

fluentd ์— ๋Œ€ํ•ด ์ถ”์ฒœํ•˜์…จ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ๋ฌด์—‡์„ ์ถ”์ฒœํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? k8s ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ ๋กœ๊ทธ ์ง‘๊ณ„์— fluentd ๋Œ€์‹  ๊ฐœ์ธ์ ์œผ๋กœ ๋ฌด์—‡์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ?

30์ผ ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ค๋ž˜๋œ ๋ฌธ์ œ๊ฐ€ ์ฉ์Šต๋‹ˆ๋‹ค.
/remove-lifecycle rotten ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์ตœ์‹ ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
์ฉ์€ ๋ฌธ์ œ๋Š” ์ถ”๊ฐ€๋กœ 30์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋‹ซํž™๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์ง€๊ธˆ ์ข…๋ฃŒํ•ด๋„ ์•ˆ์ „ํ•˜๋‹ค๋ฉด /close .

sig-testing, kubernetes/test-infra ๋ฐ/๋˜๋Š” fejta์— ํ”ผ๋“œ๋ฐฑ์„ ๋ณด๋‚ด์‹ญ์‹œ์˜ค.
/๋ผ์ดํ”„์‚ฌ์ดํด ์ฉ์€

์ฉ์€ ๋ฌธ์ œ๋Š” 30์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋‹ซํž™๋‹ˆ๋‹ค.
/reopen ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ฝ๋‹ˆ๋‹ค.
/remove-lifecycle rotten ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์ตœ์‹ ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

sig-testing, kubernetes/test-infra ๋ฐ/๋˜๋Š” fejta์— ํ”ผ๋“œ๋ฐฑ์„ ๋ณด๋‚ด์‹ญ์‹œ์˜ค.
/๋‹ซ๋‹ค

@fejta-bot: ์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

์— ๋Œ€ํ•œ ์‘๋‹ต ์ด :

์ฉ์€ ๋ฌธ์ œ๋Š” 30์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋‹ซํž™๋‹ˆ๋‹ค.
/reopen ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ฝ๋‹ˆ๋‹ค.
/remove-lifecycle rotten ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์ตœ์‹ ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

sig-testing, kubernetes/test-infra ๋ฐ/๋˜๋Š” fejta์— ํ”ผ๋“œ๋ฐฑ์„ ๋ณด๋‚ด์‹ญ์‹œ์˜ค.
/๋‹ซ๋‹ค

PR ๋Œ“๊ธ€์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ kubernetes/test-infra ์ €์žฅ์†Œ์— ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜์„ธ์š”.

๋‹ซํžˆ์ง€ ๋ง์•˜์–ด์•ผ ํ–ˆ์–ด, ๊ทธ๋ ‡์ง€?
๊ธฐ๋Šฅ ์š”์ฒญ์€ ํฌ๋“œ๋‹น log-opts๋ฅผ ์„ค์ •ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์—ฌ์ „ํžˆ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(๋ฐ๋ชฌ์—์„œ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ logrotate๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ )...

k8 ๋‚ด๋ถ€์—์„œ ๋„์ปค๋ณ„ ๊ตฌ์„ฑ ์˜ต์…˜์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์€ ์ข‹์€ ์ƒ๊ฐ์ด ์•„๋‹ˆ๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „์— ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด fluentd daemonset ๋˜๋Š” fluenbit ์‚ฌ์ด๋“œ ์นด๊ฐ€ ํ˜„์žฌ ์˜ต์…˜์ž…๋‹ˆ๋‹ค. ์‚ฌ์ด๋“œ์นด๊ฐ€ ํ›จ์”ฌ ๋” ์•ˆ์ „ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ €๋Š” ์‚ฌ์ด๋“œ์นด๋ฅผ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

@whereisaaron K8s@containerd์— ๋Œ€ํ•œ ๋กœ๊น… ์†”๋ฃจ์…˜์„

--log-driver , --log-opt ๋Š” ์—ฌ์ „ํžˆ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?
๋‹จ์ผ ํฌ๋“œ์—์„œ Splunk๋กœ ๋กœ๊ทธ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์•„์ด๋””์–ด?

๋‹จ์ผ ํฌ๋“œ์˜ ๊ฒฝ์šฐ @sariel1212 splunk ํฌ์›Œ๋”ฉ ์—์ด์ „ํŠธ์ธ ์‚ฌ์ด๋“œ ์นด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํฌ๋“œ์— ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํฌ๋“œ์˜ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์— emptydir ๋ณผ๋ฅจ์„ ๊ณต์œ ํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ณต์œ  emptydir์— ๋กœ๊ทธ๋ฅผ ์“ฐ๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ splunk ํฌ์›Œ๋” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•ด๋‹น ๋ณผ๋ฅจ์—์„œ ์ฝ๊ณ  ์ „๋‹ฌํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์ „์ฒด ํด๋Ÿฌ์Šคํ„ฐ @sariel1212 ์— ๋Œ€ํ•ด Splunk์— ์ˆ˜์ง‘ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์ˆ˜์ง‘ํ•  Splunk HEC fluentd ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ ์‚ฌ์šฉํ•˜์—ฌ fluentd ๋ฅผ ๋ฐฐํฌ ํ•˜๋Š” @coffeepac ์˜ ๊ฒฝ์šฐ ๊ณต์œ  emptydir์ด ์žˆ๋Š” ์‚ฌ์ด๋“œ์นด ์ œ์•ˆ์€ ์ข‹์€ ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์ด ์‹œ๊ฐ„์ด ์ง€๋‚œ ํ›„์—๋„ ํด๋Ÿฌ์Šคํ„ฐ ์†Œ์œ ์ž๊ฐ€ Docker ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์•„์ง ์—†๋‹ค๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋”์ฐํ•ฉ๋‹ˆ๋‹ค.

Docker-Compose(๋‚ด K8s ํด๋Ÿฌ์Šคํ„ฐ ์‹œ๋ฎฌ๋ ˆ์ด์…˜)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์„ค์ •ํ•˜์—ฌ ๋ชจ๋“  stdout/err์„ ๋‚ด ๋กœ๊ทธ ์ง‘๊ณ„ ์„œ๋น„์Šค๋กœ ํŒŒ์ดํ”„ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

Kubenetes์—์„œ ์ด๊ฒƒ์„ ํ•˜๋ ค๊ณ  ํ•˜์‹ญ๋‹ˆ๊นŒ? ์ด ์Šค๋ ˆ๋“œ์—์„œ ๋ชจ๋“  ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ฝ”๋“œ๋ฅผ ๋ณด๊ฐ•ํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค! ์•ˆ์ข‹๋‹ค.

@ashleydavis ๋‹˜ , dockerd ๋Š” Kubernetes์—์„œ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋” ์ด์ƒ Kubernetes์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์ง€์›์„ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. Kubernetes ์™ธ์—๋„ ์—ฌ์ „ํžˆ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐ๊ฒฝ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
https://kubernetes.io/blog/2018/05/24/kubernetes-containerd-integration-goes-ga/

Kubernetes๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•œ stdout/stderr ๋กœ๊ทธ๋ฅผ ์ž๋™์œผ๋กœ ์ŠคํŠธ๋ฆฌ๋ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋…ธ๋“œ์— ํ•˜๋‚˜์˜ ์ปจํ…Œ์ด๋„ˆ( DaemonSet )๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ํ•ด๋‹น ๋กœ๊ทธ ์ŠคํŠธ๋ฆผ์„ ์ˆ˜์ง‘ํ•˜๊ณ  ์„ ํƒํ•œ ์ง‘๊ณ„ ์„œ๋น„์Šค๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๋ง ์‰ฌ์›Œ์š”.

https://docs.fluentd.org/container-deployment/kubernetes

์—ฌ๊ธฐ์— ๋ฐฑ ์ง‘๊ณ„ ๋ฐฑ์—”๋“œ๋ฅผ ์œ„ํ•œ ๊ธฐ์„ฑํ’ˆ fluentd +๋ฐฑ์—”๋“œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์™€ ์ƒ˜ํ”Œ ๊ตฌ์„ฑ์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/fluent/fluentd-kubernetes-daemonset

image

DataDog๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋Œ€์‹  ์„ค์น˜ํ•  ์ž์ฒด ์—์ด์ „ํŠธ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ fluentd .

https://docs.datadoghq.com/integrations/kubernetes/

์ผ๋ฐ˜์ ์œผ๋กœ docker ๋Š” ๋กœ๊น… ๋ฐ ๋กœ๊ทธ ํ”Œ๋Ÿฌ๊ทธ์ธ, ์Šค์›œ, ๋Ÿฐํƒ€์ž„ ๋„๊ตฌ, ๋นŒ๋“œ ๋„๊ตฌ, ๋„คํŠธ์›Œํ‚น ๋ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ ๋งˆ์šดํŠธ ๋“ฑ์„ ๋ชจ๋‘ ํ•˜๋‚˜์˜ ๋ฐ๋ชฌ ํ”„๋กœ์„ธ์Šค์—์„œ kitchen sink docker ํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Kubernetes๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ๊ฐ ํ•˜๋‚˜์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  API๋ฅผ ํ†ตํ•ด ํ†ต์‹ ํ•˜๋Š” ๋Š์Šจํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋œ ์ปจํ…Œ์ด๋„ˆ/ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ต์ˆ™ํ•ด์ง€๊ธฐ์—๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅธ ์Šคํƒ€์ผ์ž…๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ™•์‹คํžˆ ์ด๊ฒƒ์— ๋Œ€ํ•ด ์กฐ์‚ฌ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

dockerd๊ฐ€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์€ ํ–ฅํ›„ Kubernetes์— Docker ์ด๋ฏธ์ง€๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

@ashleydavis ํ™•์‹คํžˆ 'Docker' ์ด๋ฏธ์ง€๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ( dockerd ์—†์–ด๋„), Kubernetes ๋…ธ๋“œ์— ๊ณ„์†ํ•ด์„œ dockerd ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: docker-in-docker์—์„œ์™€ ๊ฐ™์ด). ๋นŒ๋“œ) ์›ํ•˜๋Š” ๊ฒฝ์šฐ. docker์˜ ํ•ต์‹ฌ ๋ถ€๋ถ„์„ ์ถ”์ถœํ•˜์—ฌ 'OCI ์ปจํ…Œ์ด๋„ˆ'์™€ containerd ๋Ÿฐํƒ€์ž„์œผ๋กœ ํ‘œ์ค€ํ™”ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

https://www.opencontainers.org/
https://containerd.io/

Docker์™€ Kubernetes๋Š” ์ด์ œ ์ด๋Ÿฌํ•œ ๊ณต์œ  ํ‘œ์ค€์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

https://blog.docker.com/2017/08/what-is-containerd-runtime/
https://kubernetes.io/blog/2018/05/24/kubernetes-containerd-integration-goes-ga/

๋•๋ถ„์— ๋งŽ์ด ๋ฐฐ์šฐ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ Loggy๋ผ๋Š” ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์˜๋„๋Š” Docker ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„์—์„œ ๋กœ๊ทธ๋ฅผ ๋ณด๋‚ธ ๋‹ค์Œ(์›นํ›…์„ ํ†ตํ•ด) Slack์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ์ฝ”๋“œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: https://github.com/artlife-solutions/loggy/blob/master/src/index.ts

๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๋กœ๊ทธ๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  HTTP POST๋ฅผ ํ†ตํ•ด Slack์œผ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ํฌ๋“œ์—์„œ ๋กœ๊ทธ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์ง‘๊ณ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด๋ฅผ ์กฐ์ •ํ•˜๋Š” ๊ฐ€์žฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@ashleydavis ํ•ด๋‹น ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๊ฐ€ ํฌํ•จ๋œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•œ ๋‹ค์Œ

  1. ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ( ์„œ๋น„์Šค์˜ ํด๋Ÿฌ์Šคํ„ฐ DNS ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ) ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค ์™€ ํ•จ๊ป˜ ๋ฐฐํฌ ๋กœ ํด๋Ÿฌ์Šคํ„ฐ์— ํ•ฉ๋‹ˆ๋‹ค .

  2. ๋ฐฐํฌ์— ์ถ”๊ฐ€ '์‚ฌ์ด๋“œ์นด' ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ฐฐํฌ ํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ Pod์˜ ์ปจํ…Œ์ด๋„ˆ๋Š” ๋™์ผํ•œ localhost ๋Œ€ํ•œ ๋น„๊ณต๊ฐœ ์•ก์„ธ์Šค๋ฅผ ๊ณต์œ  ํ•˜๋ฏ€๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ localhost:12201 ์˜ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์ด๋“œ์นด๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ๋™์ผํ•œ Pod์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ณต์œ  ๋กœ๊ทธ ํŒŒ์ผ ๋˜๋Š” ๋ช…๋ช…๋œ ํŒŒ์ดํ”„์— ๋Œ€ํ•œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค .

์ด๊ฒƒ์€ ์—ฌ๊ธฐ์—์„œ ์ฃผ์ œ ์—์„œ ๋ฒ—์–ด๋‚˜๊ณ  ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ด๊ฒƒ์„ ์›ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฏ€๋กœ ์˜ˆ๋ฅผ ์กฐ์‚ฌํ•˜๊ณ  ์กฐ์–ธ์„ ์œ„ํ•ด Slack ์ฑ„๋„ ์„ ๋ฐฉ๋ฌธํ•˜์‹ญ์‹œ์˜ค.

https://github.com/ramitsurana/awesome-kubernetes
https://slack.k8s.io/
https://kubernetes.io/

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์„œ๋น„์Šค๋ฅผ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ๋ฅผ ๋ฐ”๋ž์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์˜ ํ‘œ์ค€ ์ถœ๋ ฅ/์˜ค๋ฅ˜๋ฅผ ์บก์ฒ˜ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด?

Docker ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„์˜ ์•ฝ์†์€ ๋‹จ์ˆœ์„ฑ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฌผ๋ก  @ashleydavis , ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ฐฐํฌํ•˜๊ณ  fluentd ๋ฐฐํฌ ํ•˜๊ณ  ์พ…, ์™„๋ฃŒ ๐Ÿ˜บ. ๋ฐฐํฌํ•˜๋Š” ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Š” ์„ ํ˜ธํ•˜๋Š” ์ˆ˜์ง‘๊ธฐ๋กœ ๋ฐฐ์†ก๋˜๋Š” stdout/stderr์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ‘

K8s ๋ฐ ๋กœ๊น…์— ์‹œ๊ฐ„์„ ํˆฌ์žํ•œ ํ›„ ๋ช…์‹œ์ ์ธ GELF ๊ตฌ์„ฑ ์—†์ด ๋ฉ‹์ง„ https://www.elastic.co/guide/en/beats/filebeat/current/running-on-kubernetes.html์„ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค.

๋‚ด ์„ค์ •์€ ๋กœ๊ทธ๋ฅผ ํ•„ํ„ฐ๋ง ๋ฐ ์ถ”์ถœํ•˜๊ณ  Elasticsearch๋กœ ํŒŒ์ดํ”„ํ•˜๋Š” Logstash๋กœ ํŒŒ์ดํ”„ํ•˜๋Š” Filebeat์ž…๋‹ˆ๋‹ค. Kibana๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ๋ฅผ ๋ณด๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘๊ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์šด์˜ ์ฒด์ œ์˜ ๊ธฐ๋ณธ syslog ํŒŒ์ผ์— ๋Œ€ํ•œ ๋กœ๊น…์„ ์ง€์›ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Ubuntu์—์„œ /var/log/syslog ๋กœ๊ทธ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ logrotate์— ์˜ํ•ด ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

swarm/compose๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

version: '3.3'
services:
  mysql:
    image: mysql:5.7
    logging:
      driver: syslog
      options:
        tag: mysql

emtpyDir ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ดœ์ฐฎ์ง€๋งŒ ๋กœ๊ทธ ํŒŒ์ผ์„ ํšŒ์ „/์ž๋ฅด๋Š” ์ถ”๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š” ํ•œ ์žฅ๊ธฐ ์‹คํ–‰ ํฌ๋“œ๋Š” ๋ณผ๋ฅจ์„ ์ฑ„์šธ ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. OS๊ฐ€ ์ด๋ฏธ /var/log/syslog์˜ ํšŒ์ „์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ์„ ๋•Œ ์ด ์ถ”๊ฐ€ ๋ณต์žก์„ฑ์— ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ผ๋ถ€ ๋ฐฐํฌ์— ์‚ฌ์ด๋“œ์นด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์•„์ด๋””์–ด๋ผ๋Š” ๋ฐ ๋™์˜ํ•˜์ง€๋งŒ(์ผ๋ถ€ ๋ฐฐํฌ์— ๋Œ€ํ•ด ์ด๋ฏธ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Œ) ๋ชจ๋“  ์‚ฌ๋žŒ์˜ ํ™˜๊ฒฝ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

emtpyDir ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ๋“ค์„ ์กฐ์‹ฌํ•˜์„ธ์š”. ๊ทธ๊ฒƒ๋“ค์€ Kubernetes์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜๊ณ  ๊ทธ๋“ค์˜ ์ˆ˜๋ช…์€ ๋‹น์‹ ์— ์˜ํ•ด ํ†ต์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํฌ๋“œ๊ฐ€ ์ œ๊ฑฐ๋˜๊ณ  ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ ๋‹ค์‹œ ์˜ˆ์•ฝ๋˜๋ฉด ๋กœ๊ทธ๊ฐ€ ์†์‹ค๋ฉ๋‹ˆ๋‹ค. ํฌ๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ํ•ด๋‹น uid๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์ด์ „ ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ƒˆ ๋ณผ๋ฅจ์„ ๋งŒ๋“ค๊ณ  ์ด์ „ ๋ณผ๋ฅจ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

@jsirianni ๋ชจ๋“  ์‹œ์Šคํ…œ์ด syslog๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ฆ‰, ์ฃผ์–ด์ง„ ํฌ๋“œ์˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋…ธ๋“œ๋ณ„ ์ฃผ์„์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. docker compose๋Š” ๋กœ์ปฌ์—์„œ๋งŒ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ๊ฐ€์ •์„ ํ•ฉ๋‹ˆ๋‹ค.

@coffeepac ๋…ธ๋“œ์— syslog๊ฐ€ ์—†๋‹ค๊ณ  ํ•ด์„œ ์šด์˜์ž์—๊ฒŒ ์˜ต์…˜์ด ์—†์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. syslog๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์ž‘์—…์ž ๋…ธ๋“œ์— syslog๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์•„์ง ์ถฉ๋ถ„ํ•˜๋ฏ€๋กœ ์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ด์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
/๋‹ค์‹œ ์—ด๋‹ค

@saiyam1814 : ์ด ๋ฌธ์ œ๋ฅผ

์— ๋Œ€ํ•œ ์‘๋‹ต ์ด :

์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์•„์ง ์ถฉ๋ถ„ํ•˜๋ฏ€๋กœ ์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ด์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
/๋‹ค์‹œ ์—ด๋‹ค

PR ๋Œ“๊ธ€์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ kubernetes/test-infra ์ €์žฅ์†Œ์— ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜์„ธ์š”.

๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” ์—ฌ์ „ํžˆ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ๋„์ปค ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„๋‚˜ ๋กœ๊น…์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค๋ฅธ ๊ฐ„๋‹จํ•œ ๋‚ด์žฅ ๋ฐฉ๋ฒ•์„ ์ง€์›ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

Kubernetes์—์„œ ๋กœ๊น… ์„ค์ •์ด ์‰ฝ๋‹ค๋Š” ๋ง์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋“ค์—ˆ์ง€๋งŒ ์ด์ œ ์ž์ฒด ๋กœ๊น… ์ง‘๊ณ„ ์‹œ์Šคํ…œ์„ ์„ค์ •ํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉด์„œ ์ •๋ง ๊ฐ„๋‹จํ•˜์ง€ ์•Š๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Kubernetes์šฉ ๋กœ๊ทธ ์ง‘๊ณ„ ์‹œ์Šคํ…œ์„ ์ˆ˜๋™์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. http://www.the-data-wrangler.com/kubernetes-log-aggregation/

๋‚ด ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์ž์‹ ์˜ ์ „๋žต์„ ์ฐพ๋Š” ๋ฐ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ฒŒ ์–ด๋ ต์ง€๋Š” ์•Š์ง€๋งŒ ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค.

๋ฌผ๋ก  ๋กœ๊ทธ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  stdout ๋ฐ stderr์—์„œ ์ง์ ‘ Docker ๋กœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์˜ ๋‹ค๋ฅธ ๋กœ๊ทธ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ Docker ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ๊ธฐ๋กํ•˜๋Š” ๋ฐ๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Docker ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๐Ÿ‘

ํฌ๋“œ๊ฐ€ ๊ณ ๊ฐ ์ œ์–ด์— ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ ์ธ ์–ด ํฌ๋“œ ์ˆ˜์ค€์—์„œ ๋„์ปค ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด gelf ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์žˆ๋Š” ๋กœ๊ทธ๋ฅผ ์ง์ ‘ ๊ทธ๋ ˆ์ด๋กœ๊ทธ ์„œ๋น„์Šค/ํฌ๋“œ(๊ณ ๊ฐ ์ œ์–ด์—๋„ ์žˆ์Œ)๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ) ๋‹ค๋ฅธ ์ฆ‰๊ฐ์ ์ธ ์„œ๋น„์Šค( gelf ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ๊ด€๋ฆฌ ์˜ค๋ฒ„ํ—ค๋“œ ๋ฐ ๋” ๋‚˜์œ ์ถ”์ƒํ™” ์ˆ˜์ค€ ์ค‘๋‹จ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ŠคํŠธ์˜ ํŒŒ์ผ์—์„œ ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ ๋””๋ ‰ํ† ๋ฆฌ์— ์•ก์„ธ์Šคํ•˜๋Š” ๊ณ ๊ฐ์˜ ํฌ๋“œ์—์„œ ์ˆ˜์ง‘ํ•˜๋Š” ๋Œ€์‹  ํ˜ธ์ŠคํŠธ์—.

๋”ฐ๋ผ์„œ ์ด ๊ธฐ๋Šฅ์ด kubernetes์—์„œ ๊ตฌํ˜„๋˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

https://github.com/cri-o/cri-o/pull/1605 ์™€ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ปจํ…Œ์ด๋„ˆ ๋™์ž‘์ด ์–ด๋–ป๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์—†๋„๋ก ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„์—์„œ ๋กœ๊ทธ ์ŠคํŠธ๋ฆผ ํ•ด์„์„ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ฉ์€ ๋ฌธ์ œ๋Š” 30์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋‹ซํž™๋‹ˆ๋‹ค.
/reopen ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ฝ๋‹ˆ๋‹ค.
/remove-lifecycle rotten ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์ตœ์‹ ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

sig-testing, kubernetes/test-infra ๋ฐ/๋˜๋Š” fejta์— ํ”ผ๋“œ๋ฐฑ์„ ๋ณด๋‚ด์‹ญ์‹œ์˜ค.
/๋‹ซ๋‹ค

@fejta-bot: ์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

์— ๋Œ€ํ•œ ์‘๋‹ต ์ด :

์ฉ์€ ๋ฌธ์ œ๋Š” 30์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋‹ซํž™๋‹ˆ๋‹ค.
/reopen ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ฝ๋‹ˆ๋‹ค.
/remove-lifecycle rotten ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์ตœ์‹ ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

sig-testing, kubernetes/test-infra ๋ฐ/๋˜๋Š” fejta์— ํ”ผ๋“œ๋ฐฑ์„ ๋ณด๋‚ด์‹ญ์‹œ์˜ค.
/๋‹ซ๋‹ค

PR ๋Œ“๊ธ€์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ kubernetes/test-infra ์ €์žฅ์†Œ์— ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜์„ธ์š”.

๊ธฐ๋Šฅ์€ ์•„์ง ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
/๋‹ค์‹œ ์—ด๋‹ค

@M0rdecay :

์— ๋Œ€ํ•œ ์‘๋‹ต ์ด :

๊ธฐ๋Šฅ์€ ์•„์ง ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
/๋‹ค์‹œ ์—ด๋‹ค

PR ๋Œ“๊ธ€์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ kubernetes/test-infra ์ €์žฅ์†Œ์— ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜์„ธ์š”.

@M0rdecay :

์•Œ์•˜์–ด, ์ดํ•ดํ–ˆ์–ด

aws ecs์—๋„ ๋„์ปค ๋กœ๊น… ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์ด ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
์šฐ๋ฆฌ ํ™˜๊ฒฝ์—์„œ๋Š” ๊ฐ ์ปจํ…Œ์ด๋„ˆ ์„œ๋น„์Šค์— ๋Œ€ํ•ด ๊ณ ์œ ํ•œ ํ† ํฐ์ด ์žˆ๋Š” ๋ณ„๋„์˜ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

"๋กœ๊ทธ ๊ตฌ์„ฑ": {
"logDriver": "splunk",
"์˜ต์…˜": {
"splunk ํ˜•์‹": "์›์‹œ",
"splunk-insecureskipverify": "true",
"splunk-token": "xxxxx-xxxxxxx-xxxxx-xxxxxxx-xxxxxx",
"splunk-url": " https://xxxxx.splunk-heavyforwarderxxx.com ",
"ํƒœ๊ทธ": "{{.Name}}/{{.ID}}",
"splunk-verify-connection": "๊ฑฐ์ง“",
"๋ชจ๋“œ": "๋น„์ฐจ๋‹จ"
}
}

๊ทธ๋Ÿฌ๋‚˜ k8์—์„œ๋Š” ์ด์™€ ๊ฐ™์€ ๊ฒƒ์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ํฌ๋“œ ์ •์˜ ์ž์ฒด์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ต์…˜์€ ์•„์ง ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
/๋‹ค์‹œ ์—ด๋‹ค

@ejemba : ์ด ๋ฌธ์ œ๋ฅผ

์— ๋Œ€ํ•œ ์‘๋‹ต ์ด :

์˜ต์…˜์€ ์•„์ง ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
/๋‹ค์‹œ ์—ด๋‹ค

PR ๋Œ“๊ธ€์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ kubernetes/test-infra ์ €์žฅ์†Œ์— ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜์„ธ์š”.

/ ์„œ๋ช… ๋…ธ๋“œ
/ ์‹œ๊ทธ ์ œ๊ฑฐ ๊ณ„์ธก

/remove-sig ํ™•์žฅ์„ฑ

@logicalhan : ํ•ด๋‹น ๋ ˆ์ด๋ธ”์ด ๋ฌธ์ œ์— ์„ค์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. sig/

์— ๋Œ€ํ•œ ์‘๋‹ต ์ด :

/remove-sig ํ™•์žฅ์„ฑ

PR ๋Œ“๊ธ€์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ kubernetes/test-infra ์ €์žฅ์†Œ์— ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜์„ธ์š”.

์–ด๋–ค ์ง„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ?
๋„์ปค์˜ gelf ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ง€์ •ํ•˜์—ฌ ์™ธ๋ถ€ logstash์— ๋กœ๊ทธ์ธํ•˜๋„๋ก ํฌ๋“œ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํŠน๋ณ„ํžˆ ์ฐพ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. /etc/docker/daemon.json์˜ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ์˜ค๋ฒ„ํ—ค๋“œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ฉ์€ ๋ฌธ์ œ๋Š” 30์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋‹ซํž™๋‹ˆ๋‹ค.
/reopen ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ฝ๋‹ˆ๋‹ค.
/remove-lifecycle rotten ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์ตœ์‹ ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

sig-testing, kubernetes/test-infra ๋ฐ/๋˜๋Š” fejta์— ํ”ผ๋“œ๋ฐฑ์„ ๋ณด๋‚ด์‹ญ์‹œ์˜ค.
/๋‹ซ๋‹ค

@fejta-bot: ์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

์— ๋Œ€ํ•œ ์‘๋‹ต ์ด :

์ฉ์€ ๋ฌธ์ œ๋Š” 30์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋‹ซํž™๋‹ˆ๋‹ค.
/reopen ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ฝ๋‹ˆ๋‹ค.
/remove-lifecycle rotten ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์ตœ์‹ ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

sig-testing, kubernetes/test-infra ๋ฐ/๋˜๋Š” fejta์— ํ”ผ๋“œ๋ฐฑ์„ ๋ณด๋‚ด์‹ญ์‹œ์˜ค.
/๋‹ซ๋‹ค

PR ๋Œ“๊ธ€์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ kubernetes/test-infra ์ €์žฅ์†Œ์— ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜์„ธ์š”.

/๋‹ค์‹œ ์—ด๋‹ค

@andreswebs : ๋ณธ์ธ์ด ์ €์ž‘ํ–ˆ๊ฑฐ๋‚˜ ๊ณต๋™ ์ž‘์—…์ž๊ฐ€ ์•„๋‹Œ ์ด์ƒ ์ด์Šˆ/PR์„ ๋‹ค์‹œ ์—ด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์— ๋Œ€ํ•œ ์‘๋‹ต ์ด :

/๋‹ค์‹œ ์—ด๋‹ค

PR ๋Œ“๊ธ€์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ kubernetes/test-infra ์ €์žฅ์†Œ์— ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜์„ธ์š”.

/๋‹ค์‹œ ์—ด๋‹ค

@ejemba : ์ด ๋ฌธ์ œ๋ฅผ

์— ๋Œ€ํ•œ ์‘๋‹ต ์ด :

/๋‹ค์‹œ ์—ด๋‹ค

PR ๋Œ“๊ธ€์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ kubernetes/test-infra ์ €์žฅ์†Œ์— ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜์„ธ์š”.

@ejemba : ์ด ๋ฌธ์ œ๋Š” ํ˜„์žฌ ๋ถ„๋ฅ˜ โ€‹โ€‹๋Œ€๊ธฐ ์ค‘์ž…๋‹ˆ๋‹ค.

SIG ๋˜๋Š” ํ•˜์œ„ ํ”„๋กœ์ ํŠธ์—์„œ ์ด๊ฒƒ์ด ๊ด€๋ จ ๋ฌธ์ œ๋ผ๊ณ  ํŒ๋‹จํ•˜๋ฉด triage/accepted ๋ ˆ์ด๋ธ”์„ ์ ์šฉํ•˜์—ฌ ์ด๋ฅผ ์ˆ˜๋ฝํ•˜๊ณ  ์ถ”๊ฐ€ ์ง€์นจ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

triage/accepted ๋ ˆ์ด๋ธ”์€ ๋Œ“๊ธ€์— /triage accepted ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์กฐ์ง ๊ตฌ์„ฑ์›์ด ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PR ๋Œ“๊ธ€์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ kubernetes/test-infra ์ €์žฅ์†Œ์— ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜์„ธ์š”.

์ด ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋˜์—ˆ์œผ๋ฉด ์ •๋ง ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ Rancher 1.x ํด๋Ÿฌ์Šคํ„ฐ์—์„œ k8์„ ์‹คํ–‰ํ•˜๋Š” Rancher 2.x ํด๋Ÿฌ์Šคํ„ฐ๋กœ ์›Œํฌ๋กœ๋“œ๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. docker-compose ๊ตฌ์„ฑ์—์„œ log-driver ๋ฐ log-opt ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฐํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜๋‚˜์˜ ํŠน์ • ํ˜ธ์ŠคํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ gelf ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ „์—ญ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ํฌ๋“œ์— ๋ ˆ์ด๋ธ”์„ ์ง€์ •ํ•˜๊ณ  ํ˜ธ์ŠคํŠธ์— ๋ ˆ์ด๋ธ”์„ ์ง€์ •ํ•˜๋„๋ก ๊ตฌ์„ฑํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

CRI-O๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ๋‘ ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ ์ŠคํŠธ๋ฆผ(stdout / stderr)์ด ๋ชจ๋‘ ์›์‹œ ํ˜•์‹์œผ๋กœ ์ˆ˜์ง‘๋˜๊ณ  ๋‚˜์ค‘์— ์›์‹œ๋ฅผ ์ฝ์„ ๋•Œ ๋กœ๊ทธ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์˜ ๋‹ค๋ฅธ ํ•ด์„์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

https://github.com/cri-o/cri-o/pull/1605๋ฅผ ์ฐธ์กฐ

์ฉ์€ ๋ฌธ์ œ๋Š” 30์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋‹ซํž™๋‹ˆ๋‹ค.
/reopen ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ฝ๋‹ˆ๋‹ค.
/remove-lifecycle rotten ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์ตœ์‹ ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

sig-testing, kubernetes/test-infra ๋ฐ/๋˜๋Š” fejta์— ํ”ผ๋“œ๋ฐฑ์„ ๋ณด๋‚ด์‹ญ์‹œ์˜ค.
/๋‹ซ๋‹ค

@fejta-bot: ์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

์— ๋Œ€ํ•œ ์‘๋‹ต ์ด :

์ฉ์€ ๋ฌธ์ œ๋Š” 30์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋‹ซํž™๋‹ˆ๋‹ค.
/reopen ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ฝ๋‹ˆ๋‹ค.
/remove-lifecycle rotten ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์ตœ์‹ ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

sig-testing, kubernetes/test-infra ๋ฐ/๋˜๋Š” fejta์— ํ”ผ๋“œ๋ฐฑ์„ ๋ณด๋‚ด์‹ญ์‹œ์˜ค.
/๋‹ซ๋‹ค

PR ๋Œ“๊ธ€์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ kubernetes/test-infra ์ €์žฅ์†Œ์— ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜์„ธ์š”.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰