๋กœ์ผ“๐Ÿพ
article thumbnail

 

 

์˜ˆ์ „์— ์•„๋ž˜์™€ ๊ฐ™์€ ๊ธ€์„ ์ž‘์„ฑํ•˜์˜€๋Š”๋ฐ, ์ดํ›„ ํฌ๊ฒŒ ๋งŒ์ง€์ง€ ์•Š์•„์„œ ์ด๋ฒˆ์— BIOS ๋ชจ๋“œ ์ผœ์„œ Proxmox ๋ฅผ ์‹น ๋ฐ€์–ด๋ฒ„๋ ธ๊ณ , ์ƒˆ๋กญ๊ฒŒ ๋‹ค์‹œ ์ถœ๋ฐœํ•˜์ž๋Š” ์˜๋ฏธ์—์„œ Proxmox ์žฌ์„ค์น˜์™€ ์ด๋ฒˆ์—๋Š” Kubespray ๋ฅผ ์ด์šฉํ•ด์„œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ž˜๊ฐ€๋ผ~ (ํ•ด๋‹น๊ธ€์€ ์‚ญ์ œ)

 

Proxmox ๋Š” ์˜ˆ์ „๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•๊ณผ ๋˜‘๊ฐ™์ด ๋ถ€ํ’ˆ๋ณ„๋กœ ๊ตฌ๋งคํ•ด์„œ ์กฐ๋ฆฝํ•œ ๋ฏธ๋‹ˆPC ์—์„œ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ €์˜ ๋ฏธ๋‹ˆPC ๊ฐ€ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ์—ฌ๊ธฐ ํด๋ฆญ!

 

์ œ ๋ฏธ๋‹ˆ PC ์˜ ์‚ฌ์–‘์€ CPU 16, RAM 64GB, SSD 1TB ์ž…๋‹ˆ๋‹ค.

๋ฏธ๋‹ˆ PC ์‚ฌ์–‘

 

๊ทธ๋ฆฌ๊ณ  ์ด 4๋Œ€์˜ Ubuntu Jammy ๋ฅผ ์ค€๋น„ํ–ˆ๊ณ , ํ•œ๋Œ€๋Š” ๋งˆ์Šคํ„ฐ๋กœ ๋‚˜๋จธ์ง€๋Š” ์›Œ์ปค ๋…ธ๋“œ๋กœ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

๋…ธ๋“œ ์‚ฌ์–‘

k8s-worker-03 ๋„ 4CPU ๋ฅผ ์ฃผ๊ณ ์‹ถ์—ˆ์ง€๋งŒ.. ์ถ”ํ›„ ๋‹ค๋ฅธ๊ณณ์—์„œ ํ˜น์‹œ ๋ชจ๋ฅผ CPU ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ 2CPU ๋งŒ ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

CPU ๋Š” ์••์ถ•๊ฐ€๋Šฅํ•œ ์ž์›์ด๋‹ˆ ๋ญ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ์ฃฝ์ง„ ์•Š๊ฒ ์ฃ ! (๊ทธ๋Ÿฌ๊ธธ ๊ธฐ๋„ํ•ฉ๋‹ˆ๋‹ค)

 

์ดํ›„ ์ „๋ถ€ Root ๋ฅผ ์ด์šฉํ•ด์„œ ์ž‘์—…ํ•  ๊ฒƒ์ด๋‚˜ ๊ฐ ๋…ธ๋“œ๋“ค๋งˆ๋‹ค Root ์œ ์ €์— ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ• ๋‹นํ•ด์ฃผ๊ณ , sshd ์— Root ๋กœ๊ทธ์ธ์„ ํ—ˆ์šฉํ•ด์ค๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ์šฐ๋ถ„ํˆฌ๋Š” Root ๋กœ๊ทธ์ธ์€ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค.

์ง‘์—์„œ๋งŒ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์—๋Š” ๋น„์ค‘์„ ๋‘์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค!

 

$ sudo -i #-- root ๋กœ๊ทธ์ธ
$ passwd  #-- password ์„ค์ •

