CKA-1์ผ์ฐจ

YeJi Kimยท2023๋…„ 2์›” 13์ผ
0

CKA

๋ชฉ๋ก ๋ณด๊ธฐ
1/15

๐Ÿ“ CKA 1์ผ์ฐจ
๐Ÿ“ Udemy-Certified Kubernetes Administrator (CKA) with Practice Tests 1-17, 273




01. Course Introduction

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ํด๋ผ์šฐ๋“œ ์ปดํ“จํ„ฐ ๋ถ„์•ผ์—์„œ ์ตœ๊ณ  ํŠธ๋ Œ๋“œ ๊ธฐ์ˆ  ์ค‘ ํ•˜๋‚˜์ด๋‹ค.
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ตฌ์ง๋ฅ ์€ 1๋…„์ „๋ณด๋‹ค 173% ์ด์ƒ ๋น ๋ฅด๊ฒŒ ์ฆ๊ฐ€ํ–ˆ๋‹ค.

์‹œํ—˜์€ ์‹ค์šฉ์ ์ด๊ณ  ์‹ค๋ฌด์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์ˆ ์„ ์ž˜ ์•Œ์•„์•ผํ•˜๊ณ  ์ถฉ๋ถ„ํžˆ ์—ฐ์Šตํ•ด์•ผ ์„ฑ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.




02. Certification

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




10. ํด๋Ÿฌ์Šคํ„ฐ ์•„ํ‚คํ…์ฒ˜

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

  • Kubernetes Architecture
  • ETCD for beginners
  • ETCD in Kubernetes
  • Kube-API Server
  • Controller Managers
  • Kube Scheduler
  • Kubelet
  • Kube Proxy

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

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

ETCD๋Š” ํ‚ค ๊ฐ’ ํ˜•์‹์œผ๋กœ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋‹ค.

์Šค์ผ€์ฅด๋Ÿฌ๋Š” ์ปจํ…Œ์ด๋„ˆ ๋ฆฌ์†Œ์Šค ์š”๊ตฌ์‚ฌํ•ญ์ด๋‚˜ ์›Œ์ปค ๋…ธ๋“œ ์šฉ๋Ÿ‰ ํ˜น์€ ๋‹ค๋ฅธ ์ •์ฑ…์ด๋‚˜ ์ œ์•ฝ ์กฐ๊ฑด๋“ค ๋“ฑ์— ๊ทผ๊ฑฐํ•ด์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•œ ์˜ฌ๋ฐ”๋ฅธ ๋…ธ๋“œ๋ฅผ ์‹๋ณ„ํ•œ๋‹ค.

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

Kube API ์„œ๋ฒ„๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ ๋ชจ๋“  ์ž‘์—…์„ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํ•œ๋‹ค.
ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๋‹ค๋ฅธ ๋…ธ๋“œ์™€ ํ†ต์‹ ํ•œ๋‹ค.

๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์— ์ „์ฒด ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ํ˜•์„ฑํ•˜๋Š” ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ์š”์†Œ๋Š” ์ปจํ…Œ์ด๋„ˆ ํ˜•ํƒœ๋กœ ํ˜ธ์ŠคํŠธ๋  ์ˆ˜ ์žˆ๋‹ค.
DNS ์„œ๋น„์Šค ๋„คํŠธ์›Œํ‚น ์†”๋ฃจ์…˜์€ ์ปจํ…Œ์ด๋„ˆ ํ˜•ํƒœ๋กœ ๋ฐฐํฌ๋  ์ˆ˜ ์žˆ๋‹ค.
๊ทธ๋ž˜์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ๋Ÿฐํƒ€์ž„ ์—”์ง„์ธ Docker๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” containerd, cri-o, runc ๋“ฑ ๋‹ค์–‘ํ•œ ๋Ÿฐํƒ€์ž… ์—”์ง„์„ ์ง€์›ํ•œ๋‹ค.
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ Dockershim๊ฐ€ ์‚ฌ์šฉ ์ค‘์ง€ ๋˜๋ฉด์„œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” 1.20๋ถ€ํ„ฐ ๋„์ปค๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„๊ณผ ํ†ต์‹ ํ•  ๋•Œ CRI๋ผ๋Š” ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค API ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— cri-o ์™€ containerd๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

