Kubernetes: kubectl exec์˜ docker exec์—์„œ ์‚ฌ์šฉ์ž ํ”Œ๋ž˜๊ทธ ์ง€์›

์— ๋งŒ๋“  2016๋…„ 08์›” 16์ผ  ยท  97์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: kubernetes/kubernetes

docker exec ๊ฐ€ kubectl exec ์˜ ๋ฐฑ์—”๋“œ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. docker exec ์—๋Š” --user ํ”Œ๋ž˜๊ทธ๊ฐ€ ์žˆ์–ด ํŠน์ • ์‚ฌ์šฉ์ž๋กœ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Kubernetes์—๋Š” ์ด์™€ ๋™์ผํ•œ ๊ธฐ๋Šฅ์ด ์—†์Šต๋‹ˆ๋‹ค.

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

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

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ๊ฒ€์ƒ‰ํ–ˆ์ง€๋งŒ ์ž‘๋…„์˜ ์ด StackOverflow ๋‹ต๋ณ€๋งŒ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค -- http://stackoverflow.com/questions/33293265/execute-command-into-kubernetes-pod-as-other-user .

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

arekubectl sicli sinode

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

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

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

SGTM. @kubernetes/kubectl ์ด์— ๋Œ€ํ•œ ์ƒ๊ฐ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋ถˆํ•ฉ๋ฆฌํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ์ œ์–ดํ•˜๋ ค๋ฉด ํฌ๋“œ ๋ณด์•ˆ ์ •์ฑ…์ด ํ•„์š”ํ•˜๊ณ  ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉ์ž๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์•„์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•ด ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— UID๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•จ).

@sttts ๋ฐ @ncdc re exec

ํ•ฉ๋ฒ•์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€

์ด์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚ด ์•ฑ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋Š” ๋นŒ๋“œํŒฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ๋ฉ๋‹ˆ๋‹ค. ์‰˜์„ ์—ด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ•  ๋•Œ ๋‚˜๋Š” ๋ฃจํŠธ์ด๊ณ  ๋ชจ๋“  ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋นŒ๋“œํŒฉ ์ƒ์„ฑ ํ™˜๊ฒฝ์€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•ฑ ์‚ฌ์šฉ์ž( su -l u22055 )์— ๋Œ€ํ•œ ๋กœ๊ทธ์ธ ์…ธ์„ ์—ด๋ฉด ๋‚ด ์•ฑ ํ™˜๊ฒฝ์ด ์žˆ์ง€๋งŒ ์ด์ œ kubernetes ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

su -l ์ด env vars๋ฅผ ๋ณต์‚ฌํ•˜์ง€ ์•Š์•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ช…์‹œ์ ์œผ๋กœ ๋ณต์‚ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋˜๋Š” ๋‹ค๋ฅธ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

2016๋…„ 10์›” 11์ผ ํ™”์š”์ผ ์˜คํ›„ 5์‹œ 26๋ถ„, Michael Elsdรถrfer < [email protected]

์ผ๋‹ค:

๋‚ด ์•ฑ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋Š” ๋นŒ๋“œํŒฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ด๊ณ  ์‹ถ๋‹ค
๊ป๋ฐ๊ธฐ. ๋‚ด๊ฐ€ ํ•  ๋•Œ ๋‚˜๋Š” ๋ฃจํŠธ์ด๊ณ  ๋ชจ๋“  ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ
buildpack ์ƒ์„ฑ ํ™˜๊ฒฝ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ ์…ธ์„ ์—ด๋ฉด
์•ฑ ์‚ฌ์šฉ์ž(su -l u22055) ๋‚ด ์•ฑ ํ™˜๊ฒฝ์ด ์žˆ์ง€๋งŒ ์ง€๊ธˆ์€
Kubernetes ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

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

@miracle2k - su -m -l u22055 ํ•ด๋ณด์…จ๋‚˜์š”? -m ๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๋ณด์กดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@adarshaj @smarterclayton ์กฐ์–ธ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. su -m ์ž์ฒด ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ(ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ž˜๋ชป๋จ) ๊ทธ ๋™์•ˆ ์ž‘๋™ํ•˜๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์š”์ ์€ - ๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ ์—ฌ๊ธฐ์— ๊ฒŒ์‹œํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค - "kubectl exec"์ด ์˜ฌ๋ฐ”๋ฅธ ์ผ์„ ํ•˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋„์ปค ํŒŒ์ผ์ด ์ •์˜ํ•œ ์‚ฌ์šฉ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ด ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•œ ์˜ˆ์ž…๋‹ˆ๋‹ค.

๊ณต์‹ Jenkins ์ด๋ฏธ์ง€๋Š” ์‚ฌ์šฉ์ž Jenkins๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•ด์•ผ ํ•˜๋Š” ์˜๊ตฌ ๋””์Šคํฌ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. kubectl์— --user๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฃจํŠธ ๋ฐ ํฌ๊ธฐ ์กฐ์ •2fs๋กœ bashํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ ๊ทธ๊ฒƒ ์—†์ด๋Š” ๊ทน์‹ฌํ•œ ๊ณ ํ†ต์ž…๋‹ˆ๋‹ค.

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

๋””๋ฒ„๊น… ๋ชฉ์ ์œผ๋กœ ๋ฌผ๊ฑด์„ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ๋„ ์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ๋‚˜๋Š” kubernetes๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋…ธ๋“œ์— ssh ๋ฅผ ๋„ฃ๊ณ  docker exec ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ์ƒํƒœ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์ด ๊ธฐ๋Šฅ์€ ๋งค์šฐ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค

ํ™•์ธํ•˜์ง€ ์•Š์•˜์ง€๋งŒ --as ๋ฐ --as-group ์ „์—ญ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์—ฌ๊ธฐ์— ๋„์›€์ด ๋˜๋‚˜์š”? exec ์—์„œ๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ? cc @liggitt

ํ™•์ธํ•˜์ง€ ์•Š์•˜์ง€๋งŒ --as ๋ฐ --as-group ์ „์—ญ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์—ฌ๊ธฐ์— ๋„์›€์ด ๋ฉ๋‹ˆ๊นŒ? ๊ทธ๋“ค์€ ์‹ฌ์ง€์–ด ์ž„์›๊ณผ ํ•จ๊ป˜ ์ผํ•ฉ๋‹ˆ๊นŒ? cc @liggitt

์•„๋‹ˆ์š”, ์ด๋Š” exec ํ˜ธ์ถœ์— ๋Œ€ํ•ด ์„ ํƒํ•œ uid๋ฅผ ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•ด ์ „๋‹ฌํ•˜์ง€ ์•Š๊ณ  kubernetes API์— ์ž์‹ ์„ ์‹๋ณ„ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ํ”Œ๋ž˜๊ทธ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์€ ๋ฒˆ๊ฑฐ๋กœ์šด ์ผ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๊ถŒํ•œ์ด ์—†๋Š” ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ๊ณ  ์—ฌ๊ธฐ์— ๋ณผ๋ฅจ์„ ํƒ‘์žฌํ•˜์ง€๋งŒ ๋ณผ๋ฅจ ํด๋”๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์†Œ์œ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ง€์ •๋œ ๊ถŒํ•œ์œผ๋กœ ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ•˜๋Š” ์˜ต์…˜์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ถŒํ•œ์ด ์—†๋Š” ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ง„์ž…์  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ถŒํ•œ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ถŒํ•œ์ด ์—†๋Š” ์‚ฌ์šฉ์ž๋กœ๋„ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— lifecycle.preStart ํ›„ํฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. kubectl exec -u root ๋Š” '-u' ์˜ต์…˜์ด ์žˆ์œผ๋ฉด ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ ์‚ฌ์šฉ์ž๊ฐ€ ์•„๋‹Œ 'exec'๋ฅผ ํ—ˆ์šฉ/์ฐจ๋‹จํ•˜๋ ค๋ฉด ์ถ”๊ฐ€ RBAC ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

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

