Kubernetes: Kubelet/Kubernetes๋Š” Swap Enabled์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

์ด๊ฒƒ์€ ๋ฒ„๊ทธ ๋ณด๊ณ ์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ๊ธฐ๋Šฅ ์š”์ฒญ์ž…๋‹ˆ๊นŒ? :

ํ•˜๋‚˜๋งŒ ์ฃผ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ํ•œ ์ค„์— ๊ทธ๋Œ€๋กœ ๋‘์‹ญ์‹œ์˜ค.

/์ข…๋ฅ˜ ๋ฒ„๊ทธ
/์ข…๋ฅ˜ ๊ธฐ๋Šฅ

๋ฌด์Šจ ์ผ์ด ์žˆ์—ˆ๋Š”์ง€ :

Kubelet/Kubernetes 1.8์€ Linux ์‹œ์Šคํ…œ์—์„œ ํ™œ์„ฑํ™”๋œ ์Šค์™‘์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ์›๋ž˜ ๋ฌธ์ œ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. https://github.com/kubernetes/kubernetes/issues/31676
์ด ํ™๋ณด https://github.com/kubernetes/kubernetes/pull/31996
๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”ํ•œ ๋งˆ์ง€๋ง‰ ๋ณ€๊ฒฝ ์‚ฌํ•ญ https://github.com/kubernetes/kubernetes/commit/71e8c8eba43a0fade6e4edfc739b331ba3cc658a

Kubernetes๊ฐ€ ์Šค์™‘์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ์ œ๊ฑฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๋Š” ๊ฒฝ์šฐ ์ˆ˜ํ–‰ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์•ผ ํ•˜์ง€๋งŒ ์Šค์™‘ ์ œ๊ฑฐ๋ฅผ ์š”์ฒญํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด kernel.org 11์žฅ ์Šค์™‘ ๊ด€๋ฆฌ๋ฅผ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค.

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

๋งŽ์€ ๋…ธ๋“œ/์ž๋ฐ” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ•ญ์ƒ ๋งŽ์€ ํŽ˜์ด์ง€๊ฐ€ ๊ต์ฒด๋˜๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์˜ˆ์ƒํ–ˆ๋˜ ์ผ :

Kubelet/Kubernetes๋Š” ์Šค์™‘์ด ํ™œ์„ฑํ™”๋œ ์ƒํƒœ์—์„œ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์Šค์™‘์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ์„ ํƒ๊ถŒ์„ ์ฃผ์ง€ ์•Š๋Š” ๋Œ€์‹  kubernetes๊ฐ€ ๋” ๋งŽ์€ ์‚ฌ์šฉ ์‚ฌ๋ก€์™€ ๋‹ค์–‘ํ•œ ์›Œํฌ๋กœ๋“œ๋ฅผ ์ง€์›ํ•ด์•ผ ํ•˜๋ฉฐ, ๊ทธ ์ค‘ ์ผ๋ถ€๋Š” ์บ์‹œ์— ์˜์กดํ•  ์ˆ˜ ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubernetes๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์ถ•์ถœ๋กœ ๋ฌด์—‡์„ ์ฃฝ์ผ์ง€ ์–ด๋–ป๊ฒŒ ๊ฒฐ์ •ํ–ˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ Linux์— ์ด ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•  ๋•Œ Linux๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ์ผ์น˜ํ•ด์•ผ ํ• ๊นŒ์š”? https://www.kernel.org/doc/gorman/html/understand/understand016.html

์Šค์™‘์ด ํ™œ์„ฑํ™”๋˜์—ˆ์„ ๋•Œ ์‹คํŒจ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋กค๋ฐฑํ•˜๊ณ  ํ˜„์žฌ kubernetes์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์ œ๊ฑฐ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์„ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ์›Œํฌ๋กœ๋“œ์—์„œ๋Š” ์Šค์™‘์ด ์ค‘์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์„ ์žฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•(๊ฐ€๋Šฅํ•œ ํ•œ ์ตœ์†Œํ•œ์œผ๋กœ ๊ทธ๋ฆฌ๊ณ  ์ •ํ™•ํ•˜๊ฒŒ) :

Linux ์ƒ์ž์—์„œ ๊ธฐ๋ณธ ์„ค์ •์œผ๋กœ kubernetes/kublet ์‹คํ–‰

์šฐ๋ฆฌ๊ฐ€ ์•Œ์•„์•ผ ํ•  ๋‹ค๋ฅธ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? :

ํ™˜๊ฒฝ :

  • Kubernetes ๋ฒ„์ „( kubectl version ):
  • ํด๋ผ์šฐ๋“œ ๊ณต๊ธ‰์ž ๋˜๋Š” ํ•˜๋“œ์›จ์–ด ๊ตฌ์„ฑ**:
  • OS(์˜ˆ: /etc/os-release):
  • ์ปค๋„(์˜ˆ: uname -a ):
  • ๋„๊ตฌ ์„ค์น˜:
  • ๊ธฐํƒ€:

/sig ๋…ธ๋“œ
cc @mtaufen @vishh @derekwaynecarr @dims

kinfeature sinode

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

๊ธฐ๋ณธ์ ์œผ๋กœ ์Šค์™‘์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์ด ๋ง์„ ๋“ฃ๊ณ  ๋†€๋ž์Šต๋‹ˆ๋‹ค. Kubernetes๊ฐ€ ์ „์„ฑ๊ธฐ๋ฅผ ๋งž์ดํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‚˜์š”? ์Šค์™‘์€ ๊ทธ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐฉํ˜• ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ ์‹ค์ œ๋กœ ์„ ํƒ ์‚ฌํ•ญ์ด ์•„๋‹™๋‹ˆ๋‹ค. VMM์ด ๋น„ํ™œ์„ฑ ํŽ˜์ด์ง€๋ฅผ ์ „ํ™˜ํ•˜๋ฉด์„œ Unix ์—์ฝ”์‹œ์Šคํ…œ์ด ์‹คํ–‰๋˜๋„๋ก ์„ค๊ณ„๋œ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

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

๋ˆ„๊ตฐ๊ฐ€ ๋ช…ํ™•ํžˆ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฉ”๋ชจ๋ฆฌ ์ œ๊ฑฐ ๋ฌธ์ œ๋Š” ํฌ๋“œ ์ •์˜์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋ฌธ์ œ์ด์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ดœ์ฐฎ์Šต๋‹ˆ๊นŒ?

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

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

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

์Šค์™‘ ์ง€์›์€ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ณด์žฅ๋œ ํฌ๋“œ๋Š” ์Šค์™‘์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฒ„์ŠคํŠธ ๊ฐ€๋Šฅํ•œ ํฌ๋“œ๋Š” ์Šค์™‘ ์—†์ด ์š”์ฒญ์„ ์ถฉ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. BestEffort ํฌ๋“œ๋Š” ๋ณด์ฆํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. kubelet์€ ํ˜„์žฌ ์—ฌ๊ธฐ์—์„œ ํฌ๋“œ ์ „๋ฐ˜์— ๊ฑธ์ณ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์ ์ ˆํ•œ ์–‘์˜ ๋™์ž‘์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ์˜๋ฆฌํ•จ์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค.

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

/์ข…๋ฅ˜ ๊ธฐ๋Šฅ

@derekwaynecarr ์„ค๋ช… ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! kubernetes์— ๋Œ€ํ•ด ์Šค์™‘์„ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•˜๋Š” ์ •๋ณด/๋ฌธ์„œ๋ฅผ ์–ป๊ธฐ๊ฐ€ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ œ๊ฐ€ ์ด ์ฃผ์ œ๋ฅผ ์—ด๊ฒŒ ๋œ ์ฃผ๋œ ์ด์œ ์˜€์Šต๋‹ˆ๋‹ค. ํ˜„์‹œ์ ์—์„œ ์ €๋Š” ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹จ์ง€ ๋…ผ์˜ํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์†Œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์—ˆ์„ ๋ฟ์ž…๋‹ˆ๋‹ค.

https://github.com/kubernetes/kubernetes/issues/7294 ํ† ๋ก ์— ๋” ๋งŽ์€ ์ปจํ…์ŠคํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šค์™‘์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ๊ณผ ๋งค์šฐ ์ด์ƒํ•˜๊ณ  ๋‚˜์œ ์ƒํ˜ธ ์ž‘์šฉ์„ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์— ๋„๋‹ฌํ•œ ์ปจํ…Œ์ด๋„ˆ๋Š” ์Šค์™‘์œผ๋กœ ๋„˜์น˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค(์ด๋Š” f4edaf2b8c32463d6485e2c12b7fd776aef948bc ์ดํ›„๋กœ ์ˆ˜์ •๋œ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์Šค์™‘์ด ์žˆ๋“  ์—†๋“  ๊ฐ„์— ์Šค์™‘์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ).

์ด๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ๋„ ์ค‘์š”ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค. ๋•Œ๋•Œ๋กœ ๋†’์€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰(>30GB)์— ๋„๋‹ฌํ•˜๋Š” cron ์ž‘์—…์ด ์žˆ์œผ๋ฉฐ 40GB ์ด์ƒ์˜ ๋…ธ๋“œ๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ํ• ๋‹นํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ 3๊ฐœ์˜ ์˜์—ญ(GKE)์—์„œ ์‹คํ–‰ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด 3๊ฐœ์˜ ์ด๋Ÿฌํ•œ ๋จธ์‹ (๊ฐ ์˜์—ญ์— 1๊ฐœ)์ด ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๊ตฌ์„ฑ์€ 3๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ๋•์…˜ ์ธ์Šคํ„ด์Šค์™€ 10๊ฐœ ์ด์ƒ์˜ ํ…Œ์ŠคํŠธ ์ธ์Šคํ„ด์Šค์—์„œ ๋ฐ˜๋ณต๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ K8์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๋น„์šฉ์ด ๋งŽ์ด ๋“ญ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—„์ฒญ๋‚œ ๋น„์šฉ์„ ๋ฐœ์ƒ์‹œํ‚ค๋Š” 25๊ฐœ ์ด์ƒ์˜ 48GB ๋…ธ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค!.
์Šค์™‘์„ ํ™œ์„ฑํ™”ํ•˜์‹ญ์‹œ์˜ค!.

์ •๋ง๋กœ ์Šค์™‘์„ ์›ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋„ˆ๋ผ๋ฉด

  • --fail-swap-on=false kubelet ์‹œ์ž‘
  • ๋…ธ๋“œ์— ์Šค์™‘ ์ถ”๊ฐ€
  • ๋ฉ”๋ชจ๋ฆฌ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ง€์ •ํ•˜์ง€ ์•Š๋Š” ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์Šค์™‘์„ ํฌํ•จํ•œ ๋ชจ๋“  ๋จธ์‹  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

์šฐ๋ฆฌ๋Š” GKE์—์„œ ์‹คํ–‰๋˜๋ฉฐ ์ด๋Ÿฌํ•œ ์˜ต์…˜์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ kubelet์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์ œ๊ฑฐ์— ๋Œ€ํ•œ ์˜ํ–ฅ์„ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด zswap ์ฑ„ํƒ์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ์ปฌ Ubuntu ๋…ธํŠธ๋ถ์—์„œ Kubernetes๋ฅผ ์‹คํ–‰ ์ค‘์ด๋ฉฐ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ๋•Œ๋งˆ๋‹ค ์Šค์™‘์„ ๊บผ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์Šค์™‘์ด ๊บผ์ ธ ์žˆ์œผ๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์— ๊ทผ์ ‘ํ•˜์ง€ ์•Š๋„๋ก ๊ฑฑ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์‹œ ์‹œ์ž‘ํ•  ๋•Œ๋งˆ๋‹ค ๊ธฐ์กด ์„ค์น˜์˜ ์ผ๋ถ€ ๊ตฌ์„ฑ ํŒŒ์ผ ๋ณ€๊ฒฝ๊ณผ ๊ฐ™์ด ์Šค์™‘์„ ๋Œ ํ•„์š”๊ฐ€ ์—†๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‹คํ–‰๋˜๋Š” ๋…ธ๋“œ์—์„œ ์Šค์™‘์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์Šค์™‘์„ ์ผœ์•ผ ํ•˜๋Š” Kubernetes Local Dev ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์•„๋‹Œ ๋‚ด ๋žฉํ†ฑ์˜ ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค.

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.2", GitCommit:"5fa2db2bd46ac79e5e00a4e6ed24191080aa463b", GitTreeState:"clean", BuildDate:"2018-01-18T10:09:24Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.2", GitCommit:"5fa2db2bd46ac79e5e00a4e6ed24191080aa463b", GitTreeState:"clean", BuildDate:"2018-01-18T09:42:01Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}

์ง€๊ธˆ์€ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

# systemctl restart kubelet --fail-swap-on=false
systemctl: unrecognized option '--fail-swap-on=false'

๋‹ค์Œ Kubelet ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. --fail-swap-on=false

2018๋…„ 1์›” 30์ผ ํ™”์š”์ผ ์˜คํ›„ 1์‹œ 59๋ถ„์— icewheel [email protected]์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

๋กœ์ปฌ Ubuntu ๋…ธํŠธ๋ถ์—์„œ Kubernetes๋ฅผ ์‹คํ–‰ ์ค‘์ด๋ฉฐ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ๋•Œ๋งˆ๋‹ค
์Šค์™‘์„ ๊บผ์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์–ต์— ๊ฐ€๊นŒ์ด ๊ฐ€์ง€ ์•Š๋Š” ๊ฒƒ๋„ ์‹ ๊ฒฝ์จ์•ผ ํ•ด
์Šค์™‘์ด ๊บผ์ ธ ์žˆ์œผ๋ฉด ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์‹œ ์‹œ์ž‘ํ•  ๋•Œ๋งˆ๋‹ค ์Šค์™‘์„ ๋Œ ํ•„์š”๊ฐ€ ์—†๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?
๊ธฐ์กด ์„ค์น˜์—์„œ ๊ตฌ์„ฑ ํŒŒ์ผ ๋ณ€๊ฒฝ?

ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‹คํ–‰๋˜๋Š” ๋…ธ๋“œ์—์„œ ์Šค์™‘์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Kubernetes Local Dev ์ด์™ธ์˜ ๋žฉํ†ฑ์— ์žˆ๋Š” ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.
์Šค์™‘์„ ์ผœ์•ผ ํ•˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/kubernetes/kubernetes/issues/53533#issuecomment-361748518 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AA3JwQdj2skL2dSqEVyV46iCllzT-sOVks5tP5DSgaJpZM4PwnD5
.