kubelet์€ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ฐ ๋…ธ๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” ์—์ด์ „ํŠธ์ด๋‹ค. KubeAPI ์„œ๋ฒ„์˜ ์ง€์‹œ๋ฅผ ๋“ฃ๊ณ  ํ•„์š”ํ•œ๋Œ€๋กœ ๋…ธ๋“œ์—์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฐฐํฌํ•˜๊ฑฐ๋‚˜ ํŒŒ๊ดดํ•œ๋‹ค. KubeAPI ์„œ๋ฒ„๋Š” ๋…ธ๋“œ์™€ ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ๊ธฐ์ ์œผ๋กœ Kubelet์œผ๋กœ๋ถ€ํ„ฐ ์ƒํƒœ ๋ณด๊ณ ์„œ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

Kube-proxy๋Š” ์ž‘์—…์ž ๋…ธ๋“œ ๊ฐ„์˜ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. ๋˜ํ•œ ์‹คํ–‰๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์„œ๋กœ ๋‹ฟ์„ ์ˆ˜ ์žˆ๋„๋ก ์ž‘์—…์ž ๋…ธ๋“œ์— ํ•„์š”ํ•œ ๊ทœ์น™์ด ์‹คํ–‰๋˜๋„๋ก ํ•œ๋‹ค.

์š”์•ฝํ•˜์ž๋ฉด ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์™€ ์ž‘์—…์ž ๋…ธ๋“œ๊ฐ€ ์žˆ๋‹ค.
๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์—๋Š” ETCD Cluster๊ฐ€ ์žˆ์–ด์„œ ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค.
kube-scheduler๋Š” ๋…ธ๋“œ์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ์ปจํ…Œ์ด๋„ˆ์˜ ์Šค์ผ€์ค„์„ ์งœ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
๋…ธ๋“œ ์ปจํŠธ๋กค๋Ÿฌ, ๋ณต์ œ ์ปจํŠธ๋กค๋Ÿฌ ๋“ฑ๋“ฑ์ด ์กด์žฌํ•ด์„œ ๋‹ค์–‘ํ•œ ์˜์—ญ์„ ๊ฐ์ž ๊ด€๋ฆฌํ•œ๋‹ค.
Kube API ์„œ๋ฒ„๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์˜ ๋ชจ๋“  ์ž‘์—…์„ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ํ•œ๋‹ค.

์ž‘์—…์ž ๋…ธ๋“œ์—๋Š” kubelet์ด ์žˆ๋Š”๋ฐ Kube API ์„œ๋ฒ„์˜ ์ง€์‹œ๋ฅผ ๋“ฃ๊ณ  ์ปจํ…Œ์ด๋„ˆ์™€ Kube-proxy๋ฅผ ๊ด€๋ฆฌํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€์˜ ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.




12. ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ETCD

  • What is ETCD?

    ETCD is distributed reliable key-value store that is Simple, Secure & Fast.

    ETCD๋Š” ๊ฐ„๋‹จํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ณ  ๋น ๋ฅธ, ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ํ‚ค-๊ฐ’ ๋ถ„์‚ฐ ์ €์žฅ์†Œ์ด๋‹ค.

  • What is a Key-Value Store?
    key-value ์ €์žฅ์†Œ๋Š” ๋ฌธ์„œ๋‚˜ ํŽ˜์ด์ง€์˜ ํ˜•ํƒœ๋กœ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค. ๊ฐ ๊ฐœ์ธ์€ ๋ฌธ์„œ๋ฅผ ํ•˜๋‚˜ ๊ฐ–๊ณ  ๊ทธ ๊ฐœ์ธ์— ๊ด€ํ•œ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ํ•ด๋‹น ํŒŒ์ผ์— ์ €์žฅ๋œ๋‹ค. ์ด๋Ÿฐ ํŒŒ์ผ์€ ์–ด๋–ค ํ˜•์‹์ด๋‚˜ ๊ตฌ์กฐ๋กœ๋“  ๋  ์ˆ˜ ์žˆ๊ณ  ํ•œ ํŒŒ์ผ์˜ ๋ณ€ํ™”๋Š” ๋‹ค๋ฅธ ํŒŒ์ผ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

  • How to get started quickly?
    Github์—์„œ ์šด์˜ ์ฒด์ œ์— ๋Œ€ํ•œ ๊ด€๋ จ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ด ํŽ˜์ด์ง€๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ์ถ”์ถœํ•œ ๋‹ค์Œ ETCD ์‹คํ–‰ ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๋ฉด ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ํฌํŠธ 2379๋ฅผ ๋“ฃ๋Š” ETCD ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘ํ•œ๋‹ค.
    ETCD์™€ ํ•จ๊ป˜ ์˜ค๋Š” ๊ธฐ๋ณธ ํฌ๋ผ์ด์–ธํŠธ๋Š” ETCD ์ปจํŠธ๋กค ํด๋ผ์ด์–ธํŠธ์ด๋‹ค. ETCD ์ œ์–ด ํด๋ผ์ด์–ธํŠธ๋Š” ETCD์˜ ๋ช…๋ น์ค„ ํด๋ผ์ด์–ธํŠธ์ด๋‹ค. ํ‚ค ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ํšŒ์ˆ˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • How to operate ETCD?

     // version 2
     etcdctl set key1 value1		// key1-value1 ์ €์žฅ
     etcdctl get key1			// key1๋ฅผ ๊ฐ–๋Š” value1 ์กฐํšŒ
     
     // version 3
     export ETCDCTL_API=3		// API version์„ 3์œผ๋กœ ์„ค์ •
     etcdctl version				// version ํ™•์ธ
     etcdctl put key1 value1		// key1-value1 ์ €์žฅ
     etcdctl get key1			// key1๋ฅผ ๊ฐ–๋Š” value1 ์กฐํšŒ

    ETCD ๋ฒ„์ „2๋Š” 2015๋…„ 2์›”์— ์ถœ์‹œ๋˜์—ˆ๋Š”๋ฐ 2017๋…„ 1์›”์— 3๋ฒˆ์งธ ๋ฒ„์ „์ด ์ถœ์‹œ๋˜์—ˆ๋‹ค. ๋ฒ„์ „2๋Š” ๋งŽ์ด ์‚ฌ์šฉ๋๊ณ  ๋ฒ„์ „3์—๋Š” ๋งŽ์€ ๋ณ€ํ™”๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ฆ‰, etcdctl ๋ช…๋ น์–ด๋„ ๋ฐ”๋€Œ์—ˆ๋‹ค.


Later:

  • What is a distributed system?
  • How ETCD operates?
  • RAFT Protocol
  • Best practices on number of nodes




13. kubernetes์˜ ETCD

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ETCD์˜ ์—ญํ• ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.
ETCD ์ €์žฅ์†Œ๋Š” ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ์ •๋ณด(Nodes, PODs, Configs, Secrets, Accounts, Roles, Bindings, Others)๋ฅผ ์ €์žฅํ•œ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ์— ๋ณ€ํ™”๋ฅผ ์ค„ ๋•Œ๋งˆ๋‹ค ETCD์— ๋ฐ˜์˜๋˜๋ฉฐ ETCD์— ๋ฐ˜์˜๋˜์–ด์•ผ ๋ณ€ํ™”๊ฐ€ ์™„๋ฃŒ๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฐฐํฌ์—๋Š” ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์ด ์žˆ๋‹ค.
ํ•˜๋‚˜๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์ด๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” kubeadm ๋„๊ตฌ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋‘ ๋ฐฉ๋ฒ•์˜ ์ฐจ์ด์ ์„ ์•„๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์Šคํฌ๋ž˜์น˜์—์„œ ์…‹์—…ํ•˜๋Š” ๊ฒฝ์šฐ, ๊ธฐํƒ€ ๋“ฑ๋“ฑ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์ง์ ‘ ๋‹ค์šด๋กœ๋“œํ•ด์„œ ๋ฐฐํฌํ•œ๋‹ค.
๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์— ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์„œ๋น„์Šค๋กœ์„œ ๊ตฌ์„ฑํ•œ๋‹ค.
์„œ๋น„์Šค์—๋Š” ๋งŽ์€ ์„ ํƒ์ง€๊ฐ€ ์žˆ๋‹ค. ๊ทธ ์ค‘ ์ƒ๋‹น์ˆ˜๊ฐ€ ์ธ์ฆ์„œ์™€ ๊ด€๋ จ ์žˆ๋‹ค.
--advertise-client-urls๋Š” ETCD๊ฐ€ ๋“ฃ๋Š” ์ฃผ์†Œ์ด๋‹ค.