/์‹œ๊ทธ๋„ ํด๋ฆฝ

์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด +1์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์—†์œผ๋ฉด ๋””๋ฒ„๊น…์„ ํ›จ์”ฌ ๋” ๊ณ ํ†ต์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด +1์ž…๋‹ˆ๋‹ค. ๋‚ด ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•˜๊ณ  ๋„์ปค ํŒŒ์ผ์— ๋งˆ์ง€๋ง‰ ์ค„์— USER ๋ฃจํŠธ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ ๋‹ค์Œ ๋””๋ฒ„๊ทธํ•˜๊ณ  ์ด๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

docker ๋ช…๋ น์ค„์— --user ํ”Œ๋ž˜๊ทธ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

johnjjung, ๋…ธ๋“œ์— ๋Œ€ํ•œ ssh ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ํ”Œ๋ž˜๊ทธ์™€ ํ•จ๊ป˜ docker๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์•ฝ๊ฐ„์˜ ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ , ๊ต‰์žฅํ•ฉ๋‹ˆ๋‹ค ์ด๊ฒƒ์„ ์‹œ๋„ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค

2017๋…„ 7์›” 10์ผ 11:34 -0400, BenAbineriBubble [email protected] ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

johnjjung, ๋…ธ๋“œ์— ๋Œ€ํ•œ ssh ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ํ”Œ๋ž˜๊ทธ์™€ ํ•จ๊ป˜ docker๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์•ฝ๊ฐ„์˜ ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ๋ณด๊ฑฐ๋‚˜ ์Šค๋ ˆ๋“œ๋ฅผ ์Œ์†Œ๊ฑฐํ•˜์„ธ์š”.

+1 ์ •๋ง ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ssh๋ฅผ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ docker exec๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

/cc @frobware

+1 ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋” ์ด์ƒ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ docker exec -u๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

+1 - kubectl exec์€ docker exec์— ๋น„ํ•ด ์‹œ๊ฐ„์„ ์—„์ฒญ๋‚˜๊ฒŒ ์ ˆ์•ฝํ•ด ์ฃผ๋ฏ€๋กœ ์‚ฌ์šฉ์ž๋ฅผ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด docker exec๋กœ ๋˜๋Œ์•„๊ฐ€์•ผ ํ•  ๋•Œ๋งˆ๋‹ค ๋ˆˆ๋ฌผ์ด ๋‚ฉ๋‹ˆ๋‹ค.

๊ณ ๋ ค ์‚ฌํ•ญ:

  • uid๋Š” CRI์šฉ exec ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ผ๋ถ€์—ฌ์•ผ ํ•˜๋ฉฐ ๋ชจ๋“  ๋Ÿฐํƒ€์ž„์—์„œ ์ด๋ฅผ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ธ์ฆ ํ™•์ธ์ด uid์— ๋Œ€ํ•œ ํฌ๋“œ ๋ณด์•ˆ ์ •์ฑ… ์ œํ•œ ์‚ฌํ•ญ์ธ์ง€ ํŒŒ์•…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ถˆํ–‰ํžˆ๋„ ์šฐ๋ฆฌ๊ฐ€ ์Šต๊ด€์ ์œผ๋กœ ๋งŒ๋“  ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— +1์ž…๋‹ˆ๋‹ค(์ฆ‰, runAsUser๋ฅผ root๋กœ ์„ค์ •... ๊ทธ๋ฆฌ๊ณ  public ๐Ÿ˜ฎ์„ ๋ฐฐํฌํ•  ๋•Œ ๊ฐ’์„ ๋˜๋Œ๋ฆฌ๋Š” ๊ฒƒ์„ ์žŠ์Œ).

+1

๋‚˜๋ฅผ ์œ„ํ•ด +1, ํฌ๋“œ์— ๋กœ๊ทธ์ธํ•˜๊ณ  ์‹คํ–‰ ์‚ฌ์šฉ์ž๋กœ ๋ฃจํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์žฌ๋ฐฐํฌํ•˜์ง€ ์•Š๊ณ  ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด --user ํ”Œ๋ž˜๊ทธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ์ง€์›์„ ๋ฐ›๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ด ์žˆ์Šต๋‹ˆ๊นŒ? (์˜ˆ, ์˜ˆ, ํŒจ์น˜๊ฐ€ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค :) )

+1 ์ •์˜๋œ ์‚ฌ์šฉ์ž์™€ ํ•จ๊ป˜ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ด ๊ธฐ๋Šฅ์ด ์žˆ์œผ๋ฉด ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋ณด์•ˆ ๋ฌธ์ œ๋กœ ์ธํ•ด ๊ตฌํ˜„์ด ๊นŒ๋‹ค๋กœ์šธ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด Dockerfile์ด ์ฒ˜์Œ์— ๋ฃจํŠธ๊ฐ€ ์•„๋‹Œ ์‚ฌ์šฉ์ž๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ ์ด์ œ ๋ฃจํŠธ ์‚ฌ์šฉ์ž๋กœ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋„๋ก ํ—ˆ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? -- docker์˜ ์‚ฌ์šฉ์ž ํ”Œ๋ž˜๊ทธ๋Š” ์ด๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋“ค์ด ์ ์ ˆํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ–ˆ๋‹ค๋ฉด kubectl exec ๋ช…๋ น์„ ํŒจ์น˜ํ•˜์—ฌ ์ด๊ฒƒ์„ ์ „๋‹ฌํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์ ์ ˆํ•œ ์ „๋žต์ธ์ง€ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋Ÿฐ ๋‹ค์Œ PR์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@johnjjung ์˜ˆ, ์—ฌ๊ธฐ ์ „๋žต์€ docker --user ํ”Œ๋ž˜๊ทธ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด kubectl exec๋ฅผ ํŒจ์น˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ kubectl์—์„œ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด GCP์—์„œ ์•”์‹œ์  ์ธ์ฆ์„ ๋ฐ›์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ ๋ฌธ์ œ๋Š” ๊ฒฝ๋ฏธํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ kubectl์—์„œ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด GCP์—์„œ ์•”์‹œ์  ์ธ์ฆ์„ ๋ฐ›์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ ๋ฌธ์ œ๋Š” ๊ฒฝ๋ฏธํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

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

@liggitt Dockerfile ์ž์ฒด์—์„œ ์‚ฌ์šฉ์ž๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ๊ณผ ๋‹ค๋ฅด์ง€ ์•Š์ง€๋งŒ Docker์˜ ์‚ฌ์šฉ์ž ํ”Œ๋ž˜๊ทธ๋กœ ์—ฌ์ „ํžˆ ๋ฃจํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Docker์˜ ์ฃผ์š” ๊ด€์‹ฌ์‚ฌ๋Š” _์‹คํ–‰ ์ค‘์ธ_ ์ปจํ…Œ์ด๋„ˆ _๋‚ด์—์„œ ๋ฃจํŠธ ์•ก์„ธ์Šค๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋Š ์‹œ์ ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๋„๊ตฌ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์‹ค์ œ๋กœ ์‹ ๋ขฐ๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด Dockerfile์ด ์ฒ˜์Œ์— ๋ฃจํŠธ๊ฐ€ ์•„๋‹Œ ์‚ฌ์šฉ์ž๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ ์ด์ œ ๋ฃจํŠธ ์‚ฌ์šฉ์ž๋กœ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋„๋ก ํ—ˆ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? -- docker์˜ ์‚ฌ์šฉ์ž ํ”Œ๋ž˜๊ทธ๋Š” ์ด๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๊นŒ?