--
๋งˆ์ดํด ํƒ€์šฐํŽœ
๊ตฌ๊ธ€ SWE

@mtaufen ๊ฐ์‚ฌ

terraform๊ณผ ๊ฐ™์ด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ถ€ํŠธ์ŠคํŠธ๋žฉํ•˜๋Š” ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ ์„œ๋น„์Šค ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ์Šต๋‹ˆ๋‹ค.

sudo sed -i '/kubelet-wrapper/a \ --fail-swap-on=false \\\' /etc/systemd/system/kubelet.service

๊ธฐ๋ณธ์ ์œผ๋กœ ์Šค์™‘์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์ด ๋ง์„ ๋“ฃ๊ณ  ๋†€๋ž์Šต๋‹ˆ๋‹ค. Kubernetes๊ฐ€ ์ „์„ฑ๊ธฐ๋ฅผ ๋งž์ดํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‚˜์š”? ์Šค์™‘์€ ๊ทธ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐฉํ˜• ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ ์‹ค์ œ๋กœ ์„ ํƒ ์‚ฌํ•ญ์ด ์•„๋‹™๋‹ˆ๋‹ค. VMM์ด ๋น„ํ™œ์„ฑ ํŽ˜์ด์ง€๋ฅผ ์ „ํ™˜ํ•˜๋ฉด์„œ Unix ์—์ฝ”์‹œ์Šคํ…œ์ด ์‹คํ–‰๋˜๋„๋ก ์„ค๊ณ„๋œ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

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

๋ˆ„๊ตฐ๊ฐ€ ๋ช…ํ™•ํžˆ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฉ”๋ชจ๋ฆฌ ์ œ๊ฑฐ ๋ฌธ์ œ๋Š” ํฌ๋“œ ์ •์˜์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋ฌธ์ œ์ด์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ดœ์ฐฎ์Šต๋‹ˆ๊นŒ?

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

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

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

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

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

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

ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ( K8s Version - v1.11.2 )์— ๋งŽ์€ ์ˆ˜์˜ ๋””์Šคํฌ ์ฝ๊ธฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šค์™‘ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

https://stackoverflow.com/questions/51988566/high-number-of-disk-reads-in-kubernetes-nodes

@srevenant ํด๋Ÿฌ์Šคํ„ฐ ์„ธ๊ณ„์—์„œ ๋‹ค๋ฅธ ๋…ธ๋“œ์˜ RAM์€ ์ƒˆ๋กœ์šด ์Šค์™‘์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์Šค์™‘์ด ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ๋‘ ๊ฐœ์˜ 1๋…ธ๋“œ K8 ์ธ์Šคํ„ด์Šค๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ K8์˜ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

@srevenant ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. SWAP์€ Unix์™€ Linux๊ฐ€ ํƒœ์–ด๋‚  ๋•Œ๋ถ€ํ„ฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Linux์—์„œ 15๋…„ ๋™์•ˆ ์ž‘์—…ํ•˜๋ฉด์„œ SWAP์„ ํ•ด์ œํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ์•ฑ์„ ๋ณธ ์ ์ด ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋ฌธ์ œ SWAP๋Š” Linux ๋ฐฐํฌํŒ์„ ์„ค์น˜ํ•  ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•ญ์ƒ ์ผœ์ ธ ์žˆ์œผ๋ฏ€๋กœ K8์„ ์„ค์น˜ํ•˜๊ธฐ ์ „์— ์ด๋ฅผ ํ•ด์ œํ•ด์•ผ ํ•˜๊ณ  ๊ทธ๊ฒƒ์€ ๋†€๋ผ์šด ์ผ์ด์—ˆ์Šต๋‹ˆ๋‹ค.
Linux ์ปค๋„์€ ํŠนํžˆ ์„œ๋ฒ„๊ฐ€ RAM ํ•œ๊ณ„์— ๋„๋‹ฌํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์ผ์‹œ์ ์œผ๋กœ ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด SWAP์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž˜ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
K8์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋ ค๋ฉด SWAP๋ฅผ ๊บผ์•ผ ํ•œ๋‹ค๋Š” ๋œป์ธ๊ฐ€์š”?

๋‚˜๋Š” ์ด ์ผ์„ ํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ๊ณ  ํ…Œ์ŠคํŠธํ•  ๊ธฐ์ˆ ๊ณผ ๋งŽ์€ ๊ธฐ๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์—ฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋””์—์„œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์„๊นŒ์š”?

@superdave ๋Š” kubernetes/community์— ์Šค์™‘์„ ์ง€์›ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๋Š” KEP๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  sig-node์— ์ œ์‹œํ•˜์‹ญ์‹œ์˜ค. ์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์˜ ๋„์›€์„ ๋ฐ›๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

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

์Šค์™‘์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ๋…ธ๋“œ์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•  ๋•Œ ๋…ธ๋“œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์Šค์™‘ ๋ฌธ์ œ๋ฅผ Kubernetes์—์„œ ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 3๊ฐœ์˜ ์ž‘์—…์ž ๋…ธ๋“œ(๊ฐ๊ฐ 20GB์˜ ๋žจ)๊ฐ€ ์žˆ๊ณ  ๋žจ ์ œํ•œ์— ๋„๋‹ฌํ•˜์—ฌ ํ•˜๋‚˜์˜ ๋…ธ๋“œ๊ฐ€ ๋‹ค์šด๋˜๋Š” ๊ฒฝ์šฐ 2๊ฐœ์˜ ๋‹ค๋ฅธ ์ž‘์—…์ž ๋…ธ๋“œ๋„ ํ•ด๋‹น ์‹œ๊ฐ„์— ๋ชจ๋“  ํŒŸ(Pod)์„ ํ•ด๋‹น ๋…ธ๋“œ๋กœ ์ „์†กํ•œ ํ›„ ๋‹ค์šด๋ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ผ ๋ฉ”๋ชจ๋ฆฌ ์š”์ฒญ์„ ์„ค์ •ํ•˜์—ฌ ์ด๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ํ•„์š”.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฉ”๋ชจ๋ฆฌ์˜ 3๋ถ„์˜ 1์ด 2๋ฐฐ ์ •๋„์ธ ๊ฒฝ์šฐ
์ €์žฅ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋ฉด ์œ ์šฉํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

2018๋…„ 9์›” 26์ผ ์ˆ˜์š”์ผ ์˜ค์ „ 6์‹œ 51๋ถ„์— vasicvuk [email protected]์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์Šค์™‘ ๋ฌธ์ œ๊ฐ€ Kubernetes์—์„œ ํ•ด๊ฒฐ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์Šค์™‘์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ๋…ธ๋“œ์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•  ๋•Œ ๋…ธ๋“œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์„์œ„ํ•œ
์˜ˆ๋ฅผ ๋“ค์–ด 3๊ฐœ์˜ ์ž‘์—…์ž ๋…ธ๋“œ(๊ฐ๊ฐ 20GB์˜ ๋žจ)๊ฐ€ ์žˆ๊ณ  ํ•˜๋‚˜์˜ ๋…ธ๋“œ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๊ฒฝ์šฐ
๋žจ์˜ ํ•œ๊ณ„์— ๋„๋‹ฌํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์šด๋จ 2๊ฐœ์˜ ๋‹ค๋ฅธ ์ž‘์—…์ž ๋…ธ๋“œ๋„ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ ์‹œ๊ฐ„์— ๊ทธ๋“ค์—๊ฒŒ ๋ชจ๋“  ํฌ๋“œ๋ฅผ ์ „์†กํ•œ ํ›„ ๋‹ค์šด.

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/kubernetes/kubernetes/issues/53533#issuecomment-424604731 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAICBqZApBscFl5aNA4IcYvlxcvPA88Tks5ueyPlgaJpZM4PwnD5
.

@matthiasr 10-50 ์„œ๋น„์Šค๊ฐ€ ์žˆ์„ ๋•Œ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ 200๊ฐœ ์ด์ƒ์˜ ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์žˆ๊ณ  ๊ทธ ์ค‘ ์ ˆ๋ฐ˜์ด ๋ฉ”๋ชจ๋ฆฌ ์š”์ฒญ ์—†์ด ๊ณต์‹ Helm ์ฐจํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌ๋˜๋Š” ๊ฒฝ์šฐ ์†์ด ๋งŽ์ด ๊ฐ‘๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ˆ„๋ฝ๋œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๋ฌธ์ œ๋ฅผ ์š”์ฒญํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๋งŽ์€ ๊ฒฝ์šฐ @matthiasr ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ•œ ๋ฒˆ๋งŒ ์‚ฌ์šฉ๋˜๊ฑฐ๋‚˜ ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ํ”„๋กœ์„ธ์Šค์— ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์œ ํšจํ•œ ๊ฒฝ์šฐ์ด๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์Šค์™‘ํ•˜๋ฉด ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ๊ฒฐ๊ตญ ์Šค์™‘๋˜๊ณ  ๋‹ค์‹œ๋Š” ์Šค์™‘ ์ธ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋” ๋‚˜์€ ์‚ฌ์šฉ์„ ์œ„ํ•ด ๋น ๋ฅธ ๋žจ์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.

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

์Šค์™‘์„ ํ™œ์„ฑํ™”ํ•ด๋„ ์ปค๋„ ๋™์ž‘์ด ํฌ๊ฒŒ ๋ณ€๊ฒฝ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. COW ๋งคํ•‘๋œ ํŒŒ์ผ์—์„œ ๋กœ๋“œ๋œ ์ˆ˜์ •๋œ ํŽ˜์ด์ง€๋‚˜ ์ต๋ช… ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒดํ•  ๊ณต๊ฐ„์„ ์ œ๊ณตํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์Šค์™€ํ•‘์„ ์™„์ „ํžˆ ๋Œ ์ˆ˜๋Š” ์—†์œผ๋ฏ€๋กœ K8์€ ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ์˜ ์ต๋ช… ๋ฉ”๋ชจ๋ฆฌ ์Šค์™€ํ•‘์ด ํ™œ์„ฑํ™” ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด ๊ทธ ์กด์žฌ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ด๊ฒƒ์„ ๋ฒ„๊ทธ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋Œ ์ˆ˜ ์—†๋Š” ์ปค๋„ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@๋ณธ

์ปค๋„์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ๋˜๋Š” ๋‹จ์ˆœํžˆ ์‚ฌ์šฉ ๋ถ€์กฑ์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ๋ชจ๋“  ํŒŒ์ผ ์ง€์› ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค. ์Šค์™‘์„ ํ™œ์„ฑํ™”ํ•ด๋„ ์ปค๋„ ๋™์ž‘์ด ํฌ๊ฒŒ ๋ณ€๊ฒฝ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

์Šค์™€ํ•‘์„ ์™„์ „ํžˆ ๋Œ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

๋‚˜ ์ž์‹ ์„ ๊ต์œกํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด์— ๋Œ€ํ•œ ์ฐธ๊ณ  ์ž๋ฃŒ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฉ”๋ชจ๋ฆฌ์— ํŒŒ์ผ์„ ๊ณ ์ •ํ•˜์ง€ ์•Š๋Š” ํ•œ(K8์—๋Š” ์ตœ์†Œํ•œ ์‹คํ–‰ ํŒŒ์ผ์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ์ด ์žˆ์–ด์•ผ ํ•จ)

k8์ด ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์ •์  ์ด๋ฉด ํฌ๋“œ์˜ tmpfs๋กœ ๋ณต์‚ฌํ•˜๋ฉด ํŽ˜์ด์ง• ๋Œ€๊ธฐ ์‹œ๊ฐ„์— ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

@adityakali ์Šค์™‘์ด ๊บผ์ ธ ์žˆ์„ ๋•Œ ์ปค๋„์—์„œ ์Šค์™‘์˜ ์˜ํ–ฅ์— ๋Œ€ํ•œ ์ƒ๊ฐ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‚˜ ์ž์‹ ์„ ๊ต์œกํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด์— ๋Œ€ํ•œ ์ฐธ๊ณ  ์ž๋ฃŒ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

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

๋ฌผ๋ก  ์œ„์˜ ์„ค๋ช…์—์„œ ๊ฑด๋„ˆ๋›ฐ๋Š” ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ, ์‹คํ–‰ ํŒŒ์ผ์€ ๋žจ์— ์ž์‹ ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์˜ "์ž ๊ธˆ"๋ถ€๋ถ„์€ ์‚ฌ์šฉ ํ•  ์ˆ˜ mlock ๋ฅผ ํ†ตํ•ด ํ˜„๋ช…ํ•œ ์ผ ์ฝœ์˜ ๊ฐ€์กฑ์„ madvise() , ๋™์ผํ•œ ํŽ˜์ด์ง€๋ฅผ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ณต์žกํ•ด์ง„๋‹ค (์˜ˆ: libc.so) ๋“ฑ. ํ•ด๋‹น ๋งจํŽ˜์ด์ง€๋‚˜ ๊ต๊ณผ์„œ ๋˜๋Š” Linux ์ปค๋„ ์†Œ์Šค/๋ฌธ์„œ/๋ฉ”์ผ๋ง ๋ชฉ๋ก๊ณผ ๊ฐ™์€ ์ผ๋ฐ˜์ ์ธ ๋‚ด์šฉ ์™ธ์— ๋” ๋งŽ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์œ ์šฉํ•œ ํฌ์ธํ„ฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

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

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

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

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

@superdave : ์ €๋„ ์—ฌ๊ธฐ์„œ ํ˜„์ƒํƒœ๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋ฌธ์„œ๋ฅผ ๊ฒ€ํ† ํ•˜๊ฑฐ๋‚˜ ํ‚ค๋ณด๋“œ์—์„œ ์†์„ ๋ณด๋„๋ก ํ•˜๋ ค๋ฉด ์ €๋ฅผ ํฌํ•จ์‹œ์ผœ ์ฃผ์„ธ์š”.

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

@superdave : ์ €๋„ ์—ฌ๊ธฐ์„œ ํ˜„์ƒํƒœ๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋ฌธ์„œ๋ฅผ ๊ฒ€ํ† ํ•˜๊ฑฐ๋‚˜ ํ‚ค๋ณด๋“œ์—์„œ ์†์„ ๋ณด๋„๋ก ํ•˜๋ ค๋ฉด ์ €๋ฅผ ํฌํ•จ์‹œ์ผœ ์ฃผ์„ธ์š”.