kubeadm์„ ์ด์šฉํ•ด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๊ฒฝ์šฐ, kubeadm์ด ๊ทธ ์™ธ ๊ธฐํƒ€ ์„œ๋ฒ„๋ฅผ ๋ฐฐํฌํ•œ๋‹ค.
kube ์‹œ์Šคํ…œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์žˆ๋Š” ํŒŒ๋“œ๋กœ etcd-master๋ฅผ ๋ฐฐํฌํ•œ๋‹ค.
kubectl exec etcd-master -n kube-system etcdctl get key1 ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ etcd ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ํŠน์ • ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.
๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋กœ ๊ทธ ์•„๋ž˜์— ๋‹ค์–‘ํ•œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ตฌ์„ฑ์ฒด(minions, pods, replicasets, deployments, roles, secrets ๋“ฑ)๊ฐ€ ์žˆ๋‹ค.

๊ณ ๊ฐ€์šฉ์„ฑ ํ™˜๊ฒฝ์—์„œ๋Š” ํด๋Ÿฌ์Šคํ„ฐ์— ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์ด๋‹ค.
๊ทธ๋Ÿผ ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ ์ „์ฒด์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ETCD ์ธ์Šคํ„ด์Šค๊ฐ€ ํผ์ง€๊ฒŒ ๋œ๋‹ค.
์ด ๊ฒฝ์šฐ, ETCD ์ธ์Šคํ„ด์Šค๋“ค์ด ์„œ๋กœ์— ๋Œ€ํ•ด ์•Œ๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค.
๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” ETCD ์„œ๋น„์Šค ๊ตฌ์„ฑ์— ์˜ฌ๋ฐ”๋ฅธ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค.




14. ETCD ๋ช…๋ น

ETCDCTL์€ ETCD์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” CLI ๋„๊ตฌ์ด๋‹ค.
ETCDCTL์€ 2๊ฐœ์˜ API ๋ฒ„์ „(๋ฒ„์ „2, ๋ฒ„์ „3)์„ ์‚ฌ์šฉํ•˜์—ฌ ETCD ์„œ๋ฒ„์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฒ„์ „2๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •๋˜์–ด ์žˆ๋‹ค.
๊ฐ ๋ฒ„์ „์—๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋ช…๋ น ์ง‘ํ•ฉ์ด ์žˆ๋‹ค.

API ๋ฒ„์ „์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” export ETCDCTL_API=3์™€ ๊ฐ™์ด ํ™˜๊ฒฝ๋ณ€์ˆ˜ ETCDCTL_API๋ฅผ ๋ช…์‹œํ•˜๋ฉด ๋œ๋‹ค. API ๋ฒ„์ „์ด ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ฒ„์ „2๋กœ ์„ค์ •๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•˜๊ณ  ๋ฒ„์ „3 ๋ช…๋ น์ด ์ž‘๋™ํ•˜์ง€ ์•ˆํ—ค ๋œ๋‹ค. ๋ฒ„์ „3์œผ๋กœ ์„ค์ •๋˜๋ฉด ๋ฒ„์ „2์˜ ๋ช…๋ น์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ทธ ์™ธ์—๋„ ETCDCTL์ด ETCD API ์„œ๋ฒ„์— ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋„๋ก ์ธ์ฆ์„œ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋„ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค.