@johnjjung @jordanwilson230 ์ด ๋งํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. docker ๋Ÿฐํƒ€์ž„ ์ธ์ˆ˜๊ฐ€ Dockerfile ์ง€์‹œ๋ฌธ์„ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ๋จธ๋ฆฌ ๊ผญ๋Œ€๊ธฐ์—์„œ ์ด๊ฒƒ์€ ๋Œ€๋ถ€๋ถ„์˜ ๋Ÿฐํƒ€์ž„ ์ธ์ˆ˜๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค(์˜ˆ: ํฌํŠธ ๋ฒˆํ˜ธ).

์›๋ž˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ exec๋ฅผ ๋ฃจํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๋Œ€ํ•ด ๋น„์Šทํ•œ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

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

์—ฌ๊ธฐ์„œ ์ œ๊ธฐ๋œ ๋ฌธ์ œ๋Š” (์ด๋ฏธ) ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฃจํŠธ๋กœ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ์ฃผ๋กœ ๋””๋ฒ„๊น… ๋ชฉ์ ์œผ๋กœ ๋ชจ๋“  ์‚ฌ์šฉ์ž๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋™ ์˜ต์…˜์„ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

@liggitt ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์œ„์˜ ์˜๊ฒฌ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋‹ค์Œ์„ ์‹œ๋„ํ•˜์‹ญ์‹œ์˜ค.

  • ํฌ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋…ธ๋“œ์— ssh(๋‚ด ํฌ๋“œ๋Š” Kafka๋ฅผ ์‹คํ–‰ํ•˜๊ณ  kafka ์‚ฌ์šฉ์ž๋Š” pod.spec์—๋„ ์„ค์ •๋จ)
    jordan@gke-my-default-pool-dsioiaag-i9f3 ~ $ docker exec -it -u root myKafkaContainer bash root@kafka-0:/# echo "I've exec'd into my container as $(whoami) despite defining the kafka user in pod.spec...." I've exec'd into my container as root despite defining the kafka user in pod.spec.... root@kafka-0:/#
    ์ด๊ฒƒ์ด GKE ๊ด€์ ์—์„œ ์ด๋ฏธ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•œ ํ›„(์‹ฌ๊ฐํ•˜๊ฒŒ ์„ฑ๊ฐ€์‹  ๋ฐฉ์‹์ด์ง€๋งŒ) ์–ด๋–ค ์ƒˆ๋กœ์šด ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ์ƒ๊ฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ๋ฌธ์ œ๋Š” ๋ฐ”ํ€ด๋ฅผ ์žฌ๋ฐœ๋ช…ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํŽธ์˜๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด GKE ๊ด€์ ์—์„œ ์ด๋ฏธ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•œ ํ›„(์‹ฌ๊ฐํ•˜๊ฒŒ ์„ฑ๊ฐ€์‹  ๋ฐฉ์‹์ด์ง€๋งŒ) ์–ด๋–ค ์ƒˆ๋กœ์šด ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ์ƒ๊ฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฌธ์ œ๋Š” ํ˜„์žฌ ์กด์žฌํ•˜์ง€ ์•Š๋Š” kubernetes API๋ฅผ ํ†ตํ•ด ๊ถŒํ•œ์„ ๋…ธ์ถœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ API๋ฅผ ํ†ตํ•ด ์›Œํฌ๋กœ๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ณ  ๋…ธ๋“œ์— ๋Œ€ํ•œ ssh ์•ก์„ธ์Šค๊ฐ€ ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ์ •์ƒ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ API๋ฅผ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  1. ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž๋Š” ์ •์ฑ…์„ ํ†ตํ•ด ํ—ˆ์šฉ ์—ฌ๋ถ€๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ์ •์ฑ…์ด ํ‘œํ˜„๋˜๋Š” ๋ฐฉ์‹์€ ๊ธฐ์กด ์ •์ฑ…๊ณผ ์ผ๊ด€์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค(์ด ๊ฒฝ์šฐ ๋™์ผํ•œ PodSecurityPolicy ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์ด ์ด์ƒ์ ์ž„).
  3. ์ƒˆ ๊ธฐ๋Šฅ์€ ์ด์ „์— ๋ณด์•ˆ๋œ ์‹œ์Šคํ…œ์˜ ๊ตฌ๋ฉ์„ ์—ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๊ธฐ๋ณธ๊ฐ’์ด ๊บผ์ ธ ์žˆ๊ฑฐ๋‚˜ ๊ธฐ์กด ์ •์ฑ…์— ๋”ฐ๋ผ ์ฐจ๋‹จ๋จ).

@liggitt ์ ˆ๋Œ€์ ์œผ๋กœ ๋งž์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณด์•ˆ ์˜ํ–ฅ์˜ ๋ฒ”์œ„๋ฅผ _node_ ์•ก์„ธ์Šค๋กœ ์ขํ˜”์œผ๋ฏ€๋กœ ์šฐ๋ฆฌ( @johnjjung ๋ฐ ๊ธฐํƒ€)๋Š” ๋งˆ์นจ๋‚ด ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋‚ด์šฉ์— ๋Œ€ํ•ด ์ด ํ† ๋ก ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. GKE ํ”Œ๋žซํผ์—์„œ ๋ฃจํŠธ๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด kubectl ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. AWS์™€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์„ ๋งŒ๋‚˜๋ ค๋ฉด ์•ฝ๊ฐ„์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค. @johnjjung ๊ทธ๋ž˜๋„ ๋๋‚ผ ์˜ํ–ฅ์ด ์žˆ๋‚˜์š”?

@liggitt ํŽธ์ง‘ํ•œ ๋‚ด์šฉ์„ ๋ฐฉ๊ธˆ ๋ณด์•˜๋Š”๋ฐ ์•ž์œผ๋กœ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”.

