AWS EKS ๋ GCP GKE๋ฅผ ์ด์ฉํ๋ฉด ์ด๋ ต์ง ์๊ฒ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ถํ ์ ์์ง๋ง ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋๋ฅผ ์ด์ฉํ์ง ์๊ณ ์จํ๋ ๋ฏธ์ค ํ๊ฒฝ์์ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ถํ๊ธฐ๋ ์ฌ์ด ์ผ์ ์๋๋๋ค. (์ต์ ์ ํํ ๋ ใ ใ )
๊ทธ๋์ ์ด๋ฒ ๊ธ์์๋ k8s ๊ณต์ ๋ฌธ์๋ฅผ ๋ณด๊ณ ์จํ๋ ๋ฏธ์ค ํ๊ฒฝ์์ ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ถํด๋ณด๊ฒ ์ต๋๋ค. ํด๋ฌ์คํฐ ๊ตฌ์ถ์ ์ด์ ์ ๋ง์ถฐ์ k8s ์ k8s ๋ด ์ค๋ธ์ ํธ๋ค์ ๋ํ ์ค๋ช ์ ์๋ตํ๊ฒ ์ต๋๋ค.
๋ํ ๋ง์คํฐ ๋ ธ๋์ ์์ปค ๋ ธ๋์์ ์ํํ ํ์๊ฐ ๋ค๋ฅด๋ฏ๋ก ๊ฐ ๋ถ๋ถ๋ง๋ค ํ์ํ๊ฒ ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฐ๋์ ์งํ ์์๋ ์ง์ผ์ฃผ์ ์ผ ํฉ๋๋ค.
๋ง์ฝ ์ค์น ํ์๋ค๊ฐ ์๋ชป๋ ๋๋์ด ๋ ๋ค๋ฉด kubeadm reset ๋ช ๋ น์ด๋ฅผ ํตํด ๋ฆฌ์ ํด์ฃผ์๊ณ ๋ค์ ์งํํ์๊ธฐ ๋ฐ๋๋๋ค.
์ฐ์ ๋ฏธ๋ฆฌ ์ค๋น๋์ด์ผ ํ ํ๊ฒฝ์ ์๋์ ๊ฐ์ต๋๋ค.
- ubuntu 20.4 ๋ฒ์ ์ ๊ฐ์ ๋จธ์ 2๋
๋ฉ๋ชจ๋ฆฌ๋ 4096MB, CPU๋ 2์ฝ์ด ์ ๋๋ค. ์ฟ ๋ฒ๋คํฐ์ค ์ต์ ๊ถ์์ฌ์์ด 2048MG, CPU 2์ฝ์ด ์ด๊ธฐ ๋๋ฌธ์ ๋ง์ฝ ์ด๋ณด๋ค ์์ ๋ฆฌ์์ค๋ฅผ ๊ฐ์๋จธ์ ์ ํ ๋นํ๊ฒ ๋ ๊ฒฝ์ฐ ํด๋ฌ์คํฐ๋ฅผ ๋์์ํฌ ์ ์์ต๋๋ค.
๋ํ ๊ฐ๊ฐ์ ๊ฐ์๋จธ์ ๋ค์ ํต์ ์ด ๋์ผ ํ๊ธฐ ๋๋ฌธ์ ๋คํธ์ํฌ๋ ์๋์ ๊ฐ์ด ๊ตฌ์ฑํ์์ต๋๋ค.
๊ฐ์๋จธ์ ๋ํ ๊ณต์ ๊ธฐ์์ IP๋ฅผ ํ ๋น๋ฐ๊ธฐ ์ํด์ ๋ธ๋ฆฟ์ง๋ฅผ ์ฌ์ฉํ์์ต๋๋ค. NAT ๊ฐ์ ๊ฒฝ์ฐ ํธ์คํธ OS๋ฅผ ๊ฑฐ์ณ์ ํต์ ์ด ๋์ง๋ง, ๋ธ๋ฆฟ์ง๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ๊ฐ์ ๋จธ์ ์์ฒด๋ก IP๋ฅผ ํ ๋น๋ฐ๊ธฐ ๋๋ฌธ์ ํธ์คํธ OS๋ฅผ ๊ฑฐ์น ํ์๊ฐ ์์ต๋๋ค.
๊ฐ์ ๋จธ์ ๋คํธ์ํฌ ์ข ๋ฅ์ ๋ํด ์์ธํ ์๊ณ ์ถ์ผ์๋ฉด ์๋ ๋งํฌ๋ก ๊ฐ์๋ฉด ๋ฉ๋๋ค.
2๋์ ๊ฐ์๋จธ์ ์ด ์ค๋น๊ฐ ๋์๋ค๋ฉด, ์๋ก๊ฐ์ ํต์ ์ด ๋์ง๋ ํ์ธํ์๊ธฐ ๋ฐ๋๋๋ค.
์ ๊ฐ์ ๊ฒฝ์ฐ ๊ฐ๊ฐ ์๋์ IP๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค. ifconfig๋ฅผ ํตํด์ ์์ ์ ip๋ฅผ ์ ์ ์์ต๋๋ค.
- master : 10.150.90.69
- node-1 : 10.150.90.68
$ ifconfig
# ์์ ์ private ip๋ฅผ ํ์ธํฉ๋๋ค
$ ping 10.150.90.68
# TO node-1 FROM master
ํต์ ์ด ๋ง์ฝ ์๋๋ค๋ฉด ์ฟ ๋ฒ๋คํฐ์ค ๊ตฌ์ถ์ ์ํ ์ค๋น๋ ์๋ฃ๋ฉ๋๋ค. ๊ทธ๋ผ ๋ณธ๊ฒฉ์ ์ผ๋ก ๊ณต์๋ฌธ์์ ๋์์๋ ์์์ ๋ง๊ฒ ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ถํด๋ณด๊ฒ ์ต๋๋ค.
* ๋ง์ฝ ์๋ก ํต์ ์ด ์๋๋ค๋ฉด ๊ฐ ๊ฐ์๋จธ์ ์ ๋ผ์ฐํ ํ ์ด๋ธ์ ํ์ธํด๋ณด์๊ธฐ ๋ฐ๋๋๋ค.
๊ณต์๋ฌธ์ ์ดํด๋ณด๊ธฐ
๊ณต์๋ฌธ์์ ๋ค์ด๊ฐ๋ณด๋ฉด ๊ฐ์ฅ ์ฒ์์ผ๋ก ์์ ๊ฐ์ ์๋ด๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค. Before you begin์ ๋ช ์๋ ์กฐ๊ฑด์ ๋ชจ๋ ์ถฉ์กฑํด์ผ๋ง ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
๋์ฌ๊ฒจ ๋ณผ๊ฒ์ ํฌ๊ฒ 2๊ฐ์ง์ ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ๋ 2GB, 2CPU๊ฐ ์ต์ ์ฌ์์ ๋๋ค.
- swap์ ๋ฐ๋์ ๊บผ์ผํฉ๋๋ค.
์ฒซ๋ฒ์งธ ๊ฐ์ ๊ฒฝ์ฐ ๊ฐ์ ๋จธ์ ์ ๊ตฌ์ถํ ๋ ํด๊ฒฐ์ด ๋๊ณ , swap์ disabled ํ๊ฒ ์ต๋๋ค.
swap disabled ํด์ฃผ๊ธฐ (๋ง์คํฐ ๋ ธ๋์ ์์ปค ๋ ธ๋ ๋ ๋ค)
$ sudo swapoff -a
# ์ด ๋ช
๋ น์ด๋ ๊ฐ์ ๋จธ์ ๋ฆฌ๋ถํธํ ๋ ๋ค์ ์ด๊ธฐํ๊ฐ ๋๋ฏ๋ก ์๊ตฌ์ ์ผ๋ก swap์ ๋๋ ค๋ฉด
# ์๋ ๋ช
๋ น์ด ๋ํ ํ์
์ผ ํฉ๋๋ค.
$ sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# ์ ๋ช
๋ น์ด๋ ์ง๊ธ ๋น์ฅ swap์ ๊บผ์ผํด์ ํ๋ ๋ช
๋ น์ด์ด๊ณ ,
# ์๋ ๋ช
๋ น์ด๋ ๋์ค์ reboot ํ์ ๋ ์ํด์ ์คํํ๋ ๋ช
๋ น์ด์
๋๋ค.
์์ธํ ์ฌํญ์ ์๋ ๋งํฌ๋ฅผ ํ์ธํด๋ณด์๊ธฐ ๋ฐ๋๋๋ค.
๋์ปค ์ค์น ํด์ฃผ๊ธฐ (๋ง์คํฐ ๋ ธ๋์ ์์ปค ๋ ธ๋ ๋ ๋ค)
$ apt update && apt upgrade -y
$ apt install -y docker.io
$ docker version
#๋์ปค ๋ฒ์ ํ์ธ
์ ์ด๋ฏธ์ง์ ๊ฐ์ด ๋์จ๋ค๋ฉด ์ ์์ ์ผ๋ก ์ค์น ๋ ๊ฒ์ ๋๋ค.
kubeadm, kubelet and kubectl ์ค์นํ๊ธฐ (๋ง์คํฐ ๋ ธ๋์ ์์ปค ๋ ธ๋ ๋ ๋ค)
๊ณต์ ๋ฌธ์์ ๋์์๋ ๋๋ก ์งํํด์ค๋๋ค.
๊ฐ๋จํ ์ค๋ช ๋๋ฆฌ์๋ฉด
- kubeadm : ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ ๋ถํธ์คํธ๋ฉ์ ๋๋ค. kubeadm ๋ง๊ณ ๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ถํ ์ ์๋ ๋ถํธ์คํธ๋ฉ์ ๋ค์ํฉ๋๋ค
- kubelet : ๋ ธ๋์์ ์ปจํ ์ด๋ ๋ฐํ์์ ์ํํฉ๋๋ค.
- kubectl : ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์ ๋ํํ๊ธฐ ์ํ cli ํ๋ก๊ทธ๋จ์ ๋๋ค.
1. Update the apt package index and install packages needed to use the Kubernetes apt repository:
$ sudo apt-get update
$ sudo apt-get install -y apt-transport-https ca-certificates curl
2. Download the Google Cloud public signing key:
$ sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
3. Add the Kubernetes apt repository:
$ echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
4. Update apt package index, install kubelet, kubeadm and kubectl, and pin their version:
$ sudo apt-get update
$ sudo apt-get install -y kubelet kubeadm kubectl
$ sudo apt-mark hold kubelet kubeadm kubectl
5. Version check (์ด๊ฑด ์ ๊ฐ ์ถ๊ฐํ ๋ถ๋ถ์ ๋๋ค)
$ kubeadm version
์ด๋ ๊ฒ kubectl, kubeadm, kubelet๋ฅผ ์ค์นํด์ฃผ์์ต๋๋ค.
k8s์ docker cgroup ๋ง์ณ์ฃผ๊ธฐ(๋ง์คํฐ ๋ ธ๋์ ์์ปค๋ ธ๋ ๋๋ค)
cgroups(control groups์ ์ฝ์)๋ ํ๋ก์ธ์ค๋ค์ ์์์ ์ฌ์ฉ(CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ ์ ์ถ๋ ฅ, ๋คํธ์ํฌ ๋ฑ)์ ์ ํํ๊ณ ๊ฒฉ๋ฆฌ์ํค๋ ๋ฆฌ๋ ์ค ์ปค๋ ๊ธฐ๋ฅ์ ๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค v1.22๋ถํฐ๋ ๋์ปค์ cgroup์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์๋ก ๋ง์ณ์ฃผ์ด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ docker์ cgroup์ cgroupfs์์ systemd๋ก ๋ฐ๊ฟ๋๋ค.
๋จผ์ Docker Cgroup์ ํ์ธํด์ค๋๋ค
$ docker info
cgroupfs๋ก ๋์ด์๋ ๊ฑธ ํ์ธํ ์ ์์ต๋๋ค.
daemon.json ํ์ผ์ ์์ ํด์ค๋๋ค. (์๋ง ์ด ํ์ผ์ ์์ผ์ค ๊ฒ๋๋ค)
$ vi /etc/docker/daemon.json
vi ์๋ํฐ๋ก ์คํ ํ ์๋ ์ฝ๋๋ฅผ ๋ฃ์ด์ค๋๋ค.
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
docker service ์ฌ๊ธฐ๋ํด์ค๋๋ค.
$ systemctl daemon-reload
$ systemctl restart docker
๋ค์ Docker cgroup ํ์ธ์ ํฉ๋๋ค.
$ docker info | grep -i cgroup
kubeadm์ผ๋ก ํด๋ฌ์คํฐ ์์ฑํ๊ธฐ(๋ง์คํฐ ๋ ธ๋๋ง)
Creating a cluster with kubeadm ๊ณต์๋ฌธ์๋ก ์ด๋ํ์ฌ ๋ง์ ์งํํ๊ฒ ์ต๋๋ค.
๋๋์ด ์ค์นํ kubeadm์ ์คํํฉ๋๋ค.
$ kubeadm init
2023/02/26 ์ผ์ ์ถ๊ฐ - kubeadm init ์ด ์๋ ๊ฒฝ์ฐ ์๋ ์ฐธ๊ณ
swap disable, RAM 2GB, CPU 2 cores, Update Docker cgroup ์ ํด์ฃผ์ จ๋ค๋ฉด ๋ฌธ์ ์์ด ์คํ์ด ์๋ฉ๋๋ค.
์ ์ค์น ๋์๋ค๋ฉด ์์ ๊ฐ์ด ๋์ต๋๋ค. ๊ฐ์ฅ ์๋์ kubeadm join ~ ์ผ๋ก ๋์ด์๋ ๊ฑฐ ๊ผญ ๋ฉ๋ชจํด ๋์๊ธฐ ๋ฐ๋๋๋ค. ์์ปค๋ ธ๋์์ ๋ง์คํฐ ๋ ธ๋๋ก join ํ ๋ ํ์ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ํฐ๋ฏธ๋์ ๋ช ์๋์ด ์๋ ๋ช ๋ น์ด๋ฅผ ์ฐจ๋ก๋๋ก ์คํํด์ค๋๋ค.
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
$ export KUBECONFIG=/etc/kubernetes/admin.conf
์ ์ค์น๋์๋์ง ํ์ธํ๊ธฐ ์ํด ์๋์ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์คํ์์ผ์ค๋๋ค.
$ docker ps
ํ๋๋ค์ด ์์ฃผ ์ ์คํ๋๊ณ ์์ต๋๋ค.
๋ง์คํฐ ๋ ธ๋๋ ์ ์์ฑ ๋์๋์ง ํ๋ฒ ํ์ธํด๋ณด๊ฒ ์ต๋๋ค.
$ kubectl get nodes
๊ตฌ์ถ์ ๋๊ฑฐ ๊ฐ์๋ฐ STATUS๊ฐ NotReady์ ๋๋ค. ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํด์ ์ ๊ทธ๋ฐ์ง ํ์ธํด๋ด ๋๋ค.
$ kubectl describe nodes
๋ก๊ทธ๋ค์ ์ดํด๋ณด๋ฉด ์์ ๊ฐ์ด NetworkReady=false๋ผ๊ณ ๋์ต๋๋ค. Cluster Network๋ฅผ ๊ตฌ์ถํด์ฃผ์ง ์์์ ๊ทธ๋ฐ๊ฒ๋๋ค. ๊ทธ๋ผ CN์ ๊ตฌ์ถํด๋ณด๊ฒ ์ต๋๋ค.
Cluster Networking ๊ตฌ์ถํ๊ธฐ(๋ง์คํฐ ๋ ธ๋๋ง)
You must deploy a Container Network Interface (CNI) based Pod network add-on so that your Pods can communicate with each other. Cluster DNS (CoreDNS) will not start up before a network is installed.
์ด์ ์ผ NetworkReady=false ์๋ ์ด์ ๋ฅผ ์ ์ ์์ต๋๋ค. ํ๋๋ค์ ์ํต์ ๊ฐ๋ฅ์ผ ํด์ฃผ๋ CoreDNS๊ฐ ์์ ๋์ง ์์์ ์์ต๋๋ค.
CoreDNS ํ๋ 2๊ฐ์ STATUS๊ฐ Pending์ธ ๊ฑธ ํ์ธํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด CNI๋ฅผ ๋ฐฐํฌํด์ฃผ์ด CoreDNS์ STATUS๋ฅผ Running์ผ๋ก ๋ฐ๊ฟ์ฃผ๊ฒ ์ต๋๋ค.
๋ฌธ์
๋ง์คํฐ ๋ ธ๋์ STATUS๊ฐ NotReady์.
์์ธ
CNI(์ปจํ ์ด๋ ๋คํธ์ํฌ ์ธํฐํ์ด์ค) ๊ธฐ๋ฐ ํฌ๋ ๋คํธ์ํฌ ๊ธฐ๋ฅ์ ์ถ๊ฐํด์ฃผ์ง ์์.
๊ทธ๋ก ์ธํด CoreDNS ํ๋์ STATUS๊ฐ Pending์.
ํด๊ฒฐ
CoreDNS ํ๋์ STATUS๋ฅผ Running์ผ๋ก ๋ฐ๊ฟ์ค์ผํจ.
๊ทธ๋ฌ๋ ค๋ฉด CNI(์ปจํ ์ด๋ ๋คํธ์ํฌ ์ธํฐํ์ด์ค) ๊ธฐ๋ฐ ํฌ๋ ๋คํธ์ํฌ ๊ธฐ๋ฅ์ ์ถ๊ฐํด์ค์ผํจ.
CNI ๊ธฐ๋ฐ ํฌ๋ ๋คํธ์ํฌ ๊ธฐ๋ฅ ์ถ๊ฐ(๋ง์คํฐ ๋ ธ๋๋ง)
๋งํฌ ๊ฑธ์ด๋ ๊ณต์๋ฌธ์๋ฅผ ํ์ธํด๋ณด๋ฉด CNI๋ฅผ ์ ๊ณตํด์ฃผ๋ ์ ์ฒด๋ค์ด ์๋นํ ๋ง์ต๋๋ค.
ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋ 3๋์ฅ๋ ๋น์ฐํ ์๊ณ ์.
์นผ๋ฆฌ์ฝ ๋ํ ์์ต๋๋ค. ํ์ง๋ง ์ ๋ ์ด๋ค ๋ง๊ณ weaveworks์์ ์ ๊ณตํด์ฃผ๋ CNI ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ฒ ์ต๋๋ค. ์ด์ ๋ ๊ฐ๋จํฉ๋๋ค. ์จํ๋ ๋ฏธ์ค ํ๊ฒฝ์ด๋๊น ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋ ๊ป ๊ตณ์ด ์ฌ์ฉํ ํ์ ์๊ณ , ์นผ๋ฆฌ์ฝ๋ ์๋ชจ๋ฆ ๋๋ค ใ ใ
์๋ ๋ช ๋ น์ด๋ฅผ ๋ง์คํฐ ๋ ธ๋์์ ์คํํด์ค๋๋ค. weaveworks์์ ์ ๊ณตํด์ฃผ๋ yaml์ ์ค์นํด์ค๋๋ค.
$ kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
์๋ ๋ช ๋ น์ด๋ฅผ ํตํด ์ ์ค์น๋์๋์ง ํ์ธํด๋ด ๋๋ค.
$ kubectl get pods -n kube-system
coredns์ STATUS๊ฐ Running์ผ๋ก ๋ฐ๋์๊ณ , weave-net ํ๋๋ ์ถ๊ฐ๋๊ฑธ ํ์ธํ ์ ์์ต๋๋ค.
๋ง์คํฐ ๋ ธ๋์ ์ํ ํ์ธํ๊ธฐ(๋ง์คํฐ ๋ ธ๋๋ง)
์ด์ ๋ง์คํฐ ๋ ธ๋์ STATUS๊ฐ Ready๊ฐ ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
์ด๋ ๊ฒ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์ ๋์ฅ์ธ ๋ง์คํฐ ๋ ธ๋๋ฅผ kubeadm์ ์ด์ฉํ์ฌ ์ค์นํ์์ต๋๋ค.
๋ง์คํฐ ๋ ธ๋์ ์์ปค ๋ ธ๋ ์ถ๊ฐํด์ฃผ๊ธฐ(์์ปค ๋ ธ๋๋ง)
์ด์ ๋ง์คํฐ ๋ ธ๋๋ ์ค์นํ์ผ๋ ์์ปค ๋ ธ๋ ๋ํ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์ ์ถ๊ฐํด์ฃผ๊ฒ ์ต๋๋ค. kubeadm init ํ์ ๋ kubeadm join ~ ์ ์ด๋์๋ผ๊ณ ํ๋๋ฐ ๊ธฐ์ต ๋์๋์?
์์ปค ๋ ธ๋๋ก ์ฌ์ฉํ ๊ฐ์ ๋จธ์ ์ ์ด๋ํ ํ ๋ช ๋ น์ด ์ ๋ ฅ๋ง ํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
kubeadm join 10.150.90.69:6443 --token aksljd.alksjdklasjdklajskld \
--discovery-token-ca-cert-hash sha256:askljdaklsjdlkajslkdhasulfghalkjla
์ด๋ ๋ฐ๋์ ์์ปค ๋ ธ๋์ ๊ฐ์ ๋จธ์ ๊ณผ ๋ง์คํฐ ๋ ธ๋์ ๊ฐ์ ๋จธ์ ๊ณผ ํต์ ์ด ๋์ด์ผ ํฉ๋๋ค.
์ด๋ฏธ์ง์ฒ๋ผ ํฐ๋ฏธ๋์ ๋ฌธ๊ตฌ๊ฐ ๋์ค๋ฉด ์ ๋๋ก ์ค์น ๋ ๊ฒ์ ๋๋ค.
๋ง์ฝ ์๋ฌ๊ฐ ๋๋ค๋ฉด ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์
์์ปค ๋ ธ๋๊ฐ ์ ์ค์น๋์๋์ง ํ์ธํ๊ธฐ(๋ง์คํฐ ๋ ธ๋์์๋ง)
$ kubectl get nodes
์์ปค ๋ ธ๋(node-1)์ STATUS๊ฐ Ready ๋๊ธฐ๊น์ง๋ 5๋ถ์ ๋ ๊ฑธ๋ฆฝ๋๋ค.
์ด๋ ๊ฒ ์์ปค ๋ ธ๋๋ ์ ๊ตฌ์ถ๋์์ต๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๊ฐ ์ ๊ตฌ์ถ๋์๋์ง ํ์ธํ๊ธฐ(๋ง์คํฐ ๋ ธ๋์ ์์ปค ๋ ธ๋์์)
๊ฐ๋จํ nginx.yaml ํ์ผ์ ๋ง๋ค์ด์ ํ ์คํธ ํด๋ณด๊ฒ ์ต๋๋ค.
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2 # tells deployment to run 2 pods matching the template
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
์ ์ฝ๋๋ฅผ ๋ณต์ฌ ํ ํ vi ์๋ํฐ๋ฅผ ํตํด ์์ฑํด์ค๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐฐํฌํด์ค๋๋ค.
$ vi ~/nginx.yaml
$ kubectl apply -f ~/nginx.yaml
๋ชจ๋ ํ๋๊ฐ ์ ์์ ์ผ๋ก ์๋ํฉ๋๋ค.
๊ทธ๋ฌ๋ฉด ์์ปค ๋ ธ๋์์ ์๋น์ค๋ก ํต์ ์ ๋ณด๋ด ๋ณด๊ฒ ์ต๋๋ค.
์์ฃผ ์๋ฉ๋๋ค!!
์ด๋ ๊ฒ ์จํ๋ ๋ฏธ์ค ํ๊ฒฝ์์ kubeadm์ผ๋ก ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ถํด๋ณด์์ต๋๋ค.
ํ์๋ค๊ฐ ์๋๋๊ฒ ์์ผ์๋ฉด ์ธ์ ๋ ์ง ์ง๋ฌธํด์ฃผ์ธ์ :)