15. Kube-API ์„œ๋ฒ„

Kube-API server๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ์ฃผ์š” ๊ด€๋ฆฌ ๊ตฌ์„ฑ ์š”์†Œ์ด๋‹ค.
kubectl ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด kubectl ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ Kube-API server์— ๋„๋‹ฌํ•œ๋‹ค.
ํ๋ธŒ ๊ด€๋ฆฌ์ž๊ฐ€ ๋จผ์ € ์š”์ฒญ์„ ์ธ์ฆํ•˜๊ณ  ์œ ํšจ์„ฑ์„ ํ™•์ธํ•œ๋‹ค. ๊ทธ๋Ÿผ ETCD ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํšŒ์ˆ˜ํ•ด ์š”์ฒญ๋œ ์ •๋ณด๋กœ ์‘๋‹ตํ•œ๋‹ค. ๊ตณ์ด kubectl ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š” ์—†์ด API๋ฅผ ํ˜ธ์ถœํ•ด๋„ ๋œ๋‹ค.

  1. Authenticate User
  2. Validate Request
  3. Retrieve data
  4. Update ETCD
  5. Scheduler
  6. Kubelet

์˜ˆ๋ฅผ ๋“ค์–ด, pod๋ฅผ ์ƒ์„ฑํ•ด๋ณด์ž.
curl -X POST /api/v1/namespaces/default/pods ... [other]
์ด ๊ฒฝ์šฐ API ์„œ๋ฒ„๋Š” ๋…ธ๋“œ์— ํ• ๋‹นํ•˜์ง€ ์•Š๊ณ  pod ๊ฐœ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
pod๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์Œ์„ ETCD ์„œ๋ฒ„์™€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.
kube-scheduler๋Š” ์ง€์†์ ์œผ๋กœ API ์„œ๋ฒ„๋ฅผ ๋ชจ๋‹ˆํ„ฐํ•˜๊ณ  ๋…ธ๋“œ๊ฐ€ ํ• ๋‹น๋˜์ง€ ์•Š์€ ์ƒˆ๋กœ์šด pod๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋œ๋‹ค. kube-scheduler๋Š” ์ƒˆ pod๊ฐ€ ์œ„์น˜ํ•  ์˜ฌ๋ฐ”๋ฅธ ๋…ธ๋“œ๋ฅผ ์‹๋ณ„ํ•ด์„œ kube-api server์™€ ํ†ต์‹ ํ•œ๋‹ค.
API ์„œ๋ฒ„๋Š” ํ•ด๋‹น ์ •๋ณด๋ฅผ ETCD ํด๋Ÿฌ์Šคํ„ฐ์— ์—…๋ฐ์ดํŠธํ•œ๋‹ค. API ์„œ๋ฒ„๋Š” ํ•ด๋‹น ์ •๋ณด๋ฅผ ์ž‘์—…์ž ๋…ธ๋“œ์˜ kubelet์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.
๊ทธ๋Ÿผ kubelet์€ ๋…ธ๋“œ์— pod๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ์—”์ง„์—๊ฒŒ ์ง€์‹œํ•ด์„œ ์•ฑ ์ด๋ฏธ์ง€๋ฅผ ๋ฐฐํฌํ•œ๋‹ค. ์™„๋ฃŒ๋˜๋ฉด kubelet์€ ์ƒํƒœ๋ฅผ API ์„œ๋ฒ„์—๊ฒŒ ์—…๋ฐ์ดํŠธํ•˜๊ณ  API ์„œ๋ฒ„๋Š” ETCD ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•œ๋‹ค. ๋ณ€ํ™”๋ฅผ ์š”๊ตฌํ•  ๋•Œ๋งˆ๋‹ค ๋น„์Šทํ•œ ํŒจํ„ด์ด ๋ฐ˜๋ณต๋œ๋‹ค.