๊ด€๋ จ ํ† ๋ก ์€ ๋ณ„๋„๋กœ ์ง€์ •๋œ ์‚ฌ์šฉ์ž ID๋ฅผ ํฌํ•จํ•˜์—ฌ ๊ธฐ์กด ํฌ๋“œ์—์„œ ์ž„์˜์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ œ์•ˆ( https://github.com/kubernetes/community/pull/1269 )์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์‹คํ–‰ํ•˜๋ ค๋Š” ๊ฒƒ์˜ ๋ณด์•ˆ ์ธก๋ฉด์ด ์›๋ž˜ ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋ฉ€์–ด์งˆ์ˆ˜๋ก ์ „์ฒด ์‚ฌ์–‘์ด ๊ธฐ์กด ์Šน์ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ์˜ํ•ด ์ผ๊ด€๋œ ์ปจํ…Œ์ด๋„ˆ๋กœ ๊ฒ€์ฆ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋” ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

@jordanwilson230 ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๊ฒ€ํ† ํ•˜๋‹ค๊ฐ€ kubectl exec ๋ช…๋ น์— ๋Œ€ํ•œ ํ†ตํ•ฉ ์ง€์ ์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ข‹์€ ์ถœ๋ฐœ์ ์ž…๋‹ˆ๋‹ค. docker๋ฅผ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ kubernetes ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ ์–ด๋””๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์œ  ํ”Œ๋ž˜๊ทธ. ์ฆ‰, ์–ด๋”˜๊ฐ€์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž/ํฌ๋“œ ๋ณด์•ˆ ์ •์ฑ… ๋“ฑ์œผ๋กœ ์ด ๋ฌธ์ œ๋กœ ๋‹ค์‹œ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ์— ํ•œ ๋‹จ๊ณ„์”ฉ.

๋ˆ„๊ตฌ๋“ ์ง€ kubernetes๊ฐ€ docker --user ํ”Œ๋ž˜๊ทธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ์œ„์น˜๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @johnjjung์ž…๋‹ˆ๋‹ค. ์˜›๋‚  ์˜›์ ์—(<1.6) Kubernetes kubelets ๋Š” Docker๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ–ˆ์œผ๋ฉฐ ์ด์™€ ๊ฐ™์€ ์˜ต์…˜์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์—ฌ๋Ÿฌ ๋Ÿฐํƒ€์ž„์„ ์ง€์›ํ•˜๋Š” ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค์ธ CRI๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Docker์™€ ๊ฐ™์€ ๋Ÿฐํƒ€์ž„์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์„ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ CRI์˜ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

Kubernetes๋Š” ๋‹ค์–‘ํ•œ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„( dockershim +Docker+ containerd , cri-containerd + containerd , rkt, cri-o, lxd, Frakti ๋“ฑ)์— ๋ฌด์—‡์„ ํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. CRI ์ธํ„ฐํŽ˜์ด์Šค ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. cri-o ๋Ÿฐํƒ€์ž„ ๊ตฌํ˜„์„ ์œ„ํ•ด ์ง์ ‘ ๋˜๋Š” dockershim ๋˜๋Š” cri-containerd ์™€ ๊ฐ™์€ shim์„ ํ†ตํ•ด. ๋”ฐ๋ผ์„œ ์—ฌ๊ธฐ์—์„œ ์›ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ ค๋ฉด(์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋œ ๊ฒƒ๊ณผ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰ ์ค‘์ธ ๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ์— ํ”„๋กœ์„ธ์Šค ์ถ”๊ฐ€) ๋จผ์ € ํ•ด๋‹น ์˜ต์…˜์„ ์ง€์›ํ•˜๋„๋ก CRI ์‚ฌ์–‘ ์„ ํ™•์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ExecSync ๋Š” uid ์˜ต์…˜์ด ํ•„์š”ํ•˜๊ณ  LinuxContainerSecurityContext ๋Š” ๊ธˆ์ง€ํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. @liggitt ๊ฐ€ ์œ„์—์„œ ๋งŽ์ด ๋งํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค).

๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ฐ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ๋˜๋Š” ๋Ÿฐํƒ€์ž„ shim์€ ๊ณ„์† ์ง„ํ–‰ํ•˜์—ฌ ์ด์— ๋Œ€ํ•œ ์ง€์›์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Docker์˜ ๊ฒฝ์šฐ ์ด๋Š” dockershim ๊ตฌํ˜„์„ ํ™•์žฅํ•˜์—ฌ CRI ์‚ฌ์–‘/์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•œ ์ถ”๊ฐ€๋ฅผ ์ง€์›ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ dockershim +Docker๊ฐ€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ณ  cri-containerd + containerd ๊ฐ€ ์ถ”๊ฐ€ ๋ฆด๋ฆฌ์Šค๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜๋ฏ€๋กœ cri-containerd ์— ์ง‘์ค‘ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

image

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

https://github.com/kubernetes/community/blob/master/contributors/devel/container-runtime-interface.md

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

@whereisaaron ๊ท€ํ•˜์˜ ๊ฒŒ์‹œ๋ฌผ์€ ํฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์ ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@whereisaaron ์ž์„ธํ•œ ๋‚ด์šฉ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋‹น์‹ ์„ ์ดํ•ดํ•œ๋‹ค๋ฉด, ๋””๋ฒ„๊ทธ ์ œ์•ˆ(๋งŒ์ผ ๊ทธ๊ฒƒ์ด ํ†ต๊ณผ๋œ๋‹ค๋ฉด)์ด ํ•˜๋ฃจ๊ฐ€ ๋๋‚  ๋•Œ ์ด๊ฒƒ์„ ๋‘๋Š” ๊ฐ€์žฅ ์ข‹์€ ์žฅ์†Œ๊ฐ€ ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ž‘์—… ์Šน์ธ ์—ฌ๋ถ€๋Š” ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ ํƒํ•œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ•ด๋‹น ํฌ๋“œ์— ์—ฐ๊ฒฐํ•˜์—ฌ ํ•ด๋‹น ํฌ๋“œ๋ฅผ ๋””๋ฒ„๊ทธํ•  ์ˆ˜ ์žˆ์ง€๋งŒ(๊ต‰์žฅํžˆ ๋“ค๋ฆฝ๋‹ˆ๋‹ค) ์›๋ž˜ ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ์‚ฌ์šฉ์ž๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋˜ํ•œ ๊ธฐ๋‹ค๋ฆฌ๊ฑฐ๋‚˜ cri-containerd๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒจ์น˜๋ฅผ ์ง„ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์ด๊ฒƒ์ด ์•„์ง ๊ตฌํ˜„๋˜์ง€ ์•Š์€ ์ด์œ  ์ค‘ ํ•˜๋‚˜๋Š” ๋‹ค๋ฅธ ์˜์—ญ์—์„œ ์ž‘์—…ํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ทธ๋ฃน์ด ์žˆ๋Š” ์—ฌ๋Ÿฌ ์ €์žฅ์†Œ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@johnjjung ๋””๋ฒ„๊ทธ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ Kubernetes 1.9์—์„œ '์•ŒํŒŒ' ๊ธฐ๋Šฅ์œผ๋กœ ๊ตฌํ˜„๋˜๋„๋ก ์Šน์ธ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๋ช…์‹œ์ ์œผ๋กœ ํ™œ์„ฑํ™”ํ•˜์ง€ ์•Š๋Š” ํ•œ ํ•ด์ œ๋จ). ๋‚˜๋Š” ๊ทธ๋“ค์ด 1.9์— ๊ทธ๊ฒƒ์„ ๋งŒ๋“ค์—ˆ๋‹ค๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ์•„๋งˆ๋„ 1.10 ๋˜๋Š” ๊ทธ ์ดํ›„๊นŒ์ง€๋Š” ์•„๋‹ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋””๋ฒ„๊ทธ ์ปจํ…Œ์ด๋„ˆ๋Š” '๋””๋ฒ„๊น… ์ค‘์ธ' ๋Œ€์ƒ ํฌ๋“œ ๋‚ด์—์„œ ํ”„๋กœ์„ธ์Šค๋กœ ์‹คํ–‰๋˜๋ฏ€๋กœ ํฌ๋“œ์™€ ๋™์ผํ•œ ์ปค๋„ ๋ณด์•ˆ ์ปจํ…์ŠคํŠธ์— ์žˆ์œผ๋ฉฐ ์ž์ฒด ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€/ํŒŒ์ผ ์‹œ์Šคํ…œ๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋ฅผ ๋””๋ฒ„๊ทธํ•˜๊ณ  Pod์— ์žˆ๋Š” ๋ชจ๋“  ๋ณผ๋ฅจ์„ ํƒ‘์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋™์ผํ•œ ๋ณด์•ˆ ์ปจํ…์ŠคํŠธ์— ์žˆ์œผ๋ฏ€๋กœ Pod์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” uid์— ๋Œ€ํ•ด ๋™์ผํ•œ ์ปค๋„ ์ œํ•œ ์ œํ•œ์ด ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์— ๋Œ€ํ•ด ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ž‘์—… ์ค‘์ธ #sig-node ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ฌผ์–ด๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