๋‹น๋ฉดํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ข‹์€ ์š”์•ฝ! ์Šค์™‘ ์Šค๋ž˜์‹ฑ์€ ์‹ค์ œ๋กœ ์—ฌ๊ธฐ์„œ ํ•ต์‹ฌ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ํ•ฉ๋ฆฌ์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ถฉ๋ถ„ํžˆ ์ƒ๊ฐํ•ด ๋ณผ ์‹œ๊ฐ„์ด ์—†์—ˆ์ง€๋งŒ, ์Šค์™€ํ•‘ ํ™œ๋™(์ฃผ์–ด์ง„ ์‹œ๊ฐ„ ํ”„๋ ˆ์ž„์— ๋Œ€ํ•œ ํŽ˜์ด์ง€์ธ/์•„์›ƒ, ์•„๋งˆ๋„ ๋„ˆ๋ฌด ์—ด์‹ฌ์ธ ๊ฒฝ์šฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ผ์‹œ์ ์œผ๋กœ ๊ธ‰์ฆํ•จ) ์Šค์™‘์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ์ œ๊ฑฐ ๋Œ€์ƒ์„ ํ‰๊ฐ€ํ•˜๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ๋ฉ”ํŠธ๋ฆญ์ด ์žˆ์œผ๋ฉฐ ๊ฐ€๋Šฅํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์‹ ์ค‘ํ•˜๊ฒŒ ํ‰๊ฐ€ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋งŒ์งˆ ์ˆ˜ ์žˆ๋Š” ๋งŽ์€ ์†์žก์ด๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์ƒํ˜ธ ์ž‘์šฉ์„ ์œ„ํ•ด ํฌ๋“œ๋ฅผ ๊ณ„์ธกํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์‚ฌ๋žŒ๋“ค์ด ๋” ์ž˜ ์กฐ์ •ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ง€๊ธˆ ๊ฑฐ๊ธฐ์— ๋ฌด์—‡์ด ์žˆ๋Š”์ง€ ๋งํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฏธ ์ œ์•ˆ๋œ ๊ฒƒ์— ๋Œ€ํ•ด ์ถฉ๋ถ„ํžˆ ์ต์ˆ™ํ•˜์ง€ ์•Š์ง€๋งŒ, ๋‚˜๋Š” ๋‚ด๊ฐ€ ์•Œ์•„๋‚ผ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ฐœ๋ณ„ ํฌ๋“œ/์ปจํ…Œ์ด๋„ˆ์—์„œ ์Šค์™€ํ•‘ ๋™์ž‘์„ ์–ผ๋งˆ๋‚˜ ์ž˜ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„์•ผ ํ•˜๋Š” ์ปจํŠธ๋กค์— ์ต์ˆ™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ณด์กด ๋˜๋Š” ๊ตํ™˜์„ ์œ„ํ•ด ์‚ฌ๋ฌผ์„ "์ˆ˜์ •"ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ๋„์›€์ด ๋  ๊ฒƒ์ด์ง€๋งŒ, ๊ฐœ๋ฐœ์ž๋Š” ๋ถ„๋ช…ํžˆ ์ƒ์ฃผํ•  ๊ฒƒ์„ ์ ˆ๋Œ€์ ์œผ๋กœ ๋ณด์žฅํ•ด์•ผ ํ•  ๋•Œ mlock()์„ ์ž์œ ๋กญ๊ฒŒ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด์จŒ๋“ , ๋„ค, ์ €๋Š” ์ ˆ๋Œ€์ ์œผ๋กœ ์ด ์ผ์„ ์ง„ํ–‰ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ตœ๊ทผ์— ์ง์žฅ์—์„œ ๋ถ๋ณ๋‹ค(๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ถ€์ ์ ˆํ•˜๊ฒŒ ํฐ ์šฉ๋Ÿ‰์„ ๋งŒ๋“ค์ง€ ์•Š๋Š” ํ•œ 99%์˜ ์‹œ๊ฐ„์ด RAM์„ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€ํ•˜ ์ƒํƒœ์—์„œ ์Šค์™‘ํ•  ์ˆ˜ ์žˆ๋Š” ์ด์ ์ด ์žˆ๋Š” k8s์—์„œ ์ž์ฒด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ผ๋ถ€ OOM ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์š”์ฒญ), ํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๊ณ„์† ์ €์—๊ฒŒ ๋ง์”€ํ•ด ์ฃผ์‹ญ์‹œ์˜ค. ๋‚˜๋Š” ์ „์— KEP ํ”„๋กœ์„ธ์Šค์— ์ฐธ์—ฌํ•œ ์ ์ด ์—†์œผ๋ฏ€๋กœ ๊ฝค ์นœํ™˜๊ฒฝ์ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์š”์ฆ˜์€ ํด๋ง ๋ฐฉ์‹๋ณด๋‹ค ์ธํ„ฐ๋ŸฝํŠธ ๋ฐฉ์‹์œผ๋กœ ํ›จ์”ฌ ๋” ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. :-)

์ €๋Š” zram์ด ์Šค์™‘์— ํŽธ์Šนํ•˜์—ฌ ์ž‘๋™ํ•œ๋‹ค๋Š” ์ ์„ ์ง€์ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. k8์— ์Šค์™‘์ด ์—†์œผ๋ฉด ๋Œ€๋ถ€๋ถ„์˜ ๋น„ Linux OS๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์••์ถ•์ด ์—†์Šต๋‹ˆ๋‹ค(Windows, MacOS ํ).

์šฐ๋ฆฌ๋Š” ๋งค์ผ ๋ฐค ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์†Œ๋ชจํ•˜๋Š” ๋Œ€๊ทœ๋ชจ ๋ฐฐ์น˜ ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋Š” Ubuntu ์ธ์Šคํ„ด์Šค๋ฅผ k8์— ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘์—… ๋ถ€ํ•˜๊ฐ€ ๋ฏธ๋ฆฌ ๊ฒฐ์ •๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— OOM์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„์— ๊ด€๊ณ„์—†์ด ๋…ธ๋“œ์— 16GB๋ฅผ (๋น„์‹ธ๊ฒŒ) ํ• ๋‹นํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋กœ์ปฌ ๊ฐœ๋ฐœ ์„œ๋ฒ„์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์••์ถ•์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž‘์—…์ด ์ตœ๋Œ€ 3GB์— ๋ถˆ๊ณผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‚ฎ์—๋Š” 1GB์˜ ๋ฉ”๋ชจ๋ฆฌ๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์Šค์™‘์„ ๊ธˆ์ง€ํ•˜๊ณ  ๋”ฐ๋ผ์„œ ๋ฉ”๋ชจ๋ฆฌ ์••์ถ•์„ ๊ธˆ์ง€ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์–ด๋ฆฌ์„์€ ํ–‰๋™์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ๊ฐ€์žฅ ํฐ ๊ด€์‹ฌ์‚ฌ๋Š” ์•„๋งˆ๋„ ๊ณ ๋ฆฝ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์‹œ์Šคํ…œ์€ ์ˆ˜๋งŽ์€ ํฌ๋“œ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ์Šค์™€ํ•‘์„ ์‹œ์ž‘ํ•˜์—ฌ ์„œ๋กœ์˜ ์„ฑ๋Šฅ์„ ์™„์ „ํžˆ ํŒŒ๊ดดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šค์™‘์ด ์—†์œผ๋ฉด ๊ฒฉ๋ฆฌ๊ฐ€ ํ›จ์”ฌ ์‰ฝ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ๊ฐ€์žฅ ํฐ ๊ด€์‹ฌ์‚ฌ๋Š” ์•„๋งˆ๋„ ๊ณ ๋ฆฝ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์‹œ์Šคํ…œ์€ ์ˆ˜๋งŽ์€ ํฌ๋“œ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ์Šค์™€ํ•‘์„ ์‹œ์ž‘ํ•˜์—ฌ ์„œ๋กœ์˜ ์„ฑ๋Šฅ์„ ์™„์ „ํžˆ ํŒŒ๊ดดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šค์™‘์ด ์—†์œผ๋ฉด ๊ฒฉ๋ฆฌ๊ฐ€ ํ›จ์”ฌ ์‰ฝ์Šต๋‹ˆ๋‹ค.

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

์Šค์™‘์„ ํ™œ์„ฑํ™”ํ•˜๋ฉด ์‹ค์ œ๋กœ ๊ฒฉ๋ฆฌ๊ฐ€ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

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

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

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

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

์ด๊ฒƒ์ด ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ๋Š” ์ƒํ•œ์ด ๊ฐ€๋ณ€์ ์ด๋ฉฐ ์ผ๋ถ€ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด ํ•ญ์ƒ ์•Œ๋ ค์ง„ ๊ฒƒ์€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ œ๊ฐ€ ๋‹ค๋ฃจ๊ณ  ์žˆ๋Š” ๋ฌธ์ œ๋Š” ํŠนํžˆ k8์„ ์‚ฌ์šฉํ•˜์—ฌ 3d ๋ชจ๋ธ ๋ Œ๋”๋Ÿฌ ๋…ธ๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค. ๋ Œ๋”๋ง๋˜๋Š” ๋ชจ๋ธ ๋ฐ ์žฅ๋ฉด์˜ ์ž์‚ฐ์— ๋”ฐ๋ผ ํ•„์š”ํ•œ ๋žจ์˜ ์–‘์ด ์ƒ๋‹นํžˆ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋Œ€๋ถ€๋ถ„์˜ ๋ Œ๋”๋ง์€ ์ž‘์ง€๋งŒ _์ผ๋ถ€_๊ฐ€ ํด ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์€ ์šฐ๋ฆฌ์˜ ์š”์ฒญ๊ณผ ์ œํ•œ์ด ํ›จ์”ฌ ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์˜ˆ์•ฝํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค ํฌ๋“œ๊ฐ€ ๋•Œ๋•Œ๋กœ ๊ตฌ์„ฑ๋œ ์ œํ•œ์„ ์ดˆ๊ณผํ•˜์—ฌ ์Šค์™‘ ๊ณต๊ฐ„์œผ๋กœ ๋„˜๊ธธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค OOM์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์‹ค์ œ๋กœ ์‹œ๊ฐ„์˜ 90%๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, ๊ทธ ๊ฒฝ์šฐ ์ƒํ•œ์„ ์„ "์—†์Œ" ๋˜๋Š” ๊ทธ ํšจ๊ณผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ œ ์š”์ ์€ ๊ธฐ๋ณธ๊ฐ’์ด ๋˜์–ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋ฌด๊ฒƒ๋„ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋งˆ์Šคํ„ฐ๊ฐ€ "๋ฐฐ๋‚ญ"(kubelet)์— ๋„ฃ์„ "ํ•ญ๋ชฉ"(์ž‘์—…)์˜ ํฌ๊ธฐ๋ฅผ ๋‹จ์ˆœํžˆ ์•Œ์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์ง€๋Šฅํ˜• ์›Œํฌ๋กœ๋“œ ์Šค์ผ€์ค„๋ง์„ ์™„์ „ํžˆ ๋ฌดํšจํ™”ํ•ฉ๋‹ˆ๋‹ค.

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

Borg์˜ ํ”„๋กœ๊ทธ๋žจ์€ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๊ณ  ์–ธ์ œ๋“ ์ง€ ์„ ์ ํ˜•(์ „๋ฌธ ์šฉ์–ด์— ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ์ข…๋ฃŒ ๊ฐ€๋Šฅ)์œผ๋กœ ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‹ค์ œ๋กœ Google ์™ธ๋ถ€์—์„œ ๋งŽ์ด ๋ณผ ์ˆ˜ ์—†๋Š” ๊ฒƒ์ด๋ฉฐ ํ”„๋กœ๊ทธ๋žจ์˜ ์ž ์žฌ์ ์ธ ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ์‚ฌ๋ง์„ ์ธ์ •ํ•˜๋ฉด ํ›จ์”ฌ ๋” ์•ˆ์ •์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๋น—๋‚˜๊ฐ„๋‹ค.

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

์ €๋ฅผ ์˜คํ•ดํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์ด ์ผ์„ ์‹คํ–‰ํ•˜๋Š” ์œ ์ผํ•œ "์˜ฌ๋ฐ”๋ฅธ"๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹จ์ง€ ๋””์ž์ธ์— ๋“ค์–ด๊ฐ„ ๊ฐ€๋Šฅํ•œ ๊ทผ๊ฑฐ๋ฅผ ์„ค๋ช…ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๋ฟ์ž…๋‹ˆ๋‹ค.

๋ฉด์ฑ… ์กฐํ•ญ: ์ €๋Š” Borg๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ดˆ๋Œ€ํ˜• ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•œ ์ „ Google ์ง์›์ด๋ฏ€๋กœ ์ž˜ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ ๊ทธ ์ง€์‹์€ ๋Œ€๋ถ€๋ถ„ Kubernetes๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค. ์ €๋Š” ํ˜„์žฌ Google์— ์†Œ์†๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉฐ ์—ฌ๊ธฐ์— ์“ฐ๋Š” ๋ชจ๋“  ๋‚ด์šฉ์€ ์ œ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค.

@1e100 : "์ด VM" ํฌ๊ธฐ์™€ "์ž‘์—… ์ง‘ํ•ฉ" ํฌ๊ธฐ๋ฅผ