kube-API server๋Š” ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋ณ€๊ฒฝ์„ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋ชจ๋“  ์ž‘์—…์˜ ์ค‘์‹ฌ์— ์žˆ๋‹ค.
์š”์•ฝํ•˜์ž๋ฉด kube-API server๋Š” ์š”์ฒญ์˜ ์ธ์ฆ๊ณผ ์œ ํšจ์„ฑ์„ ํ™•์ธํ•˜๊ณ  ETCD ์ €์žฅ์†Œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•˜๋Š” ์ผ์„ ํ•œ๋‹ค. ์‚ฌ์‹ค kube-API server๋Š” ETCD ์ €์žฅ์†Œ์™€ ์ง์ ‘ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ์œ ์ผํ•œ ๊ตฌ์„ฑ์š”์†Œ์ด๋‹ค. ๋‹ค๋ฅธ ๊ตฌ์„ฑ์š”์†Œ๋“ค์€ kube-API server์„ ์ด์šฉํ•ด ์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ETCD์— ๋ฐ˜์˜ํ•œ๋‹ค.

kube-API server๋Š” ๋งŽ์€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‹คํ–‰๋œ๋‹ค.
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ตฌ์กฐ๋Š” ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ์„œ๋กœ ํ˜‘๋ ฅํ•˜๊ณ  ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ๋Œ€ํ™”ํ•œ๋‹ค.
๊ทธ๋ž˜์„œ ๋‹ค๋ฅธ ๋ถ€ํ’ˆ์ด ์–ด๋”” ์žˆ๋Š”์ง€ ์•Œ์•„์•ผ ํ•œ๋‹ค. ์ธ์ฆ, ์Šน์ธ, ์•”ํ˜ธํ™”, ๋ณด์•ˆ์—๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์ด ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์„ ํƒ์ง€๊ฐ€ ๋งŽ๋‹ค.

๋‹ค์ˆ˜๊ฐ€ ์ธ์ฆ์„œ๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ ๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ํ™•๋ณดํ•œ๋‹ค. ๋ชจ๋“  ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์—ฐ๊ฒฐ๋œ ์ธ์ฆ์„œ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค. ๊ธฐ์กด ํด๋Ÿฌ์Šคํ„ฐ์—์„œ kube-api server์˜ ์˜ต์…˜์„ ์–ด๋–ป๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ์„๊นŒ?

kubeadm ํˆด๋กœ ์„ค์ •ํ•˜๋ฉด kubeadm์€ kube-api server๋ฅผ ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์˜ kube-system ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— pod๋กœ ๋ฐฐํฌํ•œ๋‹ค. ์ด ๊ฒฝ์šฐ, etc/kubernetes/manifest/kube-apiserver.yaml ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด pod ์ •์˜ ํŒŒ์ผ์—์„œ ์˜ต์…˜์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

kubeadm ํˆด๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, cat /etc/systemd/system/kube-apiserver.service ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด kube-api server ์„œ๋น„์Šค๋ฅผ ๋ณด๋ฉด ์˜ต์…˜์„ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ๋‹ค.




16. Kube Controller Manager

Kube Controller-Manager๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๋‹ค์–‘ํ•œ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.

  1. Watch Status
  2. Remediate Situation

controller๋Š” ์‹œ์Šคํ…œ ๋‚ด ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ ์š”์†Œ์˜ ์ƒํƒœ๋ฅผ ์ง€์†์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์‹œ์Šคํ…œ ์ „์ฒด๋ฅผ ์›ํ•˜๋Š” ๊ธฐ๋Šฅ ์ƒํƒœ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.
๋…ธ๋“œ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋…ธ๋“œ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•œ๋‹ค.
๋ณต์ œ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ณต์ œํ’ˆ ์„ธํŠธ์˜ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์›ํ•˜๋Š” ์ˆ˜์˜ pod๊ฐ€ ์„ธํŠธ ๋‚ด์—์„œ ํ•ญ์ƒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•œ๋‹ค.
์‹ค์ œ๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—๋Š” ์ด๋Ÿฌํ•œ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ํ›จ์”ฌ ๋” ๋งŽ๋‹ค.
์ด๋Ÿฌํ•œ ์ปจํŠธ๋กค๋Ÿฌ๋“ค์€ Kube Controller Manager๋ผ๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋กœ ํŒจํ‚ค์ง€ํ™”๋˜์–ด ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, Kube Controller Manager๋ฅผ ์„ค์น˜ํ•˜๋ฉด ๋‹ค๋ฅธ ์ปจํŠธ๋กค๋Ÿฌ๋“ค๋„ ์„ค์น˜๋œ๋‹ค.