CRI ํ™•์žฅ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด #sig-node์˜ ๋งŽ์€ ์ง€์›์ด ํ•„์š”ํ•˜๊ณ  cri-containerd ๋ฐ cri-o ์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๋Ÿฐํƒ€์ž„ ํ”„๋กœ์ ํŠธ์˜ ๋ฐ˜๋Œ€๊ฐ€ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ง€์›์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋Š˜ ์‹œ๊ฐ„์ด ๋งŽ์ง€ ์•Š์•˜์ง€๋งŒ GKE์—์„œ ์‹คํ–‰๋˜๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ์ž [-u] ํ”Œ๋ž˜๊ทธ๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ž„์‹œ kubectl ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/jordanwilson230/kubectl-plugins

์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ•ด๋‹น ํ”Œ๋Ÿฌ๊ทธ์ธ ๋˜๋Š” ๋ชจ๋“  ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ž์œ ๋กญ๊ฒŒ ์ˆ˜์ •/๋ณต์‚ฌํ•˜์‹ญ์‹œ์˜ค. @johnjjung ๋ฐ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋” ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์„ ๋•Œ๊นŒ์ง€ ์ž„์‹œ ์†”๋ฃจ์…˜์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

GCP์™€ ๊ด€๋ จ์ด ์—†๋Š” ๋Œ€์ฒด ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ SSH๋ฅผ ์ „ํ˜€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ kubectl ์ž‘์—…๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

https://github.com/mikelorant/kubectl-exec-user

kubectl-exec-user์˜ ํฌ๋“œ๋Š” ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์ด ์…ธ์„ ์š”์ฒญํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๊นŒ?

kubernetes API๊ฐ€ ํ—ˆ์šฉํ•˜๋Š” ์•ก์„ธ์Šค๋กœ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค. RBAC๊ฐ€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋…ธ๋“œ ๋„์ปค ์†Œ์ผ“์„ ๋งˆ์šดํŠธํ•˜๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

SSH๋ฅผ ์š”๊ตฌํ•˜์ง€ ์•Š๊ณ  ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋…ธ๋“œ๋กœ ๋‚˜๊ฐ€๋Š” ์ฐฝ์˜์ ์ธ ๋ฐฉ๋ฒ•์„ ๋‚ด ์†”๋ฃจ์…˜์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค. ๋ชจ๋“  ๋™์ผํ•œ ๋ณด์•ˆ ์กฐ๊ฑด์„ ๊ณ ๋ คํ•ด์•ผ ํ•˜์ง€๋งŒ ์ตœ์†Œํ•œ kubernetes API ์„œ๋ฒ„ ์ œํ•œ ์‚ฌํ•ญ์„ ์ค€์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.

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

์ด ๋ฌธ์ œ๋ฅผ ์ง€๊ธˆ ์ข…๋ฃŒํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•˜๋‹ค๋ฉด /close ๋กœ ์ข…๋ฃŒํ•˜์‹ญ์‹œ์˜ค.

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

/remove-lifecycle ๋ถ€์‹ค