(์ €๋Š” ๋˜ํ•œ ์ „ Google-SRE์ด๊ณ  ์ด๋Ÿฌํ•œ ์ผ๋ฐ˜์ ์ธ Google ์‹ ํ™”๊ฐ€ k8์—์„œ๋„ ์Šค์™‘์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค(๋˜๋Š” ์‹ฌ์ง€์–ด ๋ฐ”๋žŒ์งํ•จ)๋ผ๋Š” ๊ฒฐ์ •์— ๊ฑฐ์˜ ํ™•์‹คํ•˜๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์ณค๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ Google ํŒ€์ด ์Šค์™‘์„ ๋น„ํ™œ์„ฑํ™”ํ•ด๋„ ์Šค์™€ํ•‘์ด ๋น„ํ™œ์„ฑํ™”๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ํ•™์Šต๊ณผ ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ "ํ•˜๋“œ"(oom-kill) ์ œํ•œ์„ ์„ค๋ช…ํ•˜๋Š” ๋ฐ ๋”ฐ๋ฅด๋Š” ์ด ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„ - ์ด๊ฒƒ๋“ค์€ ์ •ํ™•ํžˆ ์ œ๊ฐ€ k8๋กœ ๊ฐœ์„ ํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ๋“ค ์ค‘ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. borg ๋ฆฌ์†Œ์Šค ๋ชจ๋ธ์ด ์ฒ˜์Œ ์„ค๊ณ„๋˜์—ˆ์„ ๋•Œ๋Š” ์—†์—ˆ์ง€๋งŒ ์ง€๊ธˆ์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” cgroup/swap ์กฐ์ • ๊ฐ€๋Šฅํ•œ ๋…ธ๋ธŒ๊ฐ€ ๋งŽ์ด ์žˆ์œผ๋ฉฐ ๋ชฉ์š•๋ฌผ์— ์•„๊ธฐ๋ฅผ ๋˜์ง€์ง€ ์•Š๊ณ ๋„ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. . ๋˜ํ•œ Google ์ ˆ์ถฉ์•ˆ์€ ๋” ๋‚˜์€/์•Œ๋ ค์ง„ ์ตœ์•…์˜ ๊ฒฝ์šฐ(์ฆ‰, ์‹ค์‹œ๊ฐ„ ๋™์ž‘)๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํ‰๊ท ์ ์œผ๋กœ ๋œ ํšจ์œจ์ ์ด๋ฉฐ _์ข…์ข…_ Google ์™ธ๋ถ€์—์„œ ์›ํ•˜๋Š” ์„ ํƒ์ด ์•„๋‹Œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๋” ์ ์€ ์ˆ˜์˜ ํ˜ธ์ŠคํŠธ, ๋” ์™„ํ™”๋œ SLO, ๋” ๋‚ฎ์€ ์˜ˆ์‚ฐ, ๋” ์—ด์•…ํ•œ ์ •์˜ ed ๋ฐฐ์น˜ ์ž‘์—…, ์ปดํŒŒ์ผ๋˜์ง€ ์•Š์€ ํž™ ๋น„ํšจ์œจ์ ์ธ ์–ธ์–ด์˜ ๋” ๋งŽ์€ ์‚ฌ์šฉ ๋“ฑ)

์ต๋ช… ๋ฉ”๋ชจ๋ฆฌ์˜ ์Šค์™€ํ•‘์€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์— ๋งคํ•‘๋œ ๋ชจ๋“  ๊ฒƒ(ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ ๋ฐ ๋ฐ์ดํ„ฐ ํฌํ•จ)์€ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์—ฌ์ „ํžˆ ์Šค์™‘ํ•  ์ˆ˜ ์žˆ๊ณ  ์—ฌ์ „ํžˆ ์Šค์™‘๋  ๊ฒƒ์ด๋ฏ€๋กœ RAM ์ œํ•œ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์š”๊ตฌ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ œ์•ˆํ•œ ์ด์œ ๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ์ด ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ์ž…๋‹ˆ๋‹ค. ๋” ์—„๊ฒฉํ•œ ๋ณด์ฆ์ด ํ•„์š”ํ•œ ์›Œํฌ๋กœ๋“œ์˜ ๊ฒฝ์šฐ mlockall() ๋ฐ ๋‚ฎ์€ swappiness ๊ฐ’๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ „ Google SRE๋กœ์„œ ์ƒํ•œ RAM ์ œํ•œ์„ ์ง€์ •ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ž‘์—…์ด ๋ณ€๋•์Šค๋Ÿฝ๊ฒŒ ์›ํ•˜๋Š” ๋Œ€๋กœ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ˜๋Œ€์ž๊ฐ€ ๋˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด ์ข‹์€ ์ผ์ด๋ผ๊ณ  ์ฃผ์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘๋œ ํŒŒ์ผ์„ ์Šค์™€ํ•‘ํ•˜๋Š” ๊ฒƒ์€ ์ถฉ๋ถ„ํžˆ ๋‚˜์ฉ๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ์ž ์žฌ์ ์ธ ์„ฑ๋Šฅ ์ ˆ๋ฒฝ์„ ๋ฏน์Šค์— ๋„์ž…ํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํ™˜๊ฒฝ์€ ์„ค๊ณ„์ƒ ๊ณต์œ ๋œ ํ™˜๊ฒฝ์ด๋ฉฐ ์ƒˆ๋กœ์šด ํ™˜๊ฒฝ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ”„๋กœ๊ทธ๋žจ์ด ์„œ๋กœ์˜ ์„ฑ๋Šฅ์„ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋„๋ก ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ฑฐํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Google SRE๋Š” "ํฌ๋ง์€ ์ „๋žต์ด ์•„๋‹™๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ์Šค์™‘ ์Šค๋ž˜์‹ฑ์€ SSD๋กœ ๊ต์ฒดํ•˜๋”๋ผ๋„ Linux ์‹œ์Šคํ…œ์„ ์™„์ „ํ•˜๊ณ  ๋ณต๊ตฌ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ž ๊ทธ๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ˆ˜์‹ญ ๊ฐœ๋Š” ๊ณ ์‚ฌํ•˜๊ณ  ๋จธ์‹ ์—์„œ ํ•˜๋‚˜์˜ ์›Œํฌ๋กœ๋“œ๋งŒ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฐ๊ด€๋œ ์˜ค๋ฅ˜๋Š” ํƒœ์Šคํฌ/ํฌ๋“œ๊ฐ€ ๊ฑฐ์˜ ์—†๋Š” ์†Œ๊ทœ๋ชจ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ํŠนํžˆ ๊ณ ํ†ต์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์›ํ•˜๋Š” ๊ฒฝ์šฐ ์˜ค๋Š˜๋‚ ์—๋„ ์Šค์™‘ ํ™•์ธ์„ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด ๊ฒฝ์šฐ ๋ชจ๋“  ๋ฒ ํŒ…์ด ์ทจ์†Œ๋œ๋‹ค๋Š” ๋ช…์‹œ์ ์ธ ์ดํ•ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ, ์ผ์ •์„ ์žก๊ณ  (์˜๋„ํ•˜์ง€ ์•Š์€) ์˜ค๋ฒ„ ์ปค๋ฐ‹์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” "ํฌ๊ธฐ"๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๋ฐ ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Linux๊ฐ€ ๋ณต๊ตฌํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ๊ธ€๋กœ๋ฒŒ VM ์Šค๋ž˜์‹œ๋ฅผ ํ”ผํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์€ ์ปค๋„์ด ์ต๋ช… ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ต์ฒดํ•˜๊ณ  ๊ทธ ๋žจ์„ ๋‹ค๋ฅธ ์šฉ๋„๋กœ ์žฌ์‚ฌ์šฉํ•˜๋Š” _๊ฐ€๋Šฅ_ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์—†๋Š” ์‹œ์Šคํ…œ๋ณด๋‹ค ์—„๊ฒฉํ•˜๊ฒŒ ์šฐ์ˆ˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” ๊ฐœ๋ณ„ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋žจ/๋””์Šคํฌ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ  ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•œ ์˜ํ–ฅ์„ ์ตœ์†Œํ™”ํ•˜๋ฉด์„œ ์ž์ฒด ๋ฆฌ์†Œ์Šค(๊ณผ๋‹ค/๊ณผ์†Œ ํ• ๋‹น) ์„ ํƒ์˜ ๊ฒฐ๊ณผ์— ์ง๋ฉดํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ด๊ฒƒ์„ ๊ฐ€์ง€๊ณ  ์–ด๋””๋กœ ๊ฐ€๊ณ  ์žˆ๋Š”์ง€ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ํ˜„์žฌ์˜ ์ŠคํŠธ๋กœ์šฐ๋งจ ์ œ์•ˆ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์€์œ ๋Š” ๊ฐ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํŠน์ • ์–‘์˜ ๋žจ( limits.memory ์˜ํ•ด ์ œ๊ณต๋จ)๊ณผ ์Šค์™‘์ด ์žˆ๋Š” ๋จธ์‹ ์— ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค์™€ ๋™์ผ: requests.memory ๊ธฐ๋ฐ˜ ์ผ์ • , limits.memory ๊ธฐ๋ฐ˜ ์ œํ•œ ์ ์šฉ. ์ด ๊ฒฝ์šฐ "๋ฉ”๋ชจ๋ฆฌ"๋Š” "๋žจ"์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์Šค์™‘ ์‚ฌ์šฉ๋Ÿ‰์€ ๋ฌด๋ฃŒ์ž…๋‹ˆ๋‹ค.
  • ํŠนํžˆ k8s requests.memory -> cgroup memory.low (์˜ค๋ฒ„์ปค๋ฐ‹ ์š”์ธ์— ์˜ํ•ด ์ถ•์†Œ๋จ); k8s limits.memory -> cgroup memory.high .
  • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ตฌ์„ฑ๋œ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์„ ์ดˆ๊ณผํ•˜๋ฉด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์—ฌ์œ  ๋žจ์˜ ์–‘์— ๊ด€๊ณ„์—†์ด _๋ฌด๊ด€ํ•˜๊ฒŒ_ ๊ตํ™˜์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. cgroups ๋•๋ถ„์— ์ด๊ฒƒ์€ ๋‹จ์ง€ VM ์‚ฌ์šฉ์ด ์•„๋‹ˆ๋ผ ์ปจํ…Œ์ด๋„ˆ์— ๊ธฐ์ธํ•˜๋Š” ๋ธ”๋ก ์บ์‹œ, ์†Œ์ผ“ ๋ฒ„ํผ ๋“ฑ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ(๋˜๋Š” ํ˜ธ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค)์— ๋ฉ”๋ชจ๋ฆฌ ์••๋ ฅ์„ ๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ œ๊ฑฐํ•  ํŽ˜์ด์ง€๋ฅผ ์ฐพ์„ ๋•Œ ์ปค๋„์€ ๋ฉ”๋ชจ๋ฆฌ ์š”์ฒญ ํฌ๊ธฐ๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.
  • k8์ด ํ˜ธ์ŠคํŠธ์— ๋Œ€ํ•œ ์ƒˆ ํฌ๋“œ ์˜ˆ์•ฝ์„ ์ค‘์ง€ํ•˜๋Š” ์ „์ฒด ์Šค์™‘ ์‚ฌ์šฉ๋Ÿ‰ kubelet ์†Œํ”„ํŠธ ์ œํ•œ์„ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค(imagefs์™€ ๊ฐ™์€ ๋‹ค๋ฅธ "๊ณต์œ  ํŒŒ์ผ ์‹œ์Šคํ…œ"๊ณผ ๋™์ผ).
  • ์ „์ฒด ์Šค์™‘ ์‚ฌ์šฉ๋Ÿ‰ ํ•˜๋“œ ์ œํ•œ์— ๋„๋‹ฌํ•˜๋ฉด qos-class/priority ๋ฐ "์š”์ฒญ" ์œ„์˜ VM ํฌ๊ธฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํฌ๋“œ ์ถ•์ถœ์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค(imagefs์™€ ๊ฐ™์€ ๋‹ค๋ฅธ "๊ณต์œ  ํŒŒ์ผ ์‹œ์Šคํ…œ"๊ณผ ๋™์ผ).
  • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ž‘์—… ์„ธํŠธ( requests.memory )๋ฅผ ํฌ๊ฒŒ ์ดˆ๊ณผํ•˜๋ฉด ์Šค๋ž˜์‹ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค( limits.memory ์ดˆ๊ณผํ•˜๊ฑฐ๋‚˜ ํ˜ธ์ŠคํŠธ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋žจ์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ). ๋ฆฌ์†Œ์Šค ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ์ด์— ๋Œ€ํ•ด ๋ช…์‹œ์ ์œผ๋กœ _ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค_. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์Šค์™‘ ์Šค๋ ˆ์‹ฑ์ด๋ฉด ํ™œ์„ฑ/์ค€๋น„ ์ƒํƒœ ํ”„๋กœ๋ธŒ ๊ฒ€์‚ฌ์— ์‹คํŒจํ•˜๊ณ  ํ•ด๋‹น ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค(์˜ˆ: ๊ตฌ์„ฑ๋œ ์‘๋‹ต SLA๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ์Šค์™‘ ์Šค๋ ˆ์‹ฑ์€ ๊ดœ์ฐฎ์Œ).

์ตœ์ข… ๊ฒฐ๊ณผ๋Š” ๊ด€๋ฆฌ์ž๊ฐ€ ๊ฐ ์‹œ์Šคํ…œ์—์„œ "์ถฉ๋ถ„ํ•œ" ์Šค์™‘์„ ๊ตฌ์„ฑํ•  ์ฑ…์ž„์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ตฌ์„ฑํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค limits.memory ๊ทธ๋“ค๋„ ์‚ฌ์šฉํ•  ๋žจ _max_๋กœ, ๊ทธ๋ฆฌ๊ณ  requests.memory (๋“ฑ, ์ปค๋„ ๋ฒ„ํผ ํฌํ•จ) ์˜๋„ ๋œ ์ž‘์—… ์„ธํŠธ. ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ณด์žฅ๋œ qos ํด๋ž˜์Šค(limit==request), burstable(limit undefined ๋˜๋Š” !=request), best-effort(์ œํ•œ ๋˜๋Š” ์š”์ฒญ ์—†์Œ)๊ฐ€ ๊ณ„์† ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ์ด๊ฒƒ์€ ๋ฒ„์ŠคํŠธ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜๋„ํ•œ ์ž‘์—… ์„ธํŠธ(ํฐ ์•ˆ์ „ ๋ฒ„ํผ ์—†์Œ)์— ๊ฐ€๊น๊ฒŒ ์„ ์–ธํ•˜๋„๋ก ์žฅ๋ คํ•˜์—ฌ ํšจ์œจ์ ์ธ ํ• ๋‹น(์ด์ƒ์ ์œผ๋กœ๋Š” ์ž‘์—… ์„ธํŠธ์— ํ• ๋‹น๋œ ๋žจ์˜ ์ •ํ™•ํžˆ 100%)์„ ํ—ˆ์šฉํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ด๋ฅผ ์ดˆ๊ณผํ•  ๋•Œ ์›ํ™œํ•œ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. CPU์™€ ๊ฐ™์€ ๋‹ค๋ฅธ "์šฉ์„œ" ๋ฆฌ์†Œ์Šค์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ.

๋‚˜๋Š” ์ด๊ฒƒ์ด Linux cgroups ๋‚ด์—์„œ ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•˜๊ณ , ๊ฒฉ๋ฆฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ , ๋‹ค๋ฅธ k8s ๋ฆฌ์†Œ์Šค์— ์˜ํ•ด ์„ค์ •๋œ ๊ฐœ๋…์  ์„ ๋ก€๋ฅผ ๊ณ„์†ํ•˜๊ณ , ์Šค์™‘์ด ๋น„ํ™œ์„ฑํ™”๋˜๋ฉด ๊ธฐ์กด ๋™์ž‘์œผ๋กœ ์ €ํ•˜๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค). ๋‚ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์œ ์ผํ•œ ์งˆ๋ฌธ์€ ์ด๊ฒƒ์ด _์ด๋ฏธ_ ๊ตฌํ˜„๋œ ๊ฒƒ์ธ์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค("swapfs" kubelet ์†Œํ”„ํŠธ/ํ•˜๋“œ ์ œํ•œ ์ œ์™ธ) - ๊ตฌ์ฒด์ ์ธ ์ œ์•ˆ ๋ฐ ์ž‘์—… ํ•ญ๋ชฉ์„ ์ž‘์„ฑํ•˜๊ธฐ ์ „์— ์‹ค์ œ kubelet/CRI cgroups ์ฝ”๋“œ๋ฅผ ์ฝ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. .

