AWS Settings - yeardream-de-project-team4/k8s_project GitHub Wiki

๋ชจ๋“  ๋…ธ๋“œ ๊ณตํ†ต

# ๋ชจ๋“  ๋…ธ๋“œ ๋™์ผํ•œ ssh public key ์‚ฌ์šฉ
ssh-keygen -t rsa
cat >> ~/.ssh/authorized_keys < ~/.ssh/id_rsa.pub

# docker ์„ค์น˜
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

sudo usermod -aG docker $USER

# ๋ธŒ๋ฆฟ์ง€ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•œ ํŠธ๋ž˜ํ”ฝ์ด iptables ๊ทœ์น™์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋˜๋„๋กํ•จ
sudo modprobe br_netfilter
sudo sysctl net.bridge.bridge-nf-call-iptables=1

# ์ปค๋„์ด ์ฒ˜๋ฆฌํ•˜๋Š” ํŒจํ‚ท์„ ์™ธ๋ถ€๋กœ ํฌ์›Œ๋”ฉ(IP forwarding)๊ฐ€๋Šฅ
sudo sysctl net.ipv4.ip_forward=1

sudo vim /etc/sysctl.conf
# ์•„๋ž˜ ๋‘ ์ค„ ์ถ”๊ฐ€
# net.bridge.bridge-nf-call-iptables = 1
# net.ipv4.ip_forward = 1

sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml > /dev/null

sudo vim /etc/containerd/config.toml
# SystemdCgroup = true ์„ค์ •

sudo systemctl restart containerd
sudo systemctl enable containerd

# active (running) ์ฒดํฌ
sudo systemctl status containerd

# ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์„ค์น˜
sudo apt-get update

sudo apt-get install -y apt-transport-https ca-certificates curl

sudo mkdir -p /etc/apt/keyrings

echo "deb [signed-by=/etc/apt/keyrings/kubernetes.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes.gpg

sudo apt-get update
sudo apt-get install -y kubelet=1.25.6-00 kubeadm=1.25.6-00 kubectl=1.25.6-00
sudo apt-mark hold kubelet kubeadm kubectl

# ์„ค์น˜ํ™•์ธ
sudo -i
kubelet --version
kubeadm version
kubectl version --output=yaml

# ์—ฌ๊ธฐ์„œ AMI ๋กœ ์Šค๋ƒ…์ƒท

๋ณด์•ˆ๊ทธ๋ฃน ์„ค์ •

์ธ๋ฐ”์šด๋“œ ๊ทœ์น™

์œ ํ˜•: SSH
์†Œ์Šค: ๋‚ด IP
์„ค๋ช…: ์ธ์Šคํ„ด์Šค์— ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•ด 22๋ฒˆ ํฌํŠธ ๊ฐœ๋ฐฉ
์œ ํ˜•: ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ
์†Œ์Šค: ํ˜„์žฌ ๋ณด์•ˆ๊ทธ๋ฃน
์„ค๋ช…: ์ธ์Šคํ„ด์Šค๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•ด ๋ณด์•ˆ๊ทธ๋ฃน๋‚ด ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ ๊ฐœ๋ฐฉ

๋งˆ์Šคํ„ฐ ๋…ธ๋“œ

# root ๊ณ„์ •์œผ๋กœ ์ง„ํ–‰, ํ˜„์žฌ root ๊ณ„์ •์ด ์•„๋‹ˆ๋ผ๋ฉด sudo -i ๋กœ root ๊ณ„์ •์œผ๋กœ ์ง„์ž…

# ํ˜ธ์ŠคํŠธ์ด๋ฆ„ ์„ค์ •
sudo hostnamectl set-hostname [๋งˆ์Šคํ„ฐ ๋…ธ๋“œ ์ด๋ฆ„]

# ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ ์„ค์ •
kubeadm config images pull --cri-socket /run/containerd/containerd.sock

# ํด๋Ÿฌ์Šคํ„ฐ ์‹œ์ž‘ - [์ค‘์š”!] ์‹คํ–‰ ํ›„ ๋‚˜์˜ค๋Š” ํด๋Ÿฌ์Šคํ„ฐ join ๋ฉ”์„ธ์ง€ ๋”ฐ๋กœ ์ €์žฅ (kubeadm join ~~)
kubeadm init --apiserver-advertise-address=[๋งˆ์Šคํ„ฐ๋…ธ๋“œ private ip] --pod-network-cidr=192.168.0.0/16 --cri-socket /run/containerd/containerd.sock

# ์—๋Ÿฌ๋ฐœ์ƒ์‹œ ์•„๋ž˜ ๋‘ ๋ช…๋ น์–ด ์‹คํ–‰ ํ›„ ๋‹ค์‹œ ์‹œ๋„
# sudo modprobe br_netfilter
# sudo sysctl net.bridge.bridge-nf-call-iptables=1

# root ๊ณ„์ •์—์„œ ๋‚˜์˜ด
exit

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

# calico ์„ค์น˜
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/tigera-operator.yaml
curl https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/custom-resources.yaml -O
kubectl create -f custom-resources.yaml

# ๋ชจ๋“  pod ์˜ STATUS๊ฐ€ running ์ด ๋ ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ. ์ดํ›„ control + c ๋กœ exit
watch kubectl get pods -n calico-system

# ๋…ธ๋“œ ํ™•์ธ
kubectl get node

# [์˜ต์…˜] ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์—๋„ pod ๋ฅผ ๋„์šธ ์ˆ˜ ์žˆ๊ฒŒ ์„ค์ •
kubectl taint nodes --all node-role.kubernetes.io/control-plane-

# <none > ์ด ์ถœ๋ ฅ๋˜์–ด์•ผํ•จ
kubectl describe node [๋งˆ์Šคํ„ฐ ๋…ธ๋“œ ์ด๋ฆ„] | grep Taints

# helm ์„ค์น˜
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh

์›Œ์ปค ๋…ธ๋“œ

# ํ˜ธ์ŠคํŠธ์ด๋ฆ„ ์„ค์ •
sudo hostnamectl set-hostname [์›Œ์ปค ๋…ธ๋“œ ์ด๋ฆ„]

# ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค config ์„ค์ •
mkdir -p $HOME/.kube
scp -p ๋งˆ์Šคํ„ฐ๋…ธ๋“œ์œ ์ €@๋งˆ์Šคํ„ฐ๋…ธ๋“œip:~/.kube/config ~/.kube/config

# root ๊ณ„์ • ์ง„์ž…
sudo -i

# ๋”ฐ๋กœ ์ €์žฅํ•ด๋‘์—ˆ๋˜ kubeadm join ~ ๋ช…๋ น์–ด ์‹คํ–‰
kubeadm join ~~~

# ์—๋Ÿฌ๋ฐœ์ƒ์‹œ ์•„๋ž˜ ๋‘ ๋ช…๋ น์–ด ์‹คํ–‰ ํ›„ ๋‹ค์‹œ ์‹œ๋„
# sudo modprobe br_netfilter
# sudo sysctl net.bridge.bridge-nf-call-iptables=1

# ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์—์„œ kubectl get node ๋กœ ๋…ธ๋“œ ์ถ”๊ฐ€ ํ™•์ธ
โš ๏ธ **GitHub.com Fallback** โš ๏ธ