์ด๊ฒƒ์€ ๋งค์šฐ ํ™˜์˜ํ•  ์ผ์ž…๋‹ˆ๋‹ค. ๋ณด์•ˆ ์˜์‹์ด ์žˆ๊ณ  ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฃจํŠธ๊ฐ€ ์•„๋‹Œ ๊ฒƒ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๋ถˆ์ด์ต์„ ๋ฐ›๋Š” ๊ฒƒ์€ ์ฟจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (https://github.com/kubernetes/kubernetes/issues/30656#issuecomment-272055993)

/ ์„œ๋ช… ๋…ธ๋“œ

https://github.com/kubernetes/kubernetes/pull/59092์—์„œ ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ๋ฆฌ๋ฒ ์ด์Šค๊ฐ€ ํ•„์š”ํ•œ ๋ฏธ์™„์„ฑ PR์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ์ง‘์–ด๋“ค๊ณ  ๋งˆ๋ฌด๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? CC @louyihua

+1
( @SimenB ์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋””๋ฒ„๊น… ๋ชฉ์ ์œผ๋กœ ์„ค์น˜ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ "๋„์ปค๋ฅผ ์ง์ ‘ ์‚ฌ์šฉ" ํžŒํŠธ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.)

์ด๊ฒƒ์ด ์ œ๋Œ€๋กœ ์ง€์›๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ์ค‘๊ฐ„ ์†”๋ฃจ์…˜์€ su-exec (Dockerfile ๋˜๋Š” K8s ๋งค๋‹ˆํŽ˜์ŠคํŠธ์—์„œ)๋กœ ๋„์ปค CMD๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. su-exec์˜ ๋ฌด๊ฒŒ๋Š” ๊ณ ์ž‘ 20k(์•ŒํŒŒ์ธ์—์„œ)์— ๋ถˆ๊ณผํ•˜๋ฉฐ kubectl exec์— ๋ฃจํŠธ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์•ฑ์ด ๊ถŒํ•œ ์—†์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

+1

๋‚˜๋Š” ๋˜ํ•œ ๊ทธ๋Ÿฌํ•œ -u ํ”Œ๋ž˜๊ทธ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. +1.

๊ทธ๋ƒฅ ์•„์ด๋””์–ด:

์˜ˆ๋ฅผ ๋“ค์–ด --conainer-type ์™€ ๊ฐ™์€ ๊ฒƒ์€ ์ง€์›๋˜๋Š” ๋ชจ๋“  ์ธ์ˆ˜๋ฅผ ๊ธฐ๋ณธ ์ปจํ…Œ์ด๋„ˆ ๊ตฌํ˜„์— ์ง์ ‘ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํฐ ์žฅ์ ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

kubectl exec --container-type=docker -it -u 0 NAME

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด kubectl์—์„œ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ ์ค‘ ์ผ๋ถ€๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ง€์›๋˜๋Š” ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ์œ ํ˜•์— ๋Œ€ํ•ด kubelet ๊ณ„์ธต์—์„œ ์ปจํ…Œ์ด๋„ˆ๊นŒ์ง€ ์ง€์›๋˜๋Š” ์ธ์ˆ˜๋ฅผ ๋งคํ•‘ํ•˜๊ณ  ์ถ”์ƒํ™”ํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋…ธ๋ ฅ์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์š”์•ฝํ•˜์ž๋ฉด --container-type ํ”Œ๋ž˜๊ทธ๊ฐ€ ์—†์œผ๋ฉด kubectl์—์„œ ์ถ”์ƒํ™”๋œ ์ธ์ˆ˜๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ธฐ๋ณธ ์ปจํ…Œ์ด๋„ˆ ์œ ํ˜•์€ ์™„์ „ํžˆ ํˆฌ๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ ํŠน์ • ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ์œ ํ˜•์— ๋ฐ”์ธ๋”ฉํ• ์ง€ ์—ฌ๋ถ€๋Š” kubectl ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

BTW: @SimenB ์—๊ฒŒ ๋…ธ๋“œ์— sshํ•˜๊ณ  Docker๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋ผ๋Š” ํžŒํŠธ๋ฅผ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ผ์‹œ์ ์œผ๋กœ ๋‚ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. Minikube๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋ฃจํŠธ๋กœ ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
minikube ssh "docker exec -it -u 0 <container-id> bash"
์–ด์ฉŒ๋ฉด ์ด๊ฒƒ์€ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถˆ์พŒ๊ฐ์„ ์ž๋™ํ™”ํ•˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์Šคํฌ๋ฆฝํŠธ. ๋…ธ๋“œ์— ๋Œ€ํ•œ SSH ์•ก์„ธ์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์šฉ๋ฒ•:

```./shell-into-pod-as-root.sh[๊ป๋ฐ๊ธฐ]
./shell-into-pod-as-root.sh ํฌ๋“œ ์ด๋ฆ„
./shell-into-pod-as-root.sh ํฌ๋“œ ์ด๋ฆ„ sh

Enjoy!

!/usr/bin/env bash

์„ค์ • -xe

POD=$(kubectl ์„ค๋ช… ํฌ๋“œ "$1")
NODE=$(์—์ฝ” "$POD" | grep -m1 ๋…ธ๋“œ | awk -F'/' '{ํ”„๋ฆฐํŠธ $2}')
CONTAINER=$(์—์ฝ” "$POD" | grep -m1 '์ปจํ…Œ์ด๋„ˆ ID' | awk -F 'docker://' '{์ธ์‡„ $2}')

CONTAINER_SHELL=${2:-bash}

์„ธํŠธ +e

ssh -t "$NODE" sudo docker exec --user 0 -it "$CONTAINER" "$CONTAINER_SHELL"

๋งŒ์•ฝ [ "$?" -gt 0 ]; ๊ทธ ๋‹ค์Œ์—
์„ค์ • +x
echo 'ํŒŒ๋“œ์— SSH๋กœ ์—ฐ๊ฒฐํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. "$PATH์—์„œ ์‹คํ–‰ ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ"๊ณผ ์œ ์‚ฌํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ๋‹ค์Œ์„ ์‹œ๋„ํ•˜์‹ญ์‹œ์˜ค.'
echo "$0 $1 ์‰ฌ"
ํŒŒ์ด
```

@Nowaker ์–ด๋–ป๊ฒŒ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๊นŒ?

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

์ด ๋ฌธ์ œ๋ฅผ ์ง€๊ธˆ ์ข…๋ฃŒํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•˜๋‹ค๋ฉด /close ๋กœ ์ข…๋ฃŒํ•˜์‹ญ์‹œ์˜ค.

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

/remove-lifecycle ๋ถ€์‹ค

๋‚˜๋Š” ๋˜ํ•œ ๊ทธ๋Ÿฌํ•œ -u ํ”Œ๋ž˜๊ทธ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. +1.

๊ทธ๋ƒฅ ์•„์ด๋””์–ด:

์˜ˆ๋ฅผ ๋“ค์–ด --conainer-type ์™€ ๊ฐ™์€ ๊ฒƒ์€ ์ง€์›๋˜๋Š” ๋ชจ๋“  ์ธ์ˆ˜๋ฅผ ๊ธฐ๋ณธ ์ปจํ…Œ์ด๋„ˆ ๊ตฌํ˜„์— ์ง์ ‘ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํฐ ์žฅ์ ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

kubectl exec --container-type=docker -it -u 0 NAME

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด kubectl์—์„œ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ ์ค‘ ์ผ๋ถ€๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ง€์›๋˜๋Š” ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ์œ ํ˜•์— ๋Œ€ํ•ด kubelet ๊ณ„์ธต์—์„œ ์ปจํ…Œ์ด๋„ˆ๊นŒ์ง€ ์ง€์›๋˜๋Š” ์ธ์ˆ˜๋ฅผ ๋งคํ•‘ํ•˜๊ณ  ์ถ”์ƒํ™”ํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋…ธ๋ ฅ์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์š”์•ฝํ•˜์ž๋ฉด --container-type ํ”Œ๋ž˜๊ทธ๊ฐ€ ์—†์œผ๋ฉด kubectl์—์„œ ์ถ”์ƒํ™”๋œ ์ธ์ˆ˜๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ธฐ๋ณธ ์ปจํ…Œ์ด๋„ˆ ์œ ํ˜•์€ ์™„์ „ํžˆ ํˆฌ๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ ํŠน์ • ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ์œ ํ˜•์— ๋ฐ”์ธ๋”ฉํ• ์ง€ ์—ฌ๋ถ€๋Š” kubectl ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

BTW: @SimenB ์—๊ฒŒ ๋…ธ๋“œ์— sshํ•˜๊ณ  Docker๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋ผ๋Š” ํžŒํŠธ๋ฅผ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ผ์‹œ์ ์œผ๋กœ ๋‚ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. Minikube๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋ฃจํŠธ๋กœ ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
minikube ssh "docker exec -it -u 0 <container-id> bash"
์–ด์ฉŒ๋ฉด ์ด๊ฒƒ์€ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ - docker exec๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ์†Œํ•œ ์ผ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ ์ผ๊ด€์„ฑ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์ค‘ ์‚ฌ์šฉ์ž ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋Š” ์‹ค์ œ๋กœ ์•ฝ๊ฐ„์˜ ๋†๋‹ด์ž…๋‹ˆ๋‹ค. VM์„ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์˜ ์œ ์‚ฐ์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ grafana๋กœ ์ด ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์ง€๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@bryanhuntesl ๋…ธ๋“œ์— ์ˆ˜๋™ ssh'ing์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋…ผ์˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค -- https://github.com/jordanwilson230/kubectl-plugins

์‚ฌ์šฉ์ž๊ฐ€ ๋…ธ๋“œ์— sshํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์‚ฌ์šฉ์ž์—๊ฒŒ ๋…ธ๋“œ์— ๋Œ€ํ•œ ssh ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•˜๊ณ  ๋„์ปค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋ณด์•ˆ ์œ„ํ—˜์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Docker๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋˜๋Š” k8s ๊ถŒํ•œ์— ๋Œ€ํ•ด ์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ docker exec ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด _any_ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ํฌ๋“œ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SSH๋Š” ์ ์ ˆํ•œ ์†”๋ฃจ์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค. IMHO.

์‚ฌ์šฉ์ž๊ฐ€ ๋…ธ๋“œ์— sshํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์‚ฌ์šฉ์ž์—๊ฒŒ ๋…ธ๋“œ์— ๋Œ€ํ•œ ssh ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•˜๊ณ  ๋„์ปค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋ณด์•ˆ ์œ„ํ—˜์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Docker๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋˜๋Š” k8s ๊ถŒํ•œ์— ๋Œ€ํ•ด ์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ docker exec ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด _any_ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ํฌ๋“œ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SSH๋Š” ์ ์ ˆํ•œ ์†”๋ฃจ์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค. IMHO.

๋‚˜๋Š” ๋‘ ๋ฒˆ์งธ๋กœ, ๋Œ€์—ญ ์™ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง์ ‘ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์–ป๋Š” ๊ฒƒ์€ ์ž ์žฌ์ ์ธ ๊ณต๊ฒฉ ์˜์—ญ์„ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค๋Š” ์˜๊ฒฌ์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ๋…ธ๋“œ์— sshํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์‚ฌ์šฉ์ž์—๊ฒŒ ๋…ธ๋“œ์— ๋Œ€ํ•œ ssh ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•˜๊ณ  ๋„์ปค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋ณด์•ˆ ์œ„ํ—˜์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Docker๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋˜๋Š” k8s ๊ถŒํ•œ์— ๋Œ€ํ•ด ์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ docker exec ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด _any_ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ํฌ๋“œ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SSH๋Š” ์ ์ ˆํ•œ ์†”๋ฃจ์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค. IMHO.

SSH @gjcarneiro๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์‚ฌ์šฉ์ž๋Š” ๋จผ์ € Compute Metadata์— ๊ณต๊ฐœ SSH ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ๋…ธ๋“œ(GCP์˜ ๊ฒฝ์šฐ) @bryanhuntesl์— ๋Œ€ํ•œ SSH ์•ก์„ธ์Šค๊ฐ€ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.

@liggitt ์ด ์ฃผ์ œ๊ฐ€ ์‹œ์ž‘๋œ์ง€ 3๋…„์ด ์ง€๋‚ฌ๋Š”๋ฐ ๊ฒฐ๋ก ์€?

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

๋„์ปค ํŒŒ์ผ:

USER root
RUN echo "su -s /bin/bash www-data" >> /root/.bashrc
# this exit statement here is needed in order to exit from the new shell directly or else you need to type exit twice
RUN echo "exit" >> /root/.bashrc
# /var/www is www-data's home directory
COPY motd.sh /var/www/.bashrc

motd.sh:

RED='\033[0;31m'
YELLOW='\033[0;33m'

echo -e "${RED}"
echo "##################################################################"
echo "#        You've been automatically logged in as www-data.        #"
echo "##################################################################"
echo -e "${YELLOW} "
echo "If you want to login as root instead:"
echo -e "$(if [ "$KUBERNETES_PORT" ]; then echo 'kubectl'; else echo 'docker'; fi) exec -ti $(hostname) -- bash --noprofile -norc"

TEXT_RESET='\033[0m'

echo -e "${TEXT_RESET} "

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

์ด ๋ฌธ์ œ๋ฅผ ์ง€๊ธˆ ์ข…๋ฃŒํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•˜๋‹ค๋ฉด /close ๋กœ ์ข…๋ฃŒํ•˜์‹ญ์‹œ์˜ค.

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

/remove-lifecycle ๋ถ€์‹ค

[exec-as] kubectl ํ”Œ๋Ÿฌ๊ทธ์ธ ์‚ฌ์šฉ:

kubectl krew install exec-as

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

์ด๋ฅผ ์œ„ํ•ด KEP๋ฅผ ๊ฒ€ํ† ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์„ ๋“œ๋ฆฌ๊ณ  ์‹ถ์ง€๋งŒ ํ™•์‹คํžˆ ๋ฌธ์ œ๊ฐ€ ์žˆ๊ณ  ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@miracle2k - su -m -l u22055 ํ•ด๋ณด์…จ๋‚˜์š”? -m ๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๋ณด์กดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@miracle2k (trying to exec as root user) ์‹œ๋„ํ–ˆ์ง€๋งŒ No passwd entry for user '0' ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

$ su -m -l 0
No passwd entry for user '0'

์—ฌ๋ณด์„ธ์š”. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด "kpexec" CLI๋ฅผ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.
ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ์„ธ์š”.

ํฌ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋…ธ๋“œ์—์„œ:

docker exec -u 0 -it \
    `kubectl -n NAMESPACE get pod \
          -l label=value \
          -o jsonpath='{range .items[*].status.containerStatuses[*]}{.containerID}{"\n"}{end}' | cut -d/ -f3` \
sh

@cristichiru ๋‚ด๊ฐ€ ์šด์˜ํ•œ ๋Œ€๋ถ€๋ถ„์˜ ํด๋Ÿฌ์Šคํ„ฐ์—๋Š” ๊ธฐ๋ณธ ๋…ธ๋“œ์— ๋Œ€ํ•œ ์ง์ ‘ ์…ธ ์•ก์„ธ์Šค๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ข…์ข… ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ kubectl ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ๊ฐ™์€ ์—ฌ๊ธฐ์— ์ œ์‹œ๋œ ๋‹ค๋ฅธ ์˜ต์…˜์ด ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„์ปค ๋ฐ๋ชฌ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋„ ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

+1

KEP ํ…œํ”Œ๋ฆฟ์€ https://github.com/kubernetes/enhancements/tree/master/keps/NNNN-kep-template ์— ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜๋‚˜๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์ž‘์—…์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ์„ ๊ฑฐ๋ผ ์ƒ๊ฐํ–ˆ๋Š”๋ฐ... ๋„ค ์ €๋Š” ์ด ๊ธ€์„ ์“ฐ๋Š” ์‚ฌ๋žŒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ…œํ”Œ๋ฆฟ์€ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ํ•ญ๋ชฉ 1์—์„œ ์ €๋ฅผ ์žƒ์–ด๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค **Pick a hosting SIG.** ํ”„๋กœ์„ธ์Šค์— ๋” ์ต์ˆ™ํ•œ ์‚ฌ๋žŒ์€ ์›ํ•ฉ๋‹ˆ๋‹ค ์ดˆ์•ˆ์„ ์‹œ์ž‘ํ•˜๋ ค๋ฉด? ๋‚˜๋Š” ๋‹จ์ง€ ํ™œ์„ฑ Kubernetes ์‚ฌ์šฉ์ž๋กœ์„œ ์ œ์•ˆ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด ๐Ÿ‘๋ฅผ ๋ถ™์ผ ์ž๋ฆฌ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

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

๋‚˜๋Š” Kubernetes๊ฐ€ PROCESS ๋•Œ๋ฌธ์— ํ•ฉ๋ฆฌ์ ์ธ ์‹œ๊ฐ„ ์•ˆ์— ์•„๋ฌด๊ฒƒ๋„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์—†๋Š” ์ƒˆ๋กœ์šด OpenStack์ด ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๋‚๋‹ˆ๋‹ค.

@VikParuchuri ์˜ ์›๋ž˜ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์ปจํ…Œ์ด๋„ˆ ์ž์ฒด๊ฐ€ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰ ์ค‘์ด๋”๋ผ๋„ ๋ฃจํŠธ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋””๋ฒ„๊ทธ/๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ข‹์€ ์‚ฌ์šฉ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค. ํ•ด๊ฒฐ๋˜๋ฉด ๋ฃจํŠธ๊ฐ€ ์•„๋‹Œ ์‚ฌ์šฉ์ž๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๐ŸŽ‰

docker exec ์— ๋Œ€ํ•œ KEP๋ฅผ ์ค€๋น„ํ•˜๊ธฐ ์ „์— k8s ์ž„์‹œ ๋””๋ฒ„๊ทธ ์ปจํ…Œ์ด๋„ˆ ๊ฐ€ ์ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๋Š”์ง€ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

docker exec --user ๋Š” ํ•ด๋‹น ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ผ ๋ฟ์ด๋ฉฐ ์‚ฌ์šฉ ์ค‘์ธ ๋„์ปค ๋Ÿฐํƒ€์ž„์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. k8s๊ฐ€ containerd ๋กœ ์ด๋™ํ•จ์— ๋”ฐ๋ผ dockerd ๋ฐ ์นœ๊ตฌ๋Š” ์„ ํƒ ์‚ฌํ•ญ์ด๊ฑฐ๋‚˜ ๋” ์ด์ƒ ์„ค์น˜๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ๋ฏธ๋ž˜ ์ง€ํ–ฅ์ ์ธ ์˜ต์…˜์ด ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

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

์˜ˆ๋ฅผ ๋“ค์–ด busybox ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฃจํŠธ๋กœ ๋””๋ฒ„๊ทธํ•ฉ๋‹ˆ๋‹ค.

kubectl alpha debug -it ephemeral-demo --image=busybox --target=ephemeral-demo

๋‚˜๋Š” ์ด๊ฒƒ์ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ฒฉ๋ฆฌ๋œ ํ”„๋กœ์„ธ์Šค๋กœ ์ทจ๊ธ‰ํ•˜๊ณ , ์…ธ์— ๋“ค์–ด๊ฐ€๋Š” ๋ฏธ๋‹ˆ VM์ด ์•„๋‹ˆ๋ผ ๋””๋ฒ„๊น…์„ ์œ„ํ•ด '์—ฐ๊ฒฐ'ํ•œ๋‹ค๋Š” ์ ์—์„œ ํ‹€๋ฆผ์—†์ด ๋” ๋‚˜์€ ๋ชจ๋ธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ ์€ ์™ธ๋ถ€ ๋งˆ์šดํŠธ ๋˜๋Š” '๋นˆ' ๋งˆ์šดํŠธ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ๋Œ€์ƒ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋Œ€์ƒ๊ณผ ๊ณต์œ ํ•˜๋ฏ€๋กœ /proc/$pid/root ๋ฅผ ํ†ตํ•ด ๋Œ€์ƒ ์ปจํ…Œ์ด๋„ˆ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์•ก์„ธ์Šคํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž„์‹œ ๋””๋ฒ„๊ทธ ์ปจํ…Œ์ด๋„ˆ๋Š” ์ด๋ฏธ PROCESS :-)๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ปจํ…Œ์ด๋„ˆ๋Š” ~1.16 ๋ฐ 1.18 kubectl ์— alpha debug ๋ช…๋ น์ด ํฌํ•จ๋œ ์•ŒํŒŒ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ์ •๋ณด:

