๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

ํšจ์œจ์ ์ธ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ ๊ฐ€์ด๋“œ

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ตฌ์„ฑ ๋ฐฉ๋ฒ•

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

1. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์„ค์น˜ ์ค€๋น„

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์ „์— ํ•„์š”ํ•œ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜ํ•  ์„œ๋ฒ„๋ฅผ ์ค€๋น„ํ•˜๊ณ , ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑ์‹œ์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์šด์˜ ์ฒด์ œ: ๋Œ€๋ถ€๋ถ„์˜ ๋ฆฌ๋ˆ…์Šค ๋ฐฐํฌํŒ์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค. Ubuntu, CentOS, Debian ๋“ฑ์ด ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค.
  • ์‹œ์Šคํ…œ ์š”๊ตฌ ์‚ฌํ•ญ: ์ตœ์†Œ 2GB ์ด์ƒ์˜ RAM๊ณผ 2์ฝ”์–ด ์ด์ƒ์˜ CPU๊ฐ€ ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.
  • ๋„์ปค: ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋„์ปค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋„์ปค๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

2. ํด๋Ÿฌ์Šคํ„ฐ ์„ค์น˜ ๋ฐฉ๋ฒ•

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ, ์—ฌ๊ธฐ์„œ๋Š” kubeadm์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. kubeadm์€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ฐ„ํŽธํ•˜๊ฒŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

a. kubeadm ์„ค์น˜

๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด kubeadm, kubelet, kubectl์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

b. ํด๋Ÿฌ์Šคํ„ฐ ์ดˆ๊ธฐํ™”

๋งˆ์Šคํ„ฐ ๋…ธ๋“œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”.

sudo kubeadm init

์ดˆ๊ธฐํ™”๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์‹œ์ง€์—์„œ ์นด์™€๋“œ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ์„ค์ •, ํด๋Ÿฌ์Šคํ„ฐ์— ์›Œ์ปค ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ• ๋“ฑ์ด ์•ˆ๋‚ด๋ฉ๋‹ˆ๋‹ค.

c. ๋น„์ „๋ฌธ๊ฐ€๋ฅผ ์œ„ํ•œ ํด๋Ÿฌ์Šคํ„ฐ ์‚ฌ์šฉ ์„ค์ •

๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์—์„œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ kubeconfig ํŒŒ์ผ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

3. ๋„คํŠธ์›Œํฌ ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์—์„œ๋Š” ๋„คํŠธ์›Œํฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. CNI(ํด๋Ÿฌ์Šคํ„ฐ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค) ํ”Œ๋Ÿฌ๊ทธ์ธ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์—ฌ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Calico๋ฅผ ์„ค์น˜ํ•  ๊ฒฝ์šฐ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

4. ์›Œ์ปค ๋…ธ๋“œ ์ถ”๊ฐ€

๋งˆ์Šคํ„ฐ ๋…ธ๋“œ๊ฐ€ ์ดˆ๊ธฐํ™”๋œ ํ›„, ๋ฉ”์‹œ์ง€์— ๋‚˜์˜จ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์›Œ์ปค ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์›Œ์ปค ๋…ธ๋“œ์—์„œ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

kubeadm join <master-ip>:<port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>

5. ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ ํ™•์ธ

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋…ธ๋“œ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectl get nodes

์ •์ƒ์ ์œผ๋กœ ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ Ready ์ƒํƒœ๋ผ๋ฉด ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์ž˜ ๊ตฌ์„ฑ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

6. ๊ฒฐ๋ก 

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