์œ„์˜ ์˜๊ฒฌ/ํ† ๋ก ์€ ์•„๋งˆ๋„ ์ด github ๋ฌธ์ œ์—์„œ ์ ์ ˆํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(๊ทธ๊ฒƒ์€ ๋นˆ์•ฝํ•œ ํ† ๋ก  ํฌ๋Ÿผ์ž…๋‹ˆ๋‹ค). ์œ„์˜ ๋‚ด์šฉ์— ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ k8s slack์— ๋Œ€ํ•œ guslees์˜ ํ”ผ๋“œ๋ฐฑ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ ์ ˆํ•œ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์–ด๋Š ์‹œ์ ์—์„œ ์ผ๋ฐ˜์ ์ธ ๋””์ž์ธ ํ† ๋ก ์„ ์ง„ํ–‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ† ๋ก ์„ ์œ„ํ•œ ๋” ๋‚˜์€ ํฌ๋Ÿผ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋„๋ก ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋™์˜. ์ด์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ํ™•์‹คํ•œ ์•„์ด๋””์–ด๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— KEP๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์„ ๋“œ๋ฆด ์ˆ˜ ์žˆ์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

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

๊ณ„์† ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด: ์ €๋Š” ์—ฌ์ „ํžˆ KEP ๋ฐ/๋˜๋Š” ์ด๋ฅผ ์œ„ํ•œ ๊ตฌํ˜„ ์ž‘์—…์— ๋งค์šฐ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋‹จ ์ƒํ™ฉ์ด ์•ˆ์ •๋˜๋ฉด(๋‹ค์Œ ์ฃผ๋ง์„ ์œ„ํ•ด ์ค€๋น„ํ•  ์›Œํฌ์ƒต์ด ์žˆ์Šต๋‹ˆ๋‹ค), Slack ์ฑ„๋„์— ์ฐธ์—ฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ธ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๊ณต๊ฐœ ํ† ๋ก ์ด ์žˆ์Šต๋‹ˆ๊นŒ? (k8s slack์€ ํ˜„์žฌ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์—ด๋ ค ์žˆ์ง€ ์•Š์œผ๋ฉฐ ๋‹น๋ถ„๊ฐ„์€ ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.)

@leonaves ํ˜„์žฌ AFAIK์—์„œ ์ง„ํ–‰ ์ค‘์ธ ์—ฌ์œ ์— ๋Œ€ํ•œ ๋…ผ์˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. @guslees ์˜ ๋งˆ์ง€๋ง‰ ๋Œ“๊ธ€์€ ํ† ๋ก ์˜ ๋งˆ์ง€๋ง‰์ž…๋‹ˆ๋‹ค. kubernetes/enhancements repo์— ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ KEP๊ฐ€ ์žˆ์–ด์•ผ ์ผ์„ ์‹œ์ž‘ํ•˜๊ณ  ๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ ์Šค๋ ˆ๋“œ๋„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณง ์žฌ๊ฐœ์žฅ์„ ์œ„ํ•œ ํ„ฐ๋„์˜ ๋๋„ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚ด ์†๊ฐ€๋ฝ์„ ๊ต์ฐจ.

์•Œ๊ณ  ๋ณด๋‹ˆ ์•„์ง ๋‹ค๋ฅธ Slack ์ฑ„๋„์— ๊ฐ€์ž…ํ•  ์ •์‹ ์  ์—ฌ์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ์ „ํžˆ ์ด๋ฉ”์ผ์„ ํ†ตํ•ด ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ํ˜‘๋ ฅํ•˜๋Š” ๊ฒƒ์„ ์ฃผ์ €ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ •๋ง๋กœ ์Šค์™‘์„ ์›ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋„ˆ๋ผ๋ฉด

  • --fail-swap-on=false kubelet ์‹œ์ž‘
  • ๋…ธ๋“œ์— ์Šค์™‘ ์ถ”๊ฐ€
  • ๋ฉ”๋ชจ๋ฆฌ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ง€์ •ํ•˜์ง€ _์•Š์€_ ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์Šค์™‘์„ ํฌํ•จํ•˜์—ฌ ๋ชจ๋“  ๋จธ์‹  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

์ด ๋ฐฉ๋ฒ•์€ ๋” ์ด์ƒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค!? ์Šค์™‘์„ ์ผœ๊ณ  ๋ฉ”๋ชจ๋ฆฌ ์„ค์ • ์—†์ด ํฌ๋“œ๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ์ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

$ docker inspect <dockerID> | grep Memory
            "Memory": 0,
            "KernelMemory": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": -1

MemorySwap์€ "0"์ด๋ฉฐ, ์ด๋Š” ์ด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์Šค์™‘์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

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

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

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

/remove-lifecycle ๋ถ€์‹ค.

/remove-lifecycle ๋ถ€์‹ค

์ด ๋ฌธ์ œ์˜ ๋…์ž๋ฅผ ์œ„ํ•œ ๋˜ ๋‹ค๋ฅธ ์ฐธ์กฐ๋กœ ์—ฌ๊ธฐ์—์„œ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค: https://chrisdown.name/2018/01/02/in-defence-of-swap.html

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

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

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

/remove-lifecycle ๋ถ€์‹ค

์ด ๊ธฐ๋Šฅ์€ ์ผ๋ถ€ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ ์‹ค์ œ๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์šฐ๋ฆฌ๋Š” ๊ธฐ๊ณ„ ํ•™์Šต์„ ์œ„ํ•ด k8์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋•Œ๋กœ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ํฐ ๋ชจ๋ธ์„ ๋กœ๋“œํ•ด์•ผ ํ•˜๋ฉฐ(์ด ๊ฒฝ์šฐ ๋•Œ๋•Œ๋กœ API ์š”์ฒญ๋‹น 500MB!) ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์˜ ํ•œ๊ณ„๋กœ ์ธํ•ด ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜ํ‰ ํ™•์žฅ์€ ๊ธฐ์ˆ ์ ์ธ ๊ด€์ ์—์„œ ์ž‘๋™ํ•˜์ง€๋งŒ ๋น„์šฉ์€ ์ฒœ์ •๋ถ€์ง€๋กœ ์น˜์†Ÿ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์˜ต์…˜์œผ๋กœ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ํ‹ฐ์ผ“์ด ๋‹ค์‹œ ๋กœ๋“œ๋งต์œผ๋กœ ๋Œ์•„์˜ฌ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

mmap์˜ ๊ฒฝ์šฐ์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.

์ €๋„ ์ด ๊ธฐ๋Šฅ์— ๊ด€์‹ฌ์ด ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๊นŒ?

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

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

๋ฌธ์ œ๋ฅผ ์•…ํ™”์‹œ์ผœ ๋ณด๋‹ค ์™„๋ฒฝํ•˜๊ฒŒ ํŠน์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ ์‚ฌ๋ก€ ํ•œ๋‘ ๊ฐœ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ KEP ์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.

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

์ด ๋…ผ๋ฆฌ๋Š” Kubernetes ์‚ฌ์šฉ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋˜๋Š” ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋™์˜! ๊ทธ๋Ÿฌ๋‚˜ Docker๋Š” ์ด๋ฏธ ์Šค์™‘ ์‹คํ–‰์„ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. Kubernetes๋Š” ๋ช…์‹œ์ ์œผ๋กœ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๊ฐ•์ œ๋กœ ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ). ๋‚ด ์ฃผ์žฅ์€ ๋ชจ๋“  ์‚ฌ๋žŒ์˜ ์œ„ํ˜‘ ๋ชจ๋ธ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์—, ํŠนํžˆ ์ด์ „์— ์ด์— ๋Œ€ํ•ด ์ƒ๊ฐํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์— ์ ์–ด๋„ ํ˜ธ์ถœ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ์˜ˆ, @sftim ์ž…๋‹ˆ๋‹ค. :-) ๋‚ด ๋ง์€ ๋‚ด๊ฐ€ KEP๋ฅผ ์ž‘์„ฑ/๊ธฐ๊ณ ํ•˜๊ณ  ์‹ถ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ชจํ—˜์„ ํ•˜๊ธฐ ์ „์— ์ฃผ์–ด์ง„ ํ…Œ์ŠคํŠธ ์‹œ์Šคํ…œ์—์„œ ๋ฌธ์ œ๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ์ตœ์†Œํ•œ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ํ•œ๋‘ ๊ฐœ๋ฅผ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@superdave ์–ด๋–ค ์ข…๋ฅ˜์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์—ผ๋‘์— ๋‘๊ณ  ๊ณ„์‹ญ๋‹ˆ๊นŒ?

๋‹ค์Œ์€ ๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ์ž…๋‹ˆ๋‹ค.

  1. ๋…ธ๋“œ 1๊ฐœ, RAM 16GiB ๋ฐ ํŽ˜์ด์ง€ ํŒŒ์ผ 64GiB๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  2. ๊ฐ๊ฐ 1GiB ๋ฉ”๋ชจ๋ฆฌ ์š”์ฒญ๊ณผ 1GiB ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์ด ์žˆ๋Š” 20๊ฐœ์˜ Pod๋ฅผ ์˜ˆ์•ฝํ•˜์‹ญ์‹œ์˜ค.
  3. ๋ชจ๋“  ์ผ์ •์ด ์•„๋‹ˆ๋ฏ€๋กœ ์ฃผ์˜ํ•˜์‹ญ์‹œ์˜ค.

์—ฌ๊ธฐ ๋˜ ํ•˜๋‚˜:

  1. ๊ฐ๊ฐ 16GiB์˜ RAM๊ณผ 64GiB์˜ ํŽ˜์ด์ง€ ํŒŒ์ผ์ด ์žˆ๋Š” 6๊ฐœ์˜ ์‹œ์Šคํ…œ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  2. kubeadm ๋ฅผ ๊ธฐ๋ณธ ์˜ต์…˜๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๋จธ์‹ ์„ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๊ตฌ์„ฑํ•ด ๋ณด์‹ญ์‹œ์˜ค.
  3. kubeadm ์ด ์‚ฌ์šฉ ์ค‘์ธ ์Šค์™‘์— ๋Œ€ํ•ด ๋งŒ์กฑํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๊ด€์ฐฐํ•˜์‹ญ์‹œ์˜ค.

ํ˜„์žฌ ๋Œ€๋ถ€๋ถ„์˜ ์กด๊ฒฝํ•  ๋งŒํ•œ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์—์„œ SSD์— ๋Œ€ํ•œ ์—„์ฒญ๋‚œ ๋ณ€ํ™”๊ฐ€ ์žˆ์œผ๋ฉฐ Linux๊ฐ€ ์ถ”๊ฐ€ ์••์ถ• ๊ฐ€๋Šฅ์„ฑ๊ณผ ํ•จ๊ป˜ SSD https://lwn.net/Articles/704478/ ์—์„œ ์Šค์™€ํ•‘์„ ์œ„ํ•œ ์ „์šฉ ์ตœ์ ํ™”๋ฅผ ๊ณ ๋ คํ•˜๋ฉด ์ด ์ƒํ™ฉ์€ ์Šค์™‘์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ๊ธฐํšŒ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ์‹œ ์ถ”๊ฐ€ RAM์— ๋Œ€ํ•œ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ณ  ๋น ๋ฅธ ๋ฆฌ์†Œ์Šค.
๋น„ํ™œ์„ฑํ™”๋œ ์Šค์™‘์€ I/O ๋ฒ„ํผ์— ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ RAM์ด ๋‚ญ๋น„๋˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋‚ญ๋น„๋˜๋Š” ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

@superdave

๋™์˜! ๊ทธ๋Ÿฌ๋‚˜ Docker๋Š” ์ด๋ฏธ ์Šค์™‘ ์‹คํ–‰์„ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. Kubernetes๋Š” ๋ช…์‹œ์ ์œผ๋กœ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๊ฐ•์ œ๋กœ ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ). ๋‚ด ์ฃผ์žฅ์€ ๋ชจ๋“  ์‚ฌ๋žŒ์˜ ์œ„ํ˜‘ ๋ชจ๋ธ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์—, ํŠนํžˆ ์ด์ „์— ์ด์— ๋Œ€ํ•ด ์ƒ๊ฐํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์— ์ ์–ด๋„ ํ˜ธ์ถœ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ kubelet ์ด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ mlock() ํ•˜๊ณ  OOM ์ข…๋ฃŒ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๋‚ฎ๊ฒŒ ์„ค์ •ํ•˜์—ฌ ์Šค์™‘ ์•„์›ƒ๋˜๊ฑฐ๋‚˜ OOM์ด ์ข…๋ฃŒ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ณ  swapiness ๋กœ cgroup์˜ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. 0 ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์–‘์‹ ์Šค์™€ํ•‘์˜ ์ด์ ์„ ์–ป์œผ๋ ค๋ฉด ํฌ๋“œ์˜ ํŠน์ • ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•ด enableSwapiness: 50 ์™€ ๊ฐ™์€ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜ตํŠธ์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋†€๋ผ์›€์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ฐฐํ„ฐ๋ฆฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

@sftim ์ด๋Š” a) Kubelet์ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์˜ˆ์•ฝํ•˜๊ณ  ์‹ถ์ง€ ์•Š๊ณ  b) Kubelet์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์Šค์™‘์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰๋˜์ง€ ์•Š์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์šด๋™ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์€ @derekwaynecarr ์˜ ์Šค๋ ˆ๋“œ ์ƒ๋‹จ์— ์žˆ๋Š” ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.

์Šค์™‘ ์ง€์›์€ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ณด์žฅ๋œ ํฌ๋“œ๋Š” ์Šค์™‘์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฒ„์ŠคํŠธ ๊ฐ€๋Šฅํ•œ ํฌ๋“œ๋Š” ์Šค์™‘ ์—†์ด ์š”์ฒญ์„ ์ถฉ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. BestEffort ํฌ๋“œ๋Š” ๋ณด์ฆํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. kubelet์€ ํ˜„์žฌ ์—ฌ๊ธฐ์—์„œ ํฌ๋“œ ์ „๋ฐ˜์— ๊ฑธ์ณ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์ ์ ˆํ•œ ์–‘์˜ ๋™์ž‘์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ์˜๋ฆฌํ•จ์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค.

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