kubeadm ํˆด๋กœ ์„ค์ •ํ•œ ๊ฒฝ์šฐ,
cat /etc/kubernetes/manifest/kube-controller-manager.yaml ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด pod ์ •์˜ ํŒŒ์ผ์—์„œ ์˜ต์…˜์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

kubeadm ํˆด๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ,
cat /etc/systemd/system/kube-controller-manager.service ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์„œ๋น„์Šค ์˜ต์…˜์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.




17. Kube Scheduler

kube-scheduler๋Š” pod์˜ ์ผ์ • ๊ด€๋ฆฌ๋ฅผ ์ฑ…์ž„์ง„๋‹ค.
kube-scheduler๋Š” ์–ด๋–ค pod๊ฐ€ ์–ด๋–ค node์— ๋“ค์–ด๊ฐˆ์ง€๋งŒ ๊ฒฐ์ •ํ•œ๋‹ค.
pod๋ฅผ node์— ๋‘๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ์ด๋Š” kubelet์˜ ์ผ์ด๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ๋Š” ์ผ์ • ๊ด€๋ฆฌ์ž๊ฐ€ ํŠน์ • ๊ธฐ์ค€์— ๋”ฐ๋ผ pod๋ฅผ ์–ด๋Š node์— ๋†“์„์ง€ ๊ฒฐ์ •ํ•œ๋‹ค.
๋ฆฌ์†Œ์Šค ์š”๊ตฌ์‚ฌํ•ญ์ด ๋‹ค๋ฅธ pod๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ๊ณ  ํŠน์ • ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ํ•œ์ •๋œ node๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค.

  1. Filter Nodes
  2. Rank Nodes

kube-scheduler๋Š” ๋‘ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ pod์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ node๋ฅผ ์ฐพ๋Š”๋‹ค.
์ฒซ ๋‹จ๊ณ„์—์„œ๋Š” kube-scheduler๊ฐ€ pod์— ๋งž์ง€ ์•Š๋Š” ๋…ธ๋“œ๋ฅผ ๊ฑธ๋Ÿฌ๋‚ธ๋‹ค.
๊ทธ ๋‹ค์Œ kube-scheduler๋Š” pod์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๋…ธ๋“œ๋ฅผ ํ‘œ์‹œํ•œ๋‹ค.
์ด๊ฒƒ์€ ์‚ฌ์šฉ์ž ์ง€์ •์ด ๋  ์ˆ˜ ์žˆ๊ณ  ๊ณ ์œ ์˜ ์Šค์ผ€์ฅด๋Ÿฌ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

Scheduler์™€ ๊ด€๋ จํ•ด์„œ ์‚ดํŽด๋ณผ ์ฃผ์ œ๊ฐ€ ์•„์ฃผ ๋งŽ๋‹ค.

  • Labels & Selectors
  • Resource Limits
  • Manual Scheduling
  • Daemon Sets
  • Multiple Schedulers
  • Scheduler Events
  • Configure Kubernetes Scheduler

kubeadm ํˆด๋กœ ์„ค์ •ํ•œ ๊ฒฝ์šฐ,
cat /etc/kubernetes/manifest/kube-scheduler.yaml ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด pod ์ •์˜ ํŒŒ์ผ์—์„œ ์˜ต์…˜์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

profile
์ด์ „์˜ ๊ธฐ๋ก๋“ค ๐Ÿ‘‰ https://blog.naver.com/reviewerkyj

0๊ฐœ์˜ ๋Œ“๊ธ€