์ฐธ์กฐ:

์‚ฌ๋ ค๊นŠ์€ ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @whereisaaron :) ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋ฌผ๊ฑด์„ ๊ฝค ์ž˜ ํฌ์ฐฉํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ํ•˜๋‚˜๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์ž‘์—…์„ ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๊ณ ... ์˜ˆ, ๋‚˜๋Š” ์ด๊ฒƒ์„ ์ž‘์„ฑํ•˜๋Š” ์‚ฌ๋žŒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ…œํ”Œ๋ฆฟ์€ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ํ•ญ๋ชฉ 1์—์„œ ์ €๋ฅผ ์žƒ์–ด๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค . ํ˜ธ์ŠคํŒ… SIG๋ฅผ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค. ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด ๋” ์ž˜ ์•Œ๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์ดˆ์•ˆ์„ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๋‹จ์ง€ ํ™œ์„ฑ Kubernetes ์‚ฌ์šฉ์ž๋กœ์„œ ์ œ์•ˆ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด ๐Ÿ‘๋ฅผ ๋ถ™์ผ ์ž๋ฆฌ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

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

์šฐ๋ฆฌ๋Š” ์ฝ”๋“œ ๋ฒ ์ด์Šค์˜ ์ผ๋ถ€๋ฅผ SIG์— ์œ„์ž„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•˜๋‚˜ ์ด์ƒ์˜ SIG๊ฐ€ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ํ•ฉ์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ KEP๋ฅผ ํ†ตํ•ด์„œ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ์ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์— ๋”ฐ๋ผ API ๊ฒ€ํ† ๋ฅผ ๊ฑฐ์ณ ํ™•์žฅ์„ฑ ๋ฌธ์ œ ๋“ฑ์„ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ˆ˜์š”๊ฐ€ ์ถฉ๋ถ„ํ•  ๊ฒฝ์šฐ ์ผ๋ฐ˜์ ์œผ๋กœ KEP ํ”„๋กœ์„ธ์Šค์— ๋” ์ต์ˆ™ํ•œ ์‚ฌ๋žŒ์ด ์ด๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์ง„ํ–‰ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ๊ฒ ๋‹ค๊ณ  ์ œ์•ˆํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ์ด๋ฅผ ์ฃผ๋„ํ•  ์‚ฌ๋žŒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ๊ฒฝ์šฐ๋“  ๊ธฐ๋Šฅ์„ ๋ณ‘ํ•ฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋Š” ์ด์œ ์— ๋Œ€ํ•œ ์ตœ์†Œํ•œ์˜ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. :+1: ์งˆ๋ฌธ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์–ธ์ œ๋“ ์ง€ ์ง์ ‘ ๋ฌธ์˜ํ•˜์„ธ์š”.

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

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