$ vim /etc/ssh/sshd_config
#-- ์ค‘๊ฐ„์— ์žˆ๋Š” PermitRootLogin yes ๋กœ ๋ณ€๊ฒฝ

$ service sshd restart #-- ssh ๋ฐ๋ชฌ ์žฌ์‹œ์ž‘
$ service sshd status  #-- ssh ๋ฐ๋ชฌ ์ƒํƒœ ํ™•์ธ

root ๋กœ๊ทธ์ธ ํ—ˆ์šฉ

 

์ด๋Ÿฌ๋ฉด Kubespray ์— ํ•„์š”ํ•œ ๋…ธ๋“œ๋“ค์€ ์ „๋ถ€ ์ค€๋น„๋์Šต๋‹ˆ๋‹ค!

 

๊ทธ๋Ÿผ ์ด์ œ Kubespray ๋กœ ๋„˜์–ด๊ฐ€๋ณด์ฃ .

 

Kubespray ์„ ์ด์šฉํ•˜๋ฉด ์•„์ฃผ ์‰ฝ๊ฒŒ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๊ด€๋ฆฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์•ค์„œ๋ธ”๋กœ ์ง„ํ–‰๋˜๊ธด ํ•˜์ง€๋งŒ, ์•ค์„œ๋ธ”์€ ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ต์ง€ ์•Š์•„์„œ ์‰ฝ๊ฒŒ ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/kubernetes-sigs/kubespray

 

ํ€ต์Šคํƒ€ํŠธ๋กœ ๊ฐ€์„œ ๊ทธ๋Œ€๋กœ ๋”ฐ๋ผํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ ๋นจ๊ฐ„์ƒ‰ ๋ฐ‘์œผ๋กœ๋Š” ์•„์ฃผ์•„์ฃผ ์กฐ๊ธˆ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/kubernetes-sigs/kubespray?tab=readme-ov-file#quick-start

 

git clone ์„ ํ†ตํ•ด์„œ kubespray ๋ฅผ ๋‹ค์šด๋ฐ›๊ณ , ํด๋”๋กœ ์ด๋™ ํ›„ ์ฐจ๊ทผ ์ฐจ๊ทผ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด์ค๋‹ˆ๋‹ค.

$ cp -rfp inventory/sample inventory/mycluster
$ CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py

 

์ดํ›„, mycluser ํด๋” ๋ฐ‘์— ๋งŽ์€ ํด๋” ๋“ค์ด ์ƒ๊ธฐ๋Š”๋ฐ, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์™€ ๊ด€๋ จ๋œ ์„ค์ • ๊ฐ’๋“ค์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๋ฒ„์ „์ด๋‚˜, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค CNI, ์„œ๋น„์Šค, ํŒŒ๋“œ๋“ค์˜ ์‚ฌ์ด๋” ๋“ฑ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

k8s-cluster.yaml

 

๊ทผ๋ฐ ๋”ฑํžˆ ์ˆ˜์ •ํ•œ๊ฑด ์—†์Šต๋‹ˆ๋‹ค.

 

์ดํ›„ ํ•„์š”ํ•œ ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€๋“ค์€ ์„ค์น˜ํ•ด์ค๋‹ˆ๋‹ค.

$ pip3 install -r requirements.txt

 

์—ฌ๊ธฐ๊นŒ์ง€ ์ง„ํ–‰ํ–ˆ๋‹ค๋ฉด, ์ด์ œ ansible-playbook ์„ ์‹คํ–‰ํ•  ์ค€๋น„๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

 

์šฐ์„  master ์™€ node1 ๋งŒ ๋ช…์‹œํ•ด์ฃผ๊ณ  ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

(๋…ธ๋“œ ์ถ”๊ฐ€ ํ”„๋กœ์„ธ์Šค๋„ ๊ถ๊ธˆํ•ด์„œ ์ผ๋ถ€๋Ÿฌ ํ•œ๋ฒˆ์— ์ง„ํ–‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค)

[all]
master ansible_host=192.168.0.190 ansible_user=root ansible_become=yes ansible_become_password=<password>
node1 ansible_host=192.168.0.171  ansible_user=root ansible_become=yes ansible_become_password=<password>

