• toc {:toc}

Kubernetes Objects

  • Objects : Pods, ReplicationController, DeploymentController, Volumes, StatefulSetsโ€ฆ

  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ Objects๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ Objects๋ฅผ ํ‘œํ˜„ํ•œ ๊ฒƒ๊ณผ ์ƒ๋‹นํžˆ ์œ ์‚ฌํ•˜๋‹ค.

    • ํŒŸ ํด๋ž˜์Šค๋ฅผ ํŒŸ ๊ฐ์ฒด๋กœ ๋„์šฐ๊ฑฐ๋‚˜ ReplicaSet Controller ๋˜ํ•œ ํด๋ž˜์Šค๋กœ ์ง€์ •ํ•ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
    • ํด๋ž˜์Šค์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ์ด kind ํ˜น์€ resource type์ด๋ผ ๋งํ•œ๋‹ค. ์ด๋ฅผ ์‹คํ–‰์‹œํ‚จ ๊ฒƒ์„ ๊ฐ์ฒด๋ผ๊ณ  ํ•œ๋‹ค.
  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ฃผ๋กœ RESTful ์šฉ์–ด๋ฅผ ํ†ตํ•ด์„œ API ๊ฐœ๋…์„ ํ‘œํ˜„์„ ์‚ฌ์šฉํ•œ๋‹ค.

    • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—๊ฒŒ RESTful API๋ฅผ ํ†ตํ•ด์„œ ์š”์ฒญํ•˜๊ณ  ์‘๋‹ต์„ ๋ฐ›๋Š”๋‹ค.
  • ๋ฆฌ์†Œ์Šค ํƒ€์ž… : URL์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ด๋ฆ„(pods, namespaces, services)

  • ๋ฆฌ์†Œ์Šค ํƒ€์ž…์˜ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค โ†’ ๋ฆฌ์†Œ์Šค ํ˜น์€ ๊ฐ์ฒด

  • ๋ชจ๋“  ๋ฆฌ์†Œ์Šค ํƒ€์ž…๋“ค์€ kind๋ผ ๋ถ€๋ฅด๋Š” ๊ตฌ์ฒด์ ์ธ ํ‘œํ˜„์„ ๊ฐ–๋Š”๋‹ค.

  • ๋ฆฌ์†Œ์Šค ์ธ์Šคํ„ด์Šค๋“ค์˜ ๋ชจ์Œ์„ collection์ด๋ผ ํ•œ๋‹ค.

  • ๋ช‡๋ช‡ ๋ฆฌ์†Œ์Šค ํƒ€์ž„๋“ค์„ ์œ„ํ•ด API๋Š” ๋ฆฌ์†Œ์Šค ์•„๋ž˜ URI ๊ฒฝ๋กœ๋“ค๋กœ ํ‘œํ˜„๋˜๋Š” ํ•˜๋‚˜ ํ˜น์€ ๋” ๋งŽ์€ ํ•˜์œ„ ์ž์›๋“ค์„ ํฌํ•จํ•œ๋‹ค.

  • Object configuration

    • Spec (e.g. yaml ํŒŒ์ผ ์ „๋‹ฌ)
      • ๊ฐ์ฒด์— ๋Œ€ํ•œ desired state๋ฅผ ๋ฌ˜์‚ฌํ•œ๋‹ค.
      • ๊ฐ์ฒด๊ฐ€ ๊ฐ–๊ธฐ๋ฅผ ์›ํ•˜๋Š” ํŠน์ง•์„ ๋งํ•œ๋‹ค.
    • Status (e.g. get ๋ช…๋ น)
      • ๊ฐ์ฒด์˜ actual state๋ฅผ ๋ฌ˜์‚ฌํ•œ๋‹ค.
      • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์‹œ์Šคํ…œ์— ์˜ํ•ด ๊ณต๊ธ‰๋˜๊ณ  ์—…๋ฐ์ดํŠธ๋œ ์ƒํƒœ์ด๋‹ค.
      • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ปจํŠธ๋กค ๊ณ„ํš์ด ๋™์ ์œผ๋กœ ๊ฐ์ฒด์˜ actual state๊ฐ€ desired state์™€ ์ผ์น˜ํ•˜๋„๋ก ๊ด€๋ฆฌํ•œ๋‹ค.

