์ฟ ๋ฒ๋คํฐ์ค ๊ตฌ์ฑ ๋ฐฉ๋ฒ
์ฟ ๋ฒ๋คํฐ์ค(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. ๊ฒฐ๋ก
์ฟ ๋ฒ๋คํฐ์ค๋ ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ์ ํ์์ ์ธ ๋๊ตฌ์ ๋๋ค. ์์ ๋จ๊ณ๋ค์ ๋ฐ๋ฅด๋ฉด ๊ธฐ๋ณธ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์์ฝ๊ฒ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ด ํฌ์คํธ๊ฐ ๋์์ด ๋๊ธธ ๋ฐ๋ผ๋ฉฐ, ๋ ๊น์ด ์๋ ํ์ต์ ํตํด ์ฟ ๋ฒ๋คํฐ์ค์ ๋ค์ํ ๊ธฐ๋ฅ์ ํ์ฉํด๋ณด์ธ์.