[kube_control_plane]
master

[etcd]
master

[kube_node]
node1

[calico_rr]

[k8s_cluster:children]
kube_control_plane
kube_node
calico_rr

 

์ธ๋ฒคํ† ๋ฆฌ๋ฅผ ์ˆ˜์ •ํ•ด์ค€ ์ดํ›„์— ansible-playbook ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

$ ansible-playbook -i inventory/mycluster/inventory.ini cluster.yml -k -K

 

5๋ถ„ ์ •๋„ ์†Œ์š”๋˜๋Š”๋ฐ, ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

ansible-playbook ๊ฒฐ๊ณผ

 

์ด์ œ kubectl ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ •๋ง ์ž˜ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด์ฃผ๊ณ ,

kubectl

 

crictl ๋ช…๋ น์™€ service ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด kubelet, etcd, container ์˜ ์ƒํƒœ๋„ ํ™•์ธํ•ด์ค๋‹ˆ๋‹ค.

kubelet, etcd, container

 

์˜ค์ผ€์ด! ๋ชจ๋‘ ๋ฌธ์ œ ์—†์ด ์ž˜ ์„ค์น˜๋๊ตฐ์š”!

 

๊ทธ๋Ÿผ ๋‚˜๋จธ์ง€ 2๊ฐœ๋„ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค.

[all]
master ansible_host=192.168.0.190 ansible_user=root ansible_become=yes ansible_become_password=<password>
node1 ansible_host=192.168.0.171  ansible_user=root ansible_become=yes ansible_become_password=<password>
node2 ansible_host=192.168.0.181  ansible_user=root ansible_become=yes ansible_become_password=<password>
node3 ansible_host=192.168.0.197  ansible_user=root ansible_become=yes ansible_become_password=<password>

[kube_control_plane]
master

[etcd]
master

[kube_node]
node1
node2
node3

[calico_rr]

[k8s_cluster:children]
kube_control_plane
kube_node
calico_rr

 

์ธ๋ฒคํ† ๋ฆฌ์— node2, node3 ์ถ”๊ฐ€ํ•˜๊ณ  ansible-playbook ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

$ ansible-playbook -i inventory/mycluster/inventory.ini cluster.yml -k -K

 

ansible ์€ ๋ฌธ์ œ์—†์ด ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.

ansible ๊ฒฐ๊ณผ

 

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ kubelet ๊ณผ crictl ์„ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ™•์ธํ•ด์ค๋‹ˆ๋‹ค.

kubelet, crictl

 

์ด๋กœ์จ Proxmox ์™€ Kubespray ๋ฅผ ์ด์šฉํ•ด ์†์‰ฝ๊ฒŒ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์„ค์น˜ํ•ด๋ดค์Šต๋‹ˆ๋‹ค.

 

์˜ˆ์ „์— ๋ฌธ์„œ๋ณด๊ณ  ์„ค์น˜ํ•ด๋ณธ๋‹ค๊ณ  ์—„์ฒญ๋‚œ ์‚ฝ์งˆ๊ณผ ์ŠคํŒŒ๊ฒŒํ‹ฐ์ธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์งœ๋ฉด์„œ ๊ณ ์ƒํ–ˆ์—ˆ๋Š”๋ฐ, Kubespray ๋ฅผ ์‚ฌ์šฉํ•˜๋‹ˆ ๊ต‰์žฅํžˆ ์†์‰ฝ๊ฒŒ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ž˜๋„ ํ•œ๋ฒˆ kubeadm ๋งŒ์œผ๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ๋„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

 

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋„ ๋‹ค์‹œ ์„ค์น˜ํ–ˆ๊ฒ ๋‹ค ๋‹ค์‹œ ์—ด์‹ฌํžˆ ์ด๊ฒƒ์ €๊ฒƒ ์‹œ๋„ํ•ด๋ด์•ผ๊ฒ ๋„ค์š”!

 

๊ทธ๋Ÿผ ์˜ค๋Š˜์€ ์—ฌ๊ธฐ๊นŒ์ง€!

 

 

profile on loading

Loading...