REF: Resource in RESTful

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

Record of Intent

  • ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•จ์œผ๋กœ์จ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์‹œ์Šคํ…œ์— ํด๋Ÿฌ์Šคํ„ฐ์˜ desired state, ์˜๋„๋ฅผ ๋ฐํžˆ๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.
  • ๋ชจ๋“  ๊ฐ์ฒด๋“ค์€ ๊ณตํ†ต์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–๋Š”๋‹ค.
  • ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋Š” ํด๋ผ์ด์–ธํŠธ๋“ค์ด ๋งŒ๋“ค๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜ค๋Š” ํŠน์ • ํ–‰๋™์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์—ฌ๋Ÿฌ ๋ฆฌ์†Œ์Šค๋“ค์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

Kubernetes API

  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ์ž‘๋™ โ†’ API๋กœ ๊ตฌ์„ฑํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.
  • Client API : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์›ํ•˜๋Š” ๊ฐ์ฒด์˜ ์ƒ์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ ๋“ฑ์˜ ๋™์ž‘์„ ํŠน์ • ๋ช…๋ น์„ ํ†ตํ•ด ๋™์ž‘์‹œํ‚ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
    • ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋™์ž‘์„ ์œ„ํ•ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ž‘๋™์„ ์‹œํ‚ค๋Š” ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์งœ๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ์ด๋ฏธ ์งœ์—ฌ์ง„ ์ฝ”๋“œ๋ฅผ API ํ˜ธ์ถœ์„ ํ†ตํ•ด์„œ ๋™์ž‘์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ํŽธ๋ฆฌํ•˜๋‹ค.
    • ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

Images and Registries

Image

  • ๋„์ปค์˜ ์ด๋ฏธ์ง€์™€ ๋™์ผํ•˜๋‹ค.

  • ์ด๋ฏธ์ง€๋ฅผ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํŒŸ์— ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— pushํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

  • ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฏธ์ง€ ์†์„ฑ์€ ๊ฐœ์ธ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์™€ ํƒœ๊ทธ๋ฅผ ํฌํ•จํ•œ ๋„์ปค ์ปค๋ฉ˜๋“œ์™€ ๊ฐ™์€ ๋ฌธ๋ฒ•์„ ์ง€์›ํ•œ๋‹ค.

  • imagePullPolicy

    • IfNotPresent : ์ด๋ฏธ์ง€๊ฐ€ Local, ํ•ด๋‹น ๋…ธ๋“œ์— ์žˆ์ง€ ์•Š๋‹ค๋ฉด, ์ด๋ฏธ์ง€๋ฅผ pullํ•˜์—ฌ ์‹คํ–‰ํ•œ๋‹ค.
    • Always : ์ด๋ฏธ์ง€๋ฅผ ํŒŸ์ด ์‹œ์ž‘๋˜๋Š” ๋•Œ์— ํ•ญ์ƒ pullํ•œ๋‹ค. (์ˆ˜์‹œ๋กœ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜๊ณ  ์ตœ์‹  ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ)
    • Never : Remote์˜ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  Local์— ์žˆ๋Š” ๊ฒƒ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค.(๋ณด์•ˆ ์ƒ์˜ ๊ฒฝ์šฐ)
  • ์™œ latest ํƒœ๊ทธ๋ฅผ ํ”ผํ•ด์•ผ ํ•˜๋Š”๊ฐ€?

    • ์ด๋ฏธ์ง€์˜ ์–ด๋–ค ๋ฒ„์ „์ด ์‹คํ–‰ ์ค‘ ์ธ์ง€๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ต๋‹ค.
    • ์ ์ ˆํ•˜๊ฒŒ ๋กค๋ฐฑํ•˜๊ธฐ ์–ด๋ ต๋‹ค.