์์ ์ ์๋์ ๊ฐ์ ๊ธ์ ์์ฑํ์๋๋ฐ, ์ดํ ํฌ๊ฒ ๋ง์ง์ง ์์์ ์ด๋ฒ์ BIOS ๋ชจ๋ ์ผ์ Proxmox ๋ฅผ ์น ๋ฐ์ด๋ฒ๋ ธ๊ณ , ์๋กญ๊ฒ ๋ค์ ์ถ๋ฐํ์๋ ์๋ฏธ์์ Proxmox ์ฌ์ค์น์ ์ด๋ฒ์๋ Kubespray ๋ฅผ ์ด์ฉํด์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ค์นํ์ต๋๋ค.
Proxmox ๋ ์์ ๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ๊ณผ ๋๊ฐ์ด ๋ถํ๋ณ๋ก ๊ตฌ๋งคํด์ ์กฐ๋ฆฝํ ๋ฏธ๋PC ์์ ์ค์นํ์ต๋๋ค.
์ ์ ๋ฏธ๋PC ๊ฐ ๊ถ๊ธํ๋ค๋ฉด ์ฌ๊ธฐ ํด๋ฆญ!
์ ๋ฏธ๋ PC ์ ์ฌ์์ CPU 16, RAM 64GB, SSD 1TB ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด 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 ๋ฐ๋ชฌ ์ํ ํ์ธ
์ด๋ฌ๋ฉด Kubespray ์ ํ์ํ ๋ ธ๋๋ค์ ์ ๋ถ ์ค๋น๋์ต๋๋ค!
๊ทธ๋ผ ์ด์ Kubespray ๋ก ๋์ด๊ฐ๋ณด์ฃ .
Kubespray ์ ์ด์ฉํ๋ฉด ์์ฃผ ์ฝ๊ฒ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ค์นํ๊ณ ๊ด๋ฆฌ ํ ์ ์์ต๋๋ค. ๋ฌผ๋ก ์ค์๋ธ๋ก ์งํ๋๊ธด ํ์ง๋ง, ์ค์๋ธ์ ๊ทธ๋ ๊ฒ ์ด๋ ต์ง ์์์ ์ฝ๊ฒ ํ์ค ์ ์์ต๋๋ค.
ํต์คํํธ๋ก ๊ฐ์ ๊ทธ๋๋ก ๋ฐ๋ผํ๋ฉด ๋ฉ๋๋ค. ๋ค๋ง ๋นจ๊ฐ์ ๋ฐ์ผ๋ก๋ ์์ฃผ์์ฃผ ์กฐ๊ธ ์์ ํ์ต๋๋ค.
git clone ์ ํตํด์ kubespray ๋ฅผ ๋ค์ด๋ฐ๊ณ , ํด๋๋ก ์ด๋ ํ ์ฐจ๊ทผ ์ฐจ๊ทผ ๋ช ๋ น์ด๋ฅผ ์คํํด์ค๋๋ค.
$ cp -rfp inventory/sample inventory/mycluster
$ CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py
์ดํ, mycluser ํด๋ ๋ฐ์ ๋ง์ ํด๋ ๋ค์ด ์๊ธฐ๋๋ฐ, ์ฟ ๋ฒ๋คํฐ์ค์ ๊ด๋ จ๋ ์ค์ ๊ฐ๋ค์ ์ค ์ ์์ต๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค์ ๋ฒ์ ์ด๋, ์ฟ ๋ฒ๋คํฐ์ค CNI, ์๋น์ค, ํ๋๋ค์ ์ฌ์ด๋ ๋ฑ์ ์ค์ ํ ์ ์์ต๋๋ค.
๊ทผ๋ฐ ๋ฑํ ์์ ํ๊ฑด ์์ต๋๋ค.
์ดํ ํ์ํ ํ์ด์ฌ ํจํค์ง๋ค์ ์ค์นํด์ค๋๋ค.
$ 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๋ถ ์ ๋ ์์๋๋๋ฐ, ์ฑ๊ณต์ ์ผ๋ก ์ํํ์ต๋๋ค.
์ด์ kubectl ๋ช ๋ น์ด๋ฅผ ํตํด ์ ๋ง ์ ๋์๋์ง ํ์ธํด์ฃผ๊ณ ,
crictl ๋ช ๋ น์ service ๋ช ๋ น์ด๋ฅผ ํตํด 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 ์ ๋ฌธ์ ์์ด ์ฑ๊ณตํ์ต๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก kubelet ๊ณผ crictl ์ ํตํด ์ปจํ ์ด๋๋ฅผ ํ์ธํด์ค๋๋ค.
์ด๋ก์จ Proxmox ์ Kubespray ๋ฅผ ์ด์ฉํด ์์ฝ๊ฒ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ค์นํด๋ดค์ต๋๋ค.
์์ ์ ๋ฌธ์๋ณด๊ณ ์ค์นํด๋ณธ๋ค๊ณ ์์ฒญ๋ ์ฝ์ง๊ณผ ์คํ๊ฒํฐ์ธ ์คํฌ๋ฆฝํธ๋ฅผ ์ง๋ฉด์ ๊ณ ์ํ์๋๋ฐ, Kubespray ๋ฅผ ์ฌ์ฉํ๋ ๊ต์ฅํ ์์ฝ๊ฒ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ค์นํ์ต๋๋ค.
๊ทธ๋๋ ํ๋ฒ kubeadm ๋ง์ผ๋ก ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ค์นํ๋ ๊ฒ๋ ์ถ์ฒ๋๋ฆฝ๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ ๋ค์ ์ค์นํ๊ฒ ๋ค ๋ค์ ์ด์ฌํ ์ด๊ฒ์ ๊ฒ ์๋ํด๋ด์ผ๊ฒ ๋ค์!
๊ทธ๋ผ ์ค๋์ ์ฌ๊ธฐ๊น์ง!
'๋๋ง์ ์๊ณ ์์คํ k8s ์๊ตญ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋์์์ฟ ] ์ํ ์ง๊ธฐ feat. ๋ฏธ๋ PC ์กฐ๋ฆฝ (4) | 2023.02.28 |
---|