๊ทธ๋ฆฌ๊ณ  ๋ฐ”๋กœ ์•„๋ž˜ @matthiasr์—์„œ :

์—ฌ๊ธฐ์— ํ† ๋ก ์— ๋” ๋งŽ์€ ์ปจํ…์ŠคํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. #7294 โ€“ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์Šค์™‘์„ ๊ฐ–๋Š” ๊ฒƒ์€ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ๊ณผ ๋งค์šฐ ์ด์ƒํ•˜๊ณ  ๋‚˜์œ ์ƒํ˜ธ ์ž‘์šฉ์„ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์— ๋„๋‹ฌํ•œ ์ปจํ…Œ์ด๋„ˆ๋Š” _๊ทธ๋Ÿฌ๋ฉด_ ์Šค์™‘์œผ๋กœ f4edaf2 ์ดํ›„๋กœ ์ˆ˜์ •๋œ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์Šค์™‘์ด

๋‘˜ ๋‹ค ์ด๋ฏธ ๋ณธ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ข‹์€ ๊ฒฌํ•ด๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ ๋ฌธ์ œ๋ฅผ ์•…ํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์•Œ๋ ค์ง„ ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ง์ ‘ ์ƒ๊ฐํ•ด๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ด๋ฏธ ๊ทธ๋ ‡๊ฒŒ ํ–ˆ๋‹ค๋ฉด ์žฌ๋ฐœ๋ช…ํ•˜์ง€ ์•Š์•„๋„ ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@superdave

๋™์˜! ๊ทธ๋Ÿฌ๋‚˜ Docker๋Š” ์ด๋ฏธ ์Šค์™‘ ์‹คํ–‰์„ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. Kubernetes๋Š” ๋ช…์‹œ์ ์œผ๋กœ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๊ฐ•์ œ๋กœ ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ). ๋‚ด ์ฃผ์žฅ์€ ๋ชจ๋“  ์‚ฌ๋žŒ์˜ ์œ„ํ˜‘ ๋ชจ๋ธ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์—, ํŠนํžˆ ์ด์ „์— ์ด์— ๋Œ€ํ•ด ์ƒ๊ฐํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์— ์ ์–ด๋„ ํ˜ธ์ถœ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ kubelet ์ด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ mlock() ํ•˜๊ณ  OOM ์ข…๋ฃŒ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๋‚ฎ๊ฒŒ ์„ค์ •ํ•˜์—ฌ ์Šค์™‘ ์•„์›ƒ๋˜๊ฑฐ๋‚˜ OOM์ด ์ข…๋ฃŒ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ณ  swapiness ๋กœ cgroup์˜ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. 0 ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์–‘์‹ ์Šค์™€ํ•‘์˜ ์ด์ ์„ ์–ป์œผ๋ ค๋ฉด ํฌ๋“œ์˜ ํŠน์ • ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•ด enableSwapiness: 50 ์™€ ๊ฐ™์€ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜ตํŠธ์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋†€๋ผ์›€์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ฐฐํ„ฐ๋ฆฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ๊ธฐ ๋ชจ๋“  ๊ฒƒ์— ๋™์˜ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ถˆ์พŒํ•œ ๋†€๋ผ์›€์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ํ˜„์žฌ ๋™์ž‘์„ ๊ธฐ๋ณธ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

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

#include <iostream>
#include <vector>
#include <unistd.h>
int main() {
  std::vector<int> data;
  try
    {
        while(true) { data.resize(data.size() + 200); };
    }
    catch (const std::bad_alloc& ex)
    {
        std::cerr << "Now we filled up memory, so assume we never access that stuff again and just moved on, or we're stuck in an endless loop of some sort...";
        while(true) { usleep(20000); };
    }
  return 0;
}

์ •๋ง๋กœ ์Šค์™‘์„ ์›ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋„ˆ๋ผ๋ฉด

  • --fail-swap-on=false kubelet ์‹œ์ž‘
  • ๋…ธ๋“œ์— ์Šค์™‘ ์ถ”๊ฐ€
  • ๋ฉ”๋ชจ๋ฆฌ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ง€์ •ํ•˜์ง€ _์•Š์€_ ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์Šค์™‘์„ ํฌํ•จํ•˜์—ฌ ๋ชจ๋“  ๋จธ์‹  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

์•ˆ๋…•ํ•˜์„ธ์š” @hjwp๋‹˜ , ์ •๋ณด ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ •๋ง ๋งŽ์€ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค!

์ด ๋‹ค์Œ์— ์งˆ๋ฌธํ•ด๋„ ๋ ๊นŒ์š”?

๋‹น์‹ ์ด ๋งํ•œ๋Œ€๋กœ ๋ชจ๋“  ๊ฒƒ์„ ์„ค์ • ํ•œ ํ›„ ์ปจํ…Œ์ด๋„ˆ์˜ ์Šค์™‘ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์„ ์ œํ•œํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

Docker์˜ --memory-swap ๋งค๊ฐœ๋ณ€์ˆ˜ ์„ค์ •์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
https://docs.docker.com/config/containers/resource_constraints/# --memory-swap-details
ํ˜„์žฌ ๋‚ด ์ปจํ…Œ์ด๋„ˆ์—๋Š” ์Šค์™‘ ์‚ฌ์šฉ๋Ÿ‰์— ๋Œ€ํ•œ ์ œํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค( "MemorySwap": -1 ).

sudo docker inspect 482d70f73c7c | grep Memory
            "Memory": 671088640,
            "KernelMemory": 0,
            "MemoryReservation": 0,
            "MemorySwap": -1,
            "MemorySwappiness": null,

๊ทธ๋Ÿฌ๋‚˜ k8์—์„œ ๋…ธ์ถœ๋œ ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ํฌ๋“œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ œํ•œ ๋„ ์Šค์™‘ ์‚ฌ์šฉ๋Ÿ‰์„ ์ œํ•œํ•ฉ๋‹ˆ๊นŒ?

๋‚ด VM ๊ด€๋ จ ์„ค์ •

vm.overcommit_kbytes = 0
vm.overcommit_memory = 1
vm.overcommit_ratio = 50
vm.swappiness = 20
vm.vfs_cache_pressure = 1000

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@pai911 ๊ทธ๊ฑด ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒƒ ๊ฐ™์€๋ฐ,

ํ˜„์žฌ CRI๋Š” ์ด๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. docker์—๋Š” --memory-swap ์™€ ๊ฐ™์€ ์˜ต์…˜์ด ์—†์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ CRI ์ œํ•œ ์‚ฌํ•ญ์ด์ง€๋งŒ OCI ์‚ฌ์–‘์€ ์ด ์˜ต์…˜์„ ์ง€์›ํ•˜์ง€๋งŒ CRI ๋ ˆ์ด์–ด๋กœ ๋‚ด๋ณด๋‚ด์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•œ (์ด๋ก ์ ์œผ๋กœ) ์†”๋ฃจ์…˜ ์ค‘ ํ•˜๋‚˜๋Š” ๊ถŒํ•œ ์žˆ๋Š” DaemonSet์„ ์ƒ์„ฑํ•˜์—ฌ ํฌ๋“œ์—์„œ ์ฃผ์„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์€ ๋‹ค์Œ DaemonSet๊ฐ€ cgroup ๊ฐ’์„ ์ˆ˜๋™์œผ๋กœ ํŽธ์ง‘ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

cgroup

์•ˆ๋…•ํ•˜์„ธ์š” @win-t ์ž…๋‹ˆ๋‹ค.

ํ”ผ๋“œ๋ฐฑ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

ํ˜„์žฌ๋กœ์„œ๋Š” ์ด ์˜ต์…˜์ด ๋‚ด๋ถ€์šฉ์œผ๋กœ๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ?

์ด --memory-swap ์˜ต์…˜์— ์–ด๋–ค cgroup ๊ฐ’์ด ๋งคํ•‘๋˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

ํ˜„์žฌ๋กœ์„œ๋Š” ์ด ์˜ต์…˜์ด ๋‚ด๋ถ€์šฉ์œผ๋กœ๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ?

์˜ˆ, k8์—์„œ ๋…ธ์ถœ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด ์˜ต์…˜์„ ์„ค์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

btw, docker inspect์˜ MemorySwap ๋Š” ์ด๊ฒƒ ์— ๋”ฐ๋ผ Memory ์™€ ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. docker inspect์—์„œ -1 ๋ฅผ ์–ด๋–ป๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด --memory-swap ์˜ต์…˜์— ์–ด๋–ค cgroup ๊ฐ’์ด ๋งคํ•‘๋˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

  • --memory ์— ๊ณ ์ • ํ‘œ์‹œ๊ธฐ์ง€๋„ memory.limit_in_bytes cgroup์— v1์„์˜
  • --memory-swap ์— ๊ณ ์ • ํ‘œ์‹œ๊ธฐ์ง€๋„ memory.memsw.limit_in_bytes cgroup์— v1์„์˜

@win- ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋‚˜๋Š” ๋‹ค์Œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค

Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.5", GitCommit:"20c265fef0741dd71a66480e35bd69f18351daea", GitTreeState:"clean", BuildDate:"2019-10-15T19:16:51Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.10", GitCommit:"1bea6c00a7055edef03f1d4bb58b773fa8917f11", GitTreeState:"clean", BuildDate:"2020-02-11T20:05:26Z", GoVersion:"go1.12.12", Compiler:"gc", Platform:"linux/amd64"}

๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ์—ญ์‚ฌ๋ฅผ ๋ณด์•˜๋‹ค. ์ด ์ปค๋ฐ‹ ์— ์ˆ˜์ • ์‚ฌํ•ญ์ด ์ถ”๊ฐ€ ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์‹คํ–‰ํ•˜๋Š” ๋ฒ„์ „์— ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํ˜„์žฌ๋กœ์„œ๋Š” ์ด ์˜ต์…˜์ด ๋‚ด๋ถ€์šฉ์œผ๋กœ๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ?

์˜ˆ, k8์—์„œ ๋…ธ์ถœ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด ์˜ต์…˜์„ ์„ค์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

btw, docker inspect์˜ MemorySwap ๋Š” ์ด๊ฒƒ ์— ๋”ฐ๋ผ Memory ์™€ ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. docker inspect์—์„œ -1 ๋ฅผ ์–ด๋–ป๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด --memory-swap ์˜ต์…˜์— ์–ด๋–ค cgroup ๊ฐ’์ด ๋งคํ•‘๋˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

  • --memory ์— ๊ณ ์ • ํ‘œ์‹œ๊ธฐ์ง€๋„ memory.limit_in_bytes cgroup์— v1์„์˜
  • --memory-swap ์— ๊ณ ์ • ํ‘œ์‹œ๊ธฐ์ง€๋„ memory.memsw.limit_in_bytes cgroup์— v1์„์˜

์ด์ƒํ•˜๋‹ค.

๋‚˜๋Š” kops + Debian์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๊ณ  Docker ๊ฒ€์‚ฌ๋Š” ์Šค์™‘ ๋ฉ”๋ชจ๋ฆฌ์— ์ œํ•œ์ด ์—†์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค
(๋„์ปค๋Š” ์ด์ „์— ๊ฒŒ์‹œํ•œ ์ •๋ณด๋ฅผ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค)

๊ทธ๋Ÿฌ๋‚˜ Amazon Linux ์ด๋ฏธ์ง€๋กœ ์ „ํ™˜ํ–ˆ๊ณ  ์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ์–ป์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

            "Memory": 671088640,
            "KernelMemory": 0,
            "MemoryReservation": 0,
            "MemorySwap": 671088640,
            "MemorySwappiness": null,

์ข€ ๋” ์กฐ์‚ฌํ•ด๋ณด๊ณ  ์ด๊ฒƒ์ด ๋ฒ„๊ทธ์ธ์ง€ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค

ํ˜„์žฌ๋กœ์„œ๋Š” ์ด ์˜ต์…˜์ด ๋‚ด๋ถ€์šฉ์œผ๋กœ๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ?

์˜ˆ, k8์—์„œ ๋…ธ์ถœ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด ์˜ต์…˜์„ ์„ค์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
btw, docker inspect์˜ MemorySwap ๋Š” ์ด๊ฒƒ ์— ๋”ฐ๋ผ Memory ์™€ ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. docker inspect์—์„œ -1 ๋ฅผ ์–ด๋–ป๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด --memory-swap ์˜ต์…˜์— ์–ด๋–ค cgroup ๊ฐ’์ด ๋งคํ•‘๋˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

  • --memory ์— ๊ณ ์ • ํ‘œ์‹œ๊ธฐ์ง€๋„ memory.limit_in_bytes cgroup์— v1์„์˜
  • --memory-swap ์— ๊ณ ์ • ํ‘œ์‹œ๊ธฐ์ง€๋„ memory.memsw.limit_in_bytes cgroup์— v1์„์˜

์ด์ƒํ•˜๋‹ค.

๋‚˜๋Š” kops + Debian์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๊ณ  Docker ๊ฒ€์‚ฌ๋Š” ์Šค์™‘ ๋ฉ”๋ชจ๋ฆฌ์— ์ œํ•œ์ด ์—†์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค
(๋„์ปค๋Š” ์ด์ „์— ๊ฒŒ์‹œํ•œ ์ •๋ณด๋ฅผ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค)

๊ทธ๋Ÿฌ๋‚˜ Amazon Linux ์ด๋ฏธ์ง€๋กœ ์ „ํ™˜ํ–ˆ๊ณ  ์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ์–ป์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

            "Memory": 671088640,
            "KernelMemory": 0,
            "MemoryReservation": 0,
            "MemorySwap": 671088640,
            "MemorySwappiness": null,

์ข€ ๋” ์กฐ์‚ฌํ•ด๋ณด๊ณ  ์ด๊ฒƒ์ด ๋ฒ„๊ทธ์ธ์ง€ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค

์ด์ œ kops์˜ ๊ณต์‹ ๋ฐ๋น„์•ˆ ์ด๋ฏธ์ง€์— ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด kops ๊ณต์‹ ์ด๋ฏธ์ง€๋Š” ์Šค์™‘ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฌด์ œํ•œ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค
kope.io/k8s-1.15-debian-stretch-amd64-hvm-ebs-2020-01-17

๋ฒˆ์‹ ๋‹จ๊ณ„:

๋‚ด kops ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋ฉ๋‹ˆ๋‹ค.