๋‹จ์ ์€ ๋Œ€์ƒ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

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

์ปจํ…Œ์ด๋„ˆ ํŒŒ์ผ ์‹œ์Šคํ…œ์€ /proc/$pid/root ๋งํฌ๋ฅผ ํ†ตํ•ด ํฌ๋“œ์˜ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://kubernetes.io/docs/tasks/configure-pod-container/share-process-namespace/#understanding -process-namespace-sharing

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

์ด ๋ฌธ์ œ๋ฅผ ์ง€๊ธˆ ์ข…๋ฃŒํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•˜๋‹ค๋ฉด /close ๋กœ ์ข…๋ฃŒํ•˜์‹ญ์‹œ์˜ค.

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

/remove-lifecycle ๋ถ€์‹ค

kubectl ์•ŒํŒŒ ๋””๋ฒ„๊ทธ -it ephemeral-demo --image=busybox --target=ephemeral-demo

error: ephemeral containers are disabled for this cluster

@whereisaaron ๋Œ€๋ถ€๋ถ„์˜ ํด๋ผ์šฐ๋“œ ์ œ๊ณต์—…์ฒด๊ฐ€ ์ด๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์œผ๋ฉฐ ์˜จํ”„๋ ˆ๋ฏธ์Šค์˜ ๊ฒฝ์šฐ ๋…ธ๋“œ๋กœ ์ด๋™ํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ์— docker exec ๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ ์œ ์šฉ์„ฑ์€ ์ƒ๋‹นํžˆ ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ /proc/$pid/root ๋ฅผ ํ†ตํ•œ ์•ก์„ธ์Šค๋Š” ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. "์‚ฌ์ด๋“œ ์œˆ๋„์šฐ"๊ฐ€ ์•„๋‹Œ ์ง์ ‘ ์•ก์„ธ์Šค๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด apt/apk _in continer_ ์™€ ๊ฐ™์€ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๋ฃจํŠธ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ์›ํ•˜๋Š” ์œ„์น˜์— ์—†์„ ๋•Œ ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ณต์‹ helm ์ฐจํŠธ(jenkins)์—์„œ ๋ฐฐํฌํ•œ ๊ณต์‹ ์ด๋ฏธ์ง€์— ์ผ๋ถ€ ๋””๋ ‰ํ† ๋ฆฌ, ๋งํฌ ๋ฐ ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

exec-as ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

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

์•ŒํŒŒ๊ฐ€ ๋˜๋Š” ๊ฒƒ ์™ธ์—๋„ ์ž„์‹œ ์ปจํ…Œ์ด๋„ˆ๋Š” ๋‹จ์ˆœํžˆ kubectl exec --user ๋ณด๋‹ค ์‚ฌ์šฉํ•˜๊ธฐ๊ฐ€ ํ›จ์”ฌ ๋” ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ๋˜ ๋‹ค๋ฅธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์ปจํ…Œ์ด๋„ˆ์—์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด NextCloud์˜ occ ์œ ์ง€ ๊ด€๋ฆฌ ์Šคํฌ๋ฆฝํŠธ๋Š” www-data๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€์— sudo ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์€ ์—†์œผ๋ฉฐ ๋ฌธ์„œ์—์„œ๋Š” Docker ํ™˜๊ฒฝ์—์„œ docker exec -u 33 ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์„ ์‹คํ–‰ํ•˜์—ฌ nextcloud์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

su -s /bin/bash www-data

๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์ด์ƒ์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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