apiVersion: kops.k8s.io/v1alpha2
kind: InstanceGroup
metadata:
  creationTimestamp: "2020-03-12T06:33:09Z"
  generation: 5
  labels:
    kops.k8s.io/cluster: solrcluster.k8s.local
  name: node-2
spec:
  additionalUserData:
  - content: |
      #!/bin/sh
      sudo cp /etc/fstab /etc/fstab.bak
      sudo mkfs -t ext4 /dev/nvme1n1
      sudo mkdir /data
      sudo mount /dev/nvme1n1 /data
      echo '/dev/nvme1n1       /data   ext4    defaults,nofail        0       2' | sudo tee -a /etc/fstab
      sudo fallocate -l 2G /data/swapfile
      sudo chmod 600 /data/swapfile
      sudo mkswap /data/swapfile
      sudo swapon /data/swapfile
      echo '/data/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
      sudo sysctl vm.swappiness=10
      sudo sysctl vm.overcommit_memory=1
      echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
      echo 'vm.overcommit_memory=1' | sudo tee -a /etc/sysctl.conf
    name: myscript.sh
    type: text/x-shellscript
  image: kope.io/k8s-1.15-debian-stretch-amd64-hvm-ebs-2020-01-17
  instanceProtection: true
  kubelet:
    failSwapOn: false
  machineType: t3.micro

๋‹จ๊ณ„:

  1. ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๊ฐ€๋™๋˜๊ณ  ์‹คํ–‰๋œ ํ›„.

  2. ๋‹ค์Œ ๋ฆฌ์†Œ์Šค ์„ค์ •์œผ๋กœ Solr Helm ์ฐจํŠธ ๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

resources:
  limits:
    cpu: "1"
    memory: 640Mi
  requests:
    cpu: 100m
    memory: 256Mi

** ๋‹ค๋ฅธ ๋ชจ๋“  Pod๋„ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. ์ปจํ…Œ์ด๋„ˆ ID๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์ปจํ…Œ์ด๋„ˆ ๋‚˜์—ด
    sudo docker container ls

  2. ์ปจํ…Œ์ด๋„ˆ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฒ€์‚ฌ
    sudo docker inspect d67a72bba427 | grep Memory

            "Memory": 671088640,
            "KernelMemory": 0,
            "MemoryReservation": 0,
            "MemorySwap": -1,
            "MemorySwappiness": null,

๋ฌธ์ œ๋ฅผ ์–ด๋”˜๊ฐ€์— ์ œ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? k8s ๋˜๋Š” kops?

๋‹จ๊ณ„:

  1. ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๊ฐ€๋™๋˜๊ณ  ์‹คํ–‰๋œ ํ›„.
  2. ๋‹ค์Œ ๋ฆฌ์†Œ์Šค ์„ค์ •์œผ๋กœ Solr Helm ์ฐจํŠธ ๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.
resources:
  limits:
    cpu: "1"
    memory: 640Mi
  requests:
    cpu: 100m
    memory: 256Mi

** ๋‹ค๋ฅธ ๋ชจ๋“  Pod๋„ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. ์ปจํ…Œ์ด๋„ˆ ID๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์ปจํ…Œ์ด๋„ˆ ๋‚˜์—ด
    sudo docker container ls
  2. ์ปจํ…Œ์ด๋„ˆ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฒ€์‚ฌ
    sudo docker inspect d67a72bba427 | grep Memory
            "Memory": 671088640,
            "KernelMemory": 0,
            "MemoryReservation": 0,
            "MemorySwap": -1,
            "MemorySwappiness": null,

๋ฌธ์ œ๋ฅผ ์–ด๋”˜๊ฐ€์— ์ œ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? k8s ๋˜๋Š” kops?

Amazon Linux์—์„œ๋งŒ ์˜ฌ๋ฐ”๋ฅธ ๋™์ž‘์„ ๋ณผ ์ˆ˜ ์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ami-0cbc6aae997c6538a : amzn2-ami-hvm-2.0.20200304.0-x86_64-gp2

            "Memory": 671088640,
            "CpusetMems": "",
            "KernelMemory": 0,
            "MemoryReservation": 0,
            "MemorySwap": 671088640,
            "MemorySwappiness": null,

์ฆ‰: "MemorySwap" == "๋ฉ”๋ชจ๋ฆฌ"

๋‹ค๋ฅธ ๋‘ ์ด๋ฏธ์ง€๋Š” ๋ชจ๋‘ "MemorySwap": -1 ๊ฐ™์€ ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋ฌด์ œํ•œ ์Šค์™‘ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฐ๋น„์•ˆ

    • ami-075e61ad77b1269a7 : k8s-1.15-debian-stretch-amd64-hvm-ebs-2020-01-17

  • ์šฐ๋ถ„ํˆฌ

    • ami-09a4a9ce71ff3f20b : ์šฐ๋ถ„ํˆฌ/์ด๋ฏธ์ง€/hvm-ssd/์šฐ๋ถ„ํˆฌ-๋ฐ”์ด์˜ค๋‹‰-18.04-amd64-server-20200112

๊ทธ๋ž˜์„œ k8์˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹๊นŒ?

์‚ฌ์šฉ์ž ์Šคํ† ๋ฆฌ:

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

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

(3) ๋•Œ๋•Œ๋กœ fork+exec๊ฐ€ ํ•„์š”ํ•œ ์ธํ„ฐํ”„๋ฆฌํ„ฐ(์˜ˆ: Ruby on Rails)์—์„œ ์›น ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์—„๊ฒฉํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ •์€ ํ—ˆ์šฉํ•  ์ˆ˜ ์—†๋Š” ํฌํฌ ์‹คํŒจ๋ฅผ ์ดˆ๋ž˜ํ•ฉ๋‹ˆ๋‹ค. ์ปค๋„์ด fork์™€ exec ํ˜ธ์ถœ ์‚ฌ์ด์˜ ํ”„๋กœ์„ธ์Šค ๋™์ž‘์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋ณด์žฅ๋œ ๋ฉ”๋ชจ๋ฆฌ ํ—ค๋“œ๋ฃธ์„ ๊ฐ–๋„๋ก ์Šค์™‘์„ ํ”„๋กœ๋น„์ €๋‹ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. vm.swappiness ๊ฐ’์€ ์Šค์™€ํ•‘์„ ๊ทน๋„๋กœ ์–ต์ œํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ”„๋กœ๋•์…˜ ์ค‘์— ์Šค์™‘์ด ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ ์ž‘์—…์„ ์•Œ๋ฆฌ๋„๋ก ๊ฒฝ๊ณ ๋ฅผ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ํฌ๋“œ ์‚ฌ์–‘์€ ์Šค์™‘ ์š”์ฒญ์„ ์„ค์ •ํ•˜๊ณ  ๋™์ผํ•œ ๊ฐ’์œผ๋กœ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

์ตœ๊ทผ์— ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ๋„์ปค ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค๋ฅผ Kubernetes๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ง€์›๋˜์ง€ ์•Š๋Š” ์Šค์™‘์œผ๋กœ ์ธํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ํฌ๊ธฐํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

์ฃผ์š” ๋ฌธ์ œ๋Š” ์ž‘์—… ๋ถ€ํ•˜๊ฐ€ ์ตœ๋Œ€ 1Gb ์ •๋„์˜ ๋ฉ”๋ชจ๋ฆฌ(๋˜๋Š” ์Šค์™‘)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์ง€๋งŒ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•  ๋•Œ ์ผ๋ฐ˜์ ์œผ๋กœ ์•ฝ 50Mb ์ •๋„๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์Šค์™‘์„ ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์€ ํฐ '์ž‘์—…'์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋•Œ ์Šค์™‘ ๋ธ”๋ก์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€์‹  ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ํฐ ๋กœ๋“œ๋ฅผ ์œ„ํ•ด ๋ชจ๋“  ๊ฒƒ์„ ์„ค๊ณ„ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ–ˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๊ฒฐ๊ตญ Kubernetes๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ํฌ๊ธฐํ•˜๊ณ  ์Šค์™‘์ด ํ–ฅํ›„ ์ง€์›๋  ๊ฒƒ์ด๋ผ๋Š” ํฌ๋ง์œผ๋กœ ๋‹น๋ถ„๊ฐ„ ๋ชจ๋“  ๊ฒƒ์„ Swarm์œผ๋กœ ์ด๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๋ฌธ์ œ๋Š” ์ž‘์—… ๋ถ€ํ•˜๊ฐ€ ์ตœ๋Œ€ 1Gb ์ •๋„์˜ ๋ฉ”๋ชจ๋ฆฌ(๋˜๋Š” ์Šค์™‘)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์ง€๋งŒ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•  ๋•Œ ์ผ๋ฐ˜์ ์œผ๋กœ ์•ฝ 50Mb ์ •๋„๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ๋ฏฟ์„ ์ˆ˜ ์—†์„ ์ •๋„๋กœ ์ œ๋Œ€๋กœ ์ž‘์„ฑ๋˜์ง€ ์•Š์•˜๋‹ค๊ณ  ๊ฐํžˆ ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ๋ฏฟ์„ ์ˆ˜ ์—†์„ ์ •๋„๋กœ ์ œ๋Œ€๋กœ ์ž‘์„ฑ๋˜์ง€ ์•Š์•˜๋‹ค๊ณ  ๊ฐํžˆ ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ผ์ข…์˜ ๊ด€๋ จ์„ฑ์ด ์—†์œผ๋ฉฐ ์†๊ฐ€๋ฝ์œผ๋กœ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์€ ๊ฑฐ์˜ ๊ฑด์„ค์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Kubernetes ์—์ฝ”์‹œ์Šคํ…œ์€ ๊ด‘๋ฒ”์œ„ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœํ•„์„ ์ง€์›ํ•˜๋„๋ก ๊ตฌ์ถ•๋˜์—ˆ์œผ๋ฉฐ ์ด๋Ÿฌํ•œ ํ”„๋กœํ•„ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๋ฌธ์ œ๋Š” ์ž‘์—… ๋ถ€ํ•˜๊ฐ€ ์ตœ๋Œ€ 1Gb ์ •๋„์˜ ๋ฉ”๋ชจ๋ฆฌ(๋˜๋Š” ์Šค์™‘)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์ง€๋งŒ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•  ๋•Œ ์ผ๋ฐ˜์ ์œผ๋กœ ์•ฝ 50Mb ์ •๋„๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ๋ฏฟ์„ ์ˆ˜ ์—†์„ ์ •๋„๋กœ ์ œ๋Œ€๋กœ ์ž‘์„ฑ๋˜์ง€ ์•Š์•˜๋‹ค๊ณ  ๊ฐํžˆ ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

lol, ์ด๊ฒƒ์€ ์ปค๋„ ๊ธฐ๋Šฅ์ด๋ฉฐ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ shm ํŒŒ์ผ์—์„œ madvise(2) ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ madvise syscall์„ ์ฐจ๋‹จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๋””์ž์ธ์—์„œ ์ด ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ "๋งค์šฐ ํ˜•ํŽธ์—†์ด ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๋ฌธ์ œ๋Š” ์ž‘์—… ๋ถ€ํ•˜๊ฐ€ ์ตœ๋Œ€ 1Gb ์ •๋„์˜ ๋ฉ”๋ชจ๋ฆฌ(๋˜๋Š” ์Šค์™‘)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์ง€๋งŒ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•  ๋•Œ ์ผ๋ฐ˜์ ์œผ๋กœ ์•ฝ 50Mb ์ •๋„๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ๋ฏฟ์„ ์ˆ˜ ์—†์„ ์ •๋„๋กœ ์ œ๋Œ€๋กœ ์ž‘์„ฑ๋˜์ง€ ์•Š์•˜๋‹ค๊ณ  ๊ฐํžˆ ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ์‘๋‹ต์€ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์—…ํ•˜๋Š” ์ž‘์—… ๋ถ€ํ•˜๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์–ธ๊ธ‰ํ•œ ์›Œํฌ๋กœ๋“œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋‹ค์–‘ํ•œ ํฌ๊ธฐ์˜ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ๋‹ค๋ฃจ๋ฏ€๋กœ ๊ด‘๋ฒ”์œ„ํ•œ ๋ฆฌ์†Œ์Šค ์š”๊ตฌ ์‚ฌํ•ญ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ฌผ๋ก  ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์„ ์ผ๊ด€๋˜๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘๋œ ํŒŒ์ผ์„ _ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค_. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘ ์ž์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๊ธฐ์กด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

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

์ผ๋ถ€ Kubernetes ๋ฐฐํฌ์—๋Š” ์Šค์™‘์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์œ ํšจํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. kubeadm์— ํฌํ•จ๋œ ์˜จํ”„๋ ˆ๋ฏธ์Šค ์ œํ’ˆ์ธ Linux ๋ฐฐํฌํŒ์„ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค. ์„ค๊ณ„์ƒ ์ˆ˜ํ‰์  ํ™•์žฅ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ธฐํšŒ์ฃผ์˜์  ๋ฉ”๋ชจ๋ฆฌ ํ”ผํฌ์—์„œ ์‚ด์•„๋‚จ๊ณ  ์—ฌ์ „ํžˆ ๊ธฐ๋Šฅ(๊ทธ๋Ÿฌ๋‚˜ ๋Š๋ฆผ) ํ•˜๋ ค๋ฉด ํ™•์‹คํžˆ swap ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค .

์Šค์™‘์ด ํ™œ์„ฑํ™”๋œ ์ƒํƒœ์—์„œ kubeadm ๋ฅผ ์„ค์น˜ํ•˜๋ ค๋ฉด

  1. ๋‹ค์Œ ๋‚ด์šฉ์œผ๋กœ /etc/systemd/system/kubelet.service.d/20-allow-swap.conf ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    [Service]
    Environment="KUBELET_EXTRA_ARGS=--fail-swap-on=false"
    
  2. ์šด์˜

    sudo systemctl daemon-reload
    
  3. --ignore-preflight-errors=Swap ํ”Œ๋ž˜๊ทธ๋กœ kubeadm ์ดˆ๊ธฐํ™”

    kubeadm init --ignore-preflight-errors=Swap
    

https://stackoverflow.com/a/62158455/3191896

์ˆœ์ง„ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž๋กœ์„œ, ์‹œ๊ฐ„์— ๋ฏผ๊ฐํ•œ ์›Œํฌ๋กœ๋“œ๊ฐ€ ์žˆ๋Š” ์‹œ์Šคํ…œ ํฌ๋“œ๊ฐ€ ์Šค์™‘์ด ์•„๋‹Œ ๋™์ž‘์„ ์š”์ฒญํ•˜๊ณ  ๋‹ค๋ฅธ ์›Œํฌ๋กœ๋“œ(๊ธฐ๋ณธ์ ์œผ๋กœ)๊ฐ€ ์ตœ์„ ์˜ ๋ฒ”์ฃผ๋กœ ํ‘ธ์‹œ๋˜๋Š” ๊ฒƒ์ด ์™„๋ฒฝํ•˜๊ฒŒ ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ณ ๋ฏผ์ด ํ•ด๊ฒฐ๋˜์ง€ ์•Š์„๊นŒ์š”?

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

@metatic ์€ ๋‹ค์Œ๊ณผ

๋ฌผ๋ก , ์šฐ๋ฆฌ๋Š” ์ผ๊ด€์„ฑ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘ ๋œ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘ ์ž์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๊ธฐ์กด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

Linux ํ‘œ์ค€ C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ž๋ฅผ ๋Œ€์ฒดํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. malloc , realloc ๋ฐ free ๋Š” ํ•ด๋‹น ๋ชฉ์ ์„ ์œ„ํ•ด ํฌ์ธํ„ฐ๋ฅผ ํ†ตํ•ด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ mmapped ํŒŒ์ผ์—์„œ ํ• ๋‹นํ•˜๋„๋ก ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์žฌ์ •์˜ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ LD_PRELOADํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

๋‚ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์œ ์ผํ•œ ๊ณต๊ฐœ ์งˆ๋ฌธ์€ ์ด๊ฒƒ์ด ์ด๋ฏธ ๊ตฌํ˜„๋œ ๊ฒƒ์ธ์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค("swapfs" kubelet soft/hard ์ œํ•œ ์ œ์™ธ) - ๊ตฌ์ฒด์ ์ธ ์ œ์•ˆ ๋ฐ ์กฐ์น˜ ํ•ญ๋ชฉ์„ ์ž‘์„ฑํ•˜๊ธฐ ์ „์— ์‹ค์ œ kubelet/CRI cgroups ์ฝ”๋“œ๋ฅผ ์ฝ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. .

@์•ต๊ฑฐ์Šฌ๋ฆฌ์Šค ,
ํ–‰๋™์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ๋ณ€์„ ๋‘˜๋Ÿฌ๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ํ•ด์ƒ๋„๋‚˜ ๋งํฌ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ์‚ฌ ํ•ด์š”,
1์›”

ํ–‰๋™์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ๋ณ€์„ ๋‘˜๋Ÿฌ๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ํ•ด์ƒ๋„๋‚˜ ๋งํฌ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š”ํ•˜์ง€ ์•Š์•˜๋‹ค. (๋„์ปค ์ฝ”๋“œ๋ฅผ ์กฐ๊ธˆ ํŒŒ๊ณ  ๋“ค์—ˆ์ง€๋งŒ ์ง€๊ธˆ์ฏค์ด๋ฉด ๋ชจ๋“  ๊ฒƒ์„ ์žŠ์–ด๋ฒ„๋ ธ๊ณ  ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค)

๋‹ค๋ฅธ ์ž์›๋ด‰์‚ฌ์ž๋“ค๋„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ๋‚ด๊ฐ€ ์ด ์ผ์„ ํ•˜๊ฒ ๋‹ค๊ณ  ๋งํ•˜๋ฉด์„œ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ์„œ ์‚ฐ์†Œ๋ฅผ ํ›”์น˜์ง€ ์•Š์•˜์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.

@metick ์˜ ์Šคํ† ๋ฆฌ์— ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด:

ํ˜„์žฌ Kubernetes์—์„œ ์‹คํ–‰๋˜๋Š” Gigalixir๋ฅผ ํ˜ธ์ŠคํŠธ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์›น์•ฑ์ž…๋‹ˆ๋‹ค. ๋•Œ๋กœ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์ง„์„ ์ผ๊ด„ ์—…๋กœ๋“œํ•˜๋ฏ€๋กœ ๋‚ด ์•ฑ์—์„œ ์—ฌ๋Ÿฌ ImageMagick ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๊ธ‰์ฆํ•˜๊ณ  OOM ํ‚ฌ๋Ÿฌ๊ฐ€ ์‹คํ–‰๋˜๊ณ  ๋‚ด ์•ฑ์ด ๋‹ค์šด๋˜๊ณ (์ž ์‹œ) ์—…๋กœ๋“œ๊ฐ€ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ŠคํŒŒ์ดํฌ ์‚ฌ์šฉ๋Ÿ‰ ๋•Œ๋ฌธ์— Gigalixir์— ๋‚ด๊ฐ€ ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋งŽ์€ ๋น„์šฉ์„ ์ง€๋ถˆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด.

๋””์ž์ธ ๊ด€์ ์—์„œ ์Šค์™‘์„ ์ข‹์•„ํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๊ท€ํ•˜์˜ ๊ฒฐ์ •์€ ์‚ฌ์—…๊ฐ€๋“ค์—๊ฒŒ ๋น„์šฉ์„ ์ดˆ๋ž˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‚ญ๋น„์ž…๋‹ˆ๋‹ค.

์ˆ˜์ •ํ•˜์„ธ์š”. :)

์ด๊ฒƒ์€ ์ €์—๊ฒŒ๋„ ๋งค์šฐ ํฐ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ๋Š” ๋Œ€๋ถ€๋ถ„ ~100MB๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํฌ๋“œ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•˜์ง€๋งŒ ๋•Œ๋•Œ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ์ด๋ฒคํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋ฉด ๋‹ค์‹œ ๋“œ๋กญ๋ฐฑํ•˜๊ธฐ ์ „์— ๋ช‡ ๋ถ„ ๋™์•ˆ ์ตœ๋Œ€ 2GB์˜ RAM์„ ๋ฒ„์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋‹ˆ์š”, ์ž˜๋ชป ์ž‘์„ฑ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด ์•„๋‹ˆ๋ผ ์ž‘์—… ๋ถ€ํ•˜์˜ ํ˜„์‹ค์ž…๋‹ˆ๋‹ค.)
์ €๋Š” ์Šค์™‘์ด ์žˆ๋Š” 16GB ์‹œ์Šคํ…œ์—์„œ ํ•œ ๋ฒˆ์— ๊ฑฐ์˜ 100๊ฐœ์˜ ์ด๋Ÿฌํ•œ ์›Œํฌ๋กœ๋“œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ „ํ˜€ ์ž‘๋™ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ์›Œํฌ๋กœ๋“œ๋ฅผ Kubernetes๋กœ ์ด๋™ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ง€๊ธˆ์€ ๋‚ด ๋ฉ”์ธ ์•ฑ์ด Kubernetes์—์„œ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ๋น„-kubernetes ์‹œ์Šคํ…œ์—์„œ ์ด๋Ÿฌํ•œ ์›Œํฌ๋กœ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ž์ฒด ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ด๋Š” k8s๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋ชฉ์ ์„ ๋ฌดํšจํ™”ํ•ฉ๋‹ˆ๋‹ค. ์Šค์™‘์ด ์—†์œผ๋ฉด ์•ฑ์ด ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ ์•ฑ์ด ๋ฒ„์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š”(๋˜๋Š” ๊ทธ๋ ‡์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š”) ๋ช‡ ๋ถ„ ๋™์•ˆ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ RAM์„ ํ•ญ์ƒ ๋งŽ์ด ๋‚ญ๋น„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํฌ๋“œ์˜ CPU๋ฅผ ์กฐ์ ˆํ•˜๋Š” CPU ์ œํ•œ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ํฌ๋“œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์กฐ์ ˆํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ ํฌ๋“œ๋ฅผ ์ฃฝ์ด๋Š” ๊ฒƒ์€ ์„ค์ •๋œ CPU ์ œํ•œ๋ณด๋‹ค ๋” ๋งŽ์€ CPU ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํ•˜๋‚˜๋ฅผ ์ฃฝ์ด๋Š” ๊ฒƒ๋งŒํผ์ด๋‚˜ ํ„ฐ๋ฌด๋‹ˆ ์—†์Šต๋‹ˆ๋‹ค(์ฃ„์†กํ•˜์ง€๋งŒ ๋ชจ๋“  ํฌ๋“œ๊ฐ€ ๊ฒฐ๊ณผ ์—†์ด ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ๋Š” ๋ณต์ œ๋ณธ์€ ์•„๋‹™๋‹ˆ๋‹ค).

Kubernetes๋Š” ์ „์ฒด ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ „์ฒด ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋…ธ๋“œ์˜ ์Šค์™‘ ์„ธํŠธ์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” ํฌ๋“œ ์ž์ฒด์— ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ ๋‚ด์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์Šค์™‘๋˜๋Š” ํฌ๋“œ ์ˆ˜์ค€ ์Šค์™‘ ํŒŒ์ผ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ด๋ก ์ ์œผ๋กœ CPU ์ œํ•œ์ด ์ œํ•œํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์„ ์ดˆ๊ณผํ•˜๋Š” ํฌ๋“œ์˜ RAM ์‚ฌ์šฉ๋Ÿ‰ ๋ฐ ์„ฑ๋Šฅ(์Šค์™€ํ•‘์œผ๋กœ ์ธํ•ด)์„ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.
๋ถˆํ–‰ํžˆ๋„ cgroup์ด ์Šค์™‘ ํŒŒ์ผ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์ง€๋Š” ์•Š๊ณ  ์Šค์™‘ ์ƒํƒœ๋งŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ปค๋„์ด "mem ์‚ฌ์šฉ๋Ÿ‰์ด ์ด ํ•œ๋„๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ์Šค์™‘"ํ•˜๋„๋ก ์ง€์‹œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์•ก์„ธ์Šค ๋ฐ ๊ธฐํƒ€ ์ธก์ •ํ•ญ๋ชฉ.

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ ๋™์•ˆ ๋…ธ๋“œ์— ์Šค์™‘์ด ์กด์žฌํ•˜์ง€ ์•Š๋„๋ก ํ•˜๊ณ  ์ œํ•œ์ด ์„ค์ •๋˜์ง€ ์•Š์€ ํฌ๋“œ์— ๋Œ€ํ•ด swappiness๋ฅผ 0์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ์ œํ•œ์ด ์„ค์ •๋˜๋ฉด(๋˜๋Š” "swapInsteadOfKill"์ด๋ผ๊ณ  ๋งํ•˜๋Š” ์ผ๋ถ€ ๋‹ค๋ฅธ ์‚ฌ์–‘ ํ•„๋“œ) ๋‹ค์Œ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. 0์ด ์•„๋‹Œ ๊ฐ’์œผ๋กœ์˜ ์Šค์™‘ ๊ฐ€๋Šฅ์„ฑ?

"์Šค์™‘ ์—ฌ๋ถ€"์— ๋Œ€ํ•œ ๋…ผ์˜ ์™ธ์—๋„ @pai911 ์ด ์„ค๋ช…ํ•œ ๋™์ž‘์ด k8 ํŒ€์—์„œ ๋” ์ด์ƒ ํ•ด๊ฒฐ๋˜์ง€

kubelet์ด docker ๋ฐ๋ชฌ ๋ฉ”๋ชจ๋ฆฌ ์„ค์ •๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ(๊ทธ๋ฆฌ๊ณ  ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ์ฝ”๋“œ๋ฅผ ๋”ฐ๋ฅด์ง€ ์•Š๋Š” ์ผ๋ถ€ OS์—์„œ)์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ํด๋Ÿฌ์Šคํ„ฐ๋Š” SUSE Linux์—์„œ ์‹คํ–‰๋˜๋ฉฐ https://github.com/kubernetes/kubernetes/issues/53533#issuecomment -598056151์—์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ฌด์ œํ•œ ์Šค์™‘ ์‚ฌ์šฉ์„ ๊ฒฝํ—˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

OS ์„ธ๋ถ€ ์ •๋ณด: SUSE Linux Enterprise Server 12 SP4 - Linux 4.12.14-95.45-default

์–ด์จŒ๋“  k8s์—์„œ Swap์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ์ง€์›์ด ์—†์œผ๋ฉด ๊ธฐ๋ณธ OS์— ๊ด€๊ณ„์—†์ด kubelet์ด Docker ๋ฉ”๋ชจ๋ฆฌ ์„ค์ •์„ ์ผ๊ด€๋˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋‚˜๋Š” 1.21์—์„œ ์ด๊ฒƒ์„ ์ถ”์ง„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์š•๊ตฌ๋‚˜ ์ž์› ๋ด‰์‚ฌ์ž๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์˜์ œ์— ์Šค์™‘์„ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. 2017๋…„์— ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์Šค์™‘์„ ์ง€์›ํ•˜๋Š” ๋ฐ ์ด์˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. kubelet ์ œ๊ฑฐ, ํฌ๋“œ ์šฐ์„  ์ˆœ์œ„, ํฌ๋“œ ์„œ๋น„์Šค ํ’ˆ์งˆ์„ ํ˜ผ๋™ํ•˜์ง€ ์•Š๋„๋ก ํ•ด์•ผ ํ•˜๋ฉฐ, ์ค‘์š”ํ•˜๊ฒŒ๋Š” ํฌ๋“œ๊ฐ€ ์Šค์™‘์„ ํ—ˆ์šฉํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋งํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์‚ฌํ•ญ์€ ํฌ๋“œ๋ฅผ ํœด๋Œ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ตœ๊ทผ์—๋Š” NUMA ์ •๋ ฌ ๋ฉ”๋ชจ๋ฆฌ์™€ ๊ฐ™์€ ์ž‘์—…์„ ๋งŒ๋“œ๋Š” ๋ฐ ๋งŽ์€ ์—๋„ˆ์ง€๊ฐ€ ์ง‘์ค‘๋˜์–ด ์žˆ์ง€๋งŒ ์„ฑ๋Šฅ์— ๋œ ๋ฏผ๊ฐํ•˜๊ณ  ์ด ๊ณต๊ฐ„์„ ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๋Š” ๋ฐ ๋„์›€์ด ๋˜๋„๋ก ๋™๊ธฐ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์žˆ๋‹ค๋ฉด ์„ค๊ณ„๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜์—ˆ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณต๊ฐ„์—์„œ ์ž์„ธํ•œ KEP.

์ตœ๊ทผ์— ์ผ์ด ๋„ˆ๋ฌด ๋ฐ”๋น ์„œ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋”์ฐํ•˜๊ฒŒ ์ž˜ ๋”ฐ๋ผ๊ฐ€์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. Slack ์ฑ„๋„์— ๊ฐ€์ž…ํ•˜์ง€ ์•Š๊ณ ๋„ ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

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