[์ฟ ๋ฒ๋คํฐ์ค ์ค์ ] ์ฟ ๋ฒ๋คํฐ์ค ์ค์ต ํ๊ฒฝ์ ๊ตฌ์ฑํ๋ ์ฝ๋
1. Vagrant ๊ฐ ํธ์ถํ ์ฝ๋

์ด์ ์๊ฐ์ Vagrant๋ฅผ ํตํด์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์๋ํ ๊ตฌ์ถ์ ํ๋ค.
์ด๋ฒ ์๊ฐ์๋ Vagrant up์ผ๋ก ์คํ๋๋ ์ฝ๋๋ค์ ์ดํด ๋ณผ ์์ ์ด๋ค.
2. ํธ์ถ๋ ์ฝ๋ ๊ตฌ์กฐ

- Controlplane_node.sh
- ์ฟ ๋ฒ๋คํฐ์ค ์ปจํธ๋กค ํ๋ ์ธ ๋
ธ๋๋ฅผ ๊ตฌ์ฑํ๋ ์คํฌ๋ฆฝํธ์ด๋ค.
- kubeadm init
- API Server / Controller Manager / Scheduler ์ด๊ธฐํ
- kubectl ์ฌ์ฉ ์ค์
- Pod Network ์ค์น ์ค๋น
- ์์ ํํ์ผ๋ก๋ "๋ง์คํฐ ๋ ธ๋ ์ค์ ์คํฌ๋ฆฝํธ"๋ผ๊ณ ๋ณผ ์ ์๋ค.
- ์ฟ ๋ฒ๋คํฐ์ค ์ปจํธ๋กค ํ๋ ์ธ ๋
ธ๋๋ฅผ ๊ตฌ์ฑํ๋ ์คํฌ๋ฆฝํธ์ด๋ค.
- k8s_env_build.sh
- ์ฟ ๋ฒ๋คํฐ์ค ์ค์น ์ ์ ๊ณตํต ํ๊ฒฝ์ ์ธํ
ํ๋ ์คํฌ๋ฆฝํธ์ด๋ค.
- hostname ์ค์
- hosts ํ์ผ ์์
- swap ๋นํ์ฑํ
- ๋ธ๋ฆฌ์ง ๋คํธ์ํฌ ๊ด๋ จ ์ปค๋ ์ต์ ์ค์
- ๋ฐฉํ๋ฒฝ / SELinux ์กฐ์
- ํ์ํ ๊ธฐ๋ณธ ๋๊ตฌ ์ค์น
- ์ฆ, ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์ ์ ๋์ํ ์ ์๊ฒ OS ํ๊ฒฝ์ ๋จผ์ ์ ๋ฆฌํ๋ ์ญํ ์ด๋ค.
- ์ฟ ๋ฒ๋คํฐ์ค ์ค์น ์ ์ ๊ณตํต ํ๊ฒฝ์ ์ธํ
ํ๋ ์คํฌ๋ฆฝํธ์ด๋ค.
- k8s_pkg_cfg.sh
- ์ฟ ๋ฒ๋คํฐ์ค ๊ด๋ จ ํจํค์ง ์ค์น์ ์ค์ ์ ๋ด๋นํ๋ ์คํฌ๋ฆฝํธ์ด๋ค.
- containerd / Docker ๊ฐ์ ์ปจํ ์ด๋ ๋ฐํ์ ์ค์น
- kublet, kubeadm, kubectl ์ค์น
- ์ ์ฅ์ (repo) ๋ฑ๋ก
- ์๋น์ค enalbe / start
- cgroup driver ๊ฐ์ ๋ฐํ์ ์ค์
- ์ฝ๊ฒ ๋งํ๋ฉด ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ค์ ๋ก ๊น์์ฃผ๋ ๋จ๊ณ์ด๋ค.
- ์ฟ ๋ฒ๋คํฐ์ค ๊ด๋ จ ํจํค์ง ์ค์น์ ์ค์ ์ ๋ด๋นํ๋ ์คํฌ๋ฆฝํธ์ด๋ค.
- worker_node.sh
- ์ฟ ๋ฒ๋คํฐ์ค ์์ปค ๋
ธ๋ ๊ตฌ์ฑ ์คํฌ๋ฆฝํธ์ด๋ค.
- ์ปจํธ๋กคํ๋ ์ธ์์ ์์ฑํ kubeadm join ๋ช ๋ น ์คํ
- ์์ปค ๋ ธ๋๋ฅผ ํด๋ฌ์คํฐ์ ๊ฐ์
- ํ์ํ ๋ฐํ์ / ์์ด์ ํธ ์ค์ ์ ํ๋ค.
- ์ฟ ๋ฒ๋คํฐ์ค ์์ปค ๋
ธ๋ ๊ตฌ์ฑ ์คํฌ๋ฆฝํธ์ด๋ค.
- Vagrantfile
- Vagrant ํ๊ฒฝ์ ๋ฉ์ธ ์ค์ ํ์ผ์ด๋ค. ์ด ํ์ผ์ด ์ฌ์ค์ ์ ์ฒด ๊ฐ์๋จธ์ ๊ตฌ์ฑ์ ์ด๊ดํ๋ค.
- VM ๊ฐ์
- ๊ฐ VM ์ด๋ฆ
- CPU / Memory
- ๋คํธ์ํฌ IP
- ๋ฐ์ค(Box) ์ด๋ฏธ์ง
- provisioning ์ ์ด๋ค .sh ํ์ผ์ ์คํํ ์ง๋ฅผ ์ ์
- ์ฆ, ์ฌ๊ธฐ์๋ control plane 1๋ + worker node n๋๋ฅผ ์๋์ผ๋ก ๋ง๋ค๊ฒ ํด์ฃผ๋ ํต์ฌ ํ์ผ์ด๋ค.
- Vagrant ํ๊ฒฝ์ ๋ฉ์ธ ์ค์ ํ์ผ์ด๋ค. ์ด ํ์ผ์ด ์ฌ์ค์ ์ ์ฒด ๊ฐ์๋จธ์ ๊ตฌ์ฑ์ ์ด๊ดํ๋ค.
3. ์ฝ๋ ๋ด์ฉ ํํค์ณ ๋ณด๊ธฐ
Vagrantfile
1. Vagrantfile - ์ค๋ฒํธ: 1 - 10

- vi: set ft=ruby : ์ด ํ์ผ์ด Ruby ๋ฌธ๋ฒ ํ์ผ์ด๋ผ๋ ๊ฑธ ์๋ ค์ฃผ๋ ์ค์ ์ด๋ค. Vagrantfile์ ๋ด๋ถ์ ์ผ๋ก Ruby DSL ์ด๋ผ์ ๋ฌธ๋ฒ ํ์ด๋ผํ ์ฉ์
- N=3 : ์์ปค ๋
ธ๋ ๊ฐ์
- (1..N).each do | i |
- k8v_V : ์ค์นํ ์ฟ ๋ฒ๋คํฐ์ค ๋ฒ์ ์ด๋ค. kubeadm / kubelet / kubectl ์ค์นํ ๋ ์ฌ์ฉ๋จ
- 1.35.0 : ์ฟ ๋ฒ๋คํฐ์ค ๋ฒ์
- -1.1 : ํจํค์ง ๋ฆด๋ฆฌ์ฆ ๋ฒ์ (apt repo ๊ธฐ์ค)
- ctrd_V : containerd ๋ฒ์ ์ด๋ค. (์ฟ ๋ฒ๋คํฐ์ค์์ ์ฌ์ฉํ๋ ์ปจํ
์ด๋ ๋ฐํ์)
- 2.2.1 : containerd ๋ฒ์
- ubuntu.22.04~jammy : Ubuntu Jammy์ฉ ํจํค์ง
2. Vagrantfile - ์ค๋ฒํธ: 12 - 35

์ ์ฒด ์์ ๋ฐ ์ปจํธ๋กค ํ๋ ์ธ VM ์ ์
- Vagrant.configure("2") do |config| : Vagrant ์ค์ ์์์ด๊ณ DSL(Domain Specific Language) ๋ฒ์ ์ด "2" ๋ผ๋ ์๋ฏธ
- config.vm.define "cp-k8s-#{k8s_V[0..5]}" do |cfg| : ์ฟ ๋ฒ๋คํฐ์ค ๋ฒ์ ๊ธฐ๋ฐ์ผ๋ก VM ์ด๋ฆ ์๋ ์์ฑ. ๋์ค์ ์ฌ๋ฌ ํ๊ฒฝ ๋๋ฆด ๋ ๊ตฌ๋ถ ํธํจ
- |cfg| : ์ด VM์ ๋ํ ์ค์ ์ ๋ฃ๋ ๊ณต๊ฐ
OS ์ด๋ฏธ์ง
- cfg.vm.box = "sysnet4admin/Ubuntu-k8s" : ์ฌ์ฉํ VM ์ด๋ฏธ์ง
VirtualBox ๋ฆฌ์์ค ์ค์
- cfg.vm.provider "virtualbox" do |vb| : VirtualBox๋ก ์คํํ ๋ ์ค์
- vb.name = "cp-k8s-#{k8s_V[0..5]}(github_SysNet4Admin)" : VirtualBox GUI์์ ๋ณด์ด๋ ์ด๋ฆ
- vb.cpus = 2
vb.memory = 2048 : ๋ฆฌ์์ค ์ ํ -> CPU: 2์ฝ์ด, RAM: ์ฝ 2GB - vb.customize ["modifyvm", :id, "--groups", "/k8s-U#{k8s_V[0..5]}-ctrd-#{ctrd_V[0..2]}(github_SysNet4Admin)"] : ์ฟ ๋ฒ๋คํฐ์ค ๋ฒ์ + containerd ๋ฒ์ ๊ธฐ์ค์ผ๋ก VM ๊ทธ๋ฃนํ. ์ด๋ ์ฌ๋ฌ ํด๋ฌ์คํฐ ๋๋ฆด ๋ ๊ด๋ฆฌ ํธํจ (์ค๋ฌด์์ ์ ์ฉ)
- cfg.vm.host_name ="cp-k8s" : VM ๋ด๋ถ hostname
- cfg.vm.network "private_network", ip:"192.168.1.10" : ํด๋ฌ์คํฐ ๋ด๋ถ ํต์ ์ฉ IP. ์ฌ๊ธฐ์๋ control plane ๋ ธ๋ ip ์ด๋ค.
- cfg.vm.network "forwarded_port", guest: 22, host: 60010, auto_correct: true, id: "ssh" : ๋ด PC์์ VM SSH ์ฐ๊ฒฐํ๋ค๋ ์๋ฏธ๋ก VM 22 ๋ฒ ํฌํธ๋ฅผ Host 60010์ผ๋ก ์ฐ๊ฒฐ
- ex) ssh vagrant@localhost -p 60010
- cfg.vm.synced_folder "../data", "/vagrant", disabled: true : ๊ธฐ๋ณธ ๊ณต์ ํด๋ ๋นํ์ฑํ. ์ฑ๋ฅ ๋ฌธ์ , ๊ถํ ๋ฌธ์ ๋ฑ ์ฟ ๋ฒ๋คํฐ์ค ์ค์ต์์๋ ๋ถํ์ํ๊ณ ์ค๋ฌด์์๋ ์ข ์ข ๋๋ค.
Provision (VM ์์ฑ ํ ์๋์ผ๋ก ์คํ๋๋ ์คํฌ๋ฆฝํธ)
- cfg.vm.provision "shell", path: "k8s_env_build.sh", args: [ N, k8s_V[0..3] ] : swap off, ์ปค๋ ์ค์ , ๋คํธ์ํฌ ์ค์ ์ ์ฃผ๋ก ํ๊ณ , args์์๋ N์ ์์ปค ๊ฐฏ์, k8s ๋ฒ์ ๋ฑ OS ํ๊ฒฝ์ ์ ํ ํ๋ค.
- cfg.vm.provision "shell", path: "k8s_pkg_cfg.sh", args: [ k8s_V, ctrd_V, "CP"] : kubeadm / kubelet ์ค์น, containerd ์ค์น, CP -> ์ปจํธ๋กค ํ๋ ์ธ์ฉ ์ค์
- ์ฌ๊ธฐ๊น์ง ํ๋ฉด ์ฟ ๋ฒ๋คํฐ์ค ์ค์น ์ค๋น ์๋ฃ ์ํ
- # cfg.vm.provision "shell", path: "controlplane_node.sh" : ์ปจํธ๋กค ํ๋ ์ธ ์ด๊ธฐํ ์คํฌ๋ฆฝํธ์ด๋ค. ํ์ฌ ์ฃผ์์ด ๋์ด ์๋๋ฐ ๋ค์ ์ง์ ์ค์ตํ๋ฉด์ ์คํํ ์์ ์ด๋ค.
- cfg.vm.provision "shell", inline: "git clone https://github.com/... /root/_Lecture_k8s_learning.kit.git" : ์ค์ต ์ฝ๋ ๋ค์ด๋ก๋ -> ์ด๊ฑฐ๋ ์๋ ๋ก์ปฌ์ ์ด๋ฏธ ์๋๋ฐ cp ์์๋ ์์ฑํ๊ธฐ ์ํด ์ถ๊ฐ๋ก clone ํจ
3. Vagrantfile - ์ค๋ฒํธ: 41 - 60

- (1..N).each do |i| : 1๋ถํฐ N๊น์ง ๋ฐ๋ณตํ๋ฉด์ VM ์์ฑ
- config.vm.define "w#{i}-k8s-#{k8s_V[0..5]}" do |cfg| : ์์ปค ๋ ธ๋ VM ์ ์
- cfg.vm.box = "sysnet4admin/Ubuntu-k8s" : OS ์ด๋ฏธ์ง
- vb.cpus = 1
vb.memory = 1024 : ์์ปค ๋ ธ๋๋ ์ฌ๋ฌ ๊ฐ ๋์ฐ๊ธฐ ๋๋ฌธ์ ๋ฆฌ์์ค ์ ์ฝ์ ์ํด cp๋ณด๋ค ์์ - cfg.vm.host_name = "w#{i}-k8s" : hostname
- cfg.vm.network "private_network", ip: "192.168.1.10#{i}" : IP ์ฃผ์ ์ค์
- host: "6010#{i}" : SSH ํฌํธ ์ค์
- k8s_env_build.sh : CP ๋ ๋์ผ
- k8s_pkg_cfg.sh ... "W" : W๋ worker ์ค์
- # cfg.vm.provision "shell", path: "worker_nodes.sh" : kubeadm join ์คํํด์ ์ปจํธ๋กค ํ๋ ์ธ์ ๋ถ๋ ๊ฑฐ์ง๋ง ์ง์ ์ค์ต์ ์ํด ์ฃผ์
k8s_env_build.sh
1. k8s_env_build.sh - ์ค ๋ฒํธ 1 - 18 (์ฟ ๋ฒ๋คํฐ์ค ์ค์น ์ค๋น ๋จ๊ณ)

- #!/usr/bin/env bash : bash๋ก ์คํํ๋ผ๋ ์๋ฏ (์คํฌ๋ฆฝํธ ์์ ์ ์ธ)
- export DEBIAN_FORNTEND=noninteractive : apt ์ค์นํ ๋ ์ฌ์ฉ์ ์ ๋ ฅ ์๊ตฌ x (yes/no ์์ด ์๋ ์งํ)
- swapoff -a : ํ์ฌ ์์คํ ์์ swap ๋ฉ๋ชจ๋ฆฌ ์ฆ์ค off
- sed -i.bak -r 's/(.+swap.+)/#\1/' /etc/fstab : ์ฌ๋ถํ ํด๋ swap ํ ์ผ์ง๊ฒ ์ฃผ์ ์ฒ๋ฆฌ ์งํ
- curl -fsSL https://pkgs.k8s.io/core:/stable:/v$2/deb/Release.key \
| sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg- ์ฟ ๋ฒ๋คํฐ์ค ํจํค์ง ์ ์ฅ์์ GPG ํค ๋ค์ด๋ก๋ + ๋ฑ๋ก
- apt๋ ํจํค์ง ์ค์นํ ๋ ์ ๋ขฐ ๊ฐ๋ฅํ ์ ์ฅ์์ธ์ง ๊ฒ์ฆํ๊ธฐ ๋๋ฌธ์ ํ์
- echo \
"deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] \
https://pkgs.k8s.io/core:/stable:/v$2/deb/ /" \
| sudo tee /etc/apt/sources.list.d/kubernetes.list- apt๊ฐ ์ฌ์ฉํ ์ฟ ๋ฒ๋คํฐ์ค ์ ์ฅ์ ๋ฑ๋ก
- ์ด ์คํฌ๋ฆฝํธ๋ apt ์๋ ๋ชจ๋ ์ค์ -> swap ์์ ์ ๊ฑฐ (k8s ํ์ ์กฐ๊ฑด) -> k8s repo GPG ํค ๋ฑ๋ก -> k8s apt ์ ์ฅ์ ๋ฑ๋ก
- ์ฆ, ์ฟ ๋ฒ๋คํฐ์ค ์ค์น ์ค๋น ๋จ๊ณ
2. k8s_env_build.sh - ์ค ๋ฒํธ 20-39 (containerd ์ค์น)

- # add docker-ce repo with containerd
curl -fsSL \
https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc- containerd๋ Docker ecosystem์์ ์ ๊ณต
- Docker ๊ณต์ repo์ GPG ํค ๋ค์ด๋ก๋
- echo \
"deb [arch=$(dpkg --print-architecture) \
signed-by=/etc/apt/keyrings/docker.asc] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" \
| tee /etc/apt/sources.list.d/docker.list > /dev/null- Docker apt ์ ์ฅ์ ๋ฑ๋ก
- # packets traversing the bridge are processed by iptables for filtering
echo 1 > /proc/sys/net/ipv4/ip_forward- IP forwarding ํ์ฑํ (์ปจํ ์ด๋ -> ์ธ๋ถ ํต์ ๊ฐ๋ฅํ๊ฒ)
- # enable br_filter for iptables
modprobe br_netfilter- ๋ธ๋ฆฟ์ง ๋คํธ์ํฌ ํธ๋ํฝ์ iptables๊ฐ ์ฒ๋ฆฌํ๋๋ก ์ค์ (์ด๊ฒ ์์ผ๋ฉด pod๊ฐ ํต์ , service routing ๋ฑ ๊นจ์ง ์ ์์)
- echo "127.0.0.1 localhost" > /etc/hosts : ๊ธฐ๋ณธ localhost ์ค์
- echo "192.168.1.10 cp-k8s" >> /etc/hosts : control-plane ๋ ธ๋ ์ ์
- for (( i=1; i<=$1; i++ )); do
echo "192.168.1.10$i wk$i-k8s" >> /etc/hosts
done- worker ๋ ธ๋๋ค์ ์๋ ์์ฑ
k8s_pkg_cfg.sh
1. k8s_pkg-cfg.sh - ์ค ๋ฒํธ 1 - 19 (ํจํค์ง ์ค์น + ์ญํ ๋ณ(NFS) ๋ถ๊ธฐ + k8s ๋ฒ์ ๊ณ ์ ์ค์น)

- apt-get update : apt๊ฐ ์ฐธ์กฐํ๋ ํจํค์ง ๋ชฉ๋ก ์ต์ ํ (k8s repo, docker repo ์ธ์ํ๊ธฐ ์ํจ)
- if [ $3 = 'CP' ]; then
apt-get install nfs-server nfs-common -y
elif [ $3 = 'W' ]; then
apt-get install nfs-common -y
fi- NFS -> Network File System ์ค์น (๋ ธ๋ ์ญํ ๋ณ ๋ถ๊ธฐ)
- NFS : ์ ์ฅ์
- nfs-server : NFS ์๋ฒ ์ญํ (๊ณต์ ํด์ฃผ๋ ์ชฝ)
- nfs-common : NFS ํด๋ผ์ด์ธํธ ๊ธฐ๋ฅ
- apt-get install -y kubelet=$1 kubectl=$1 kubeadm=$1 containerd.io=$2
- kubernetes + containerd ์ค์น
2. k8s_pkg-cfg.sh - ์ค ๋ฒํธ 21 - 33 (containerd ๊ธฐ๋ณธ ์ค์ + cgroup)

- containerd config default > /etc/containerd/config.toml
- containerd ๊ธฐ๋ณธ ์ค์ ํ์ผ ์์ฑ -> containerd์ ๋ชจ๋ ์ค์ ์ด ๋ค์ด๊ฐ๋ ํต์ฌ ํ์ผ
- ๊ธฐ๋ณธ์ ์ผ๋ก๋ ๋์ํ์ง๋ง, ์ค์ ๋ฑ์ ๋ณ๊ฒฝํ๊ธฐ ์ํด ๋ฐ๋ก ๋นผ๋์ ์ ์์
- sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
- kubelet ์ ๊ธฐ๋ณธ์ ์ผ๋ก systemd cgroup์ ์ฌ์ฉ
- ๊ทผ๋ฐ containerd ๊ธฐ๋ณธ๊ฐ์ SystemdCgroup = false ์ -> kubelet๊ณผ containerd ์ถฉ๋ ๋ฐ์
- kubelet๊ณผ containerd์ cgroup driver๋ฅผ ๋ง์ถ๋ ์์
- cat <<EOF > /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
EOF- crictl(kubectl)์ ํ์ ๋ ๋ฒจ ๋๋ฒ๊น ๋๊ตฌ ์ค์ (๋ฐํ์ ์ฐ๊ฒฐ). containerd ์์ผ ์ง์ ์ง์
- ์ฆ, crictl์ด ์ด๋ runtime ๋ถ์์ง ์๋ ค์ฃผ๋ ์ค์
- systemctl restart containerd ; systemctl enable containerd
- containerd ์ฌ์์, ๋ถํ ์ ์๋ ์คํ
- systemctl enable --now kubelet
- kubelet ์๋น์ค ํ์ฑํ + ์ฆ์ ์คํ
controlplane_node.sh
1. controlplane_node.sh - ์ค ๋ฒํธ 1 - 23

- kubeadm init \
--token 123456.1234567890123456 --token-ttl 0 \
--pod-network-cidr=172.16.0.0/16 \
--apiserver-advertise-address=192.168.1.10 \
--cri-socket=unix:///run/containerd/containerd.sock- ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ์์ฑ + ๋คํธ์ํฌ + runtime ์ฐ๊ฒฐ
- mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config- kubectl ์ด API ์๋ฒ์ ์ ๊ทผ ๊ฐ๋ฅํ๊ฒ ์ค์
- CNI_ADDR="https://raw.githubusercontent.com/.../k8s/CNI"
kubectl apply -f $CNI_ADDR/172.16_net_calico_v3.26.0.yaml- Pod ๋คํธ์ํฌ ์์ฑ (pod <-> pod ํต์ = CNI ๋ด๋น)
- kubectl completion bash > /etc/bash_completion.d/kubectl
- kubectl ๋ช ๋ น์ด ์๋์์ฑ ์ง์
- alias k='kubectl'
alias ka='kubectl apply -f'
complete -F __start_kubectl k- alias ์ค์ (ํธ์์ฑ)
2. controlplane_node.sh - ์ค ๋ฒํธ 25 - 44

- cat <<EOF > /usr/local/bin/rerepo-k8s-starter.kit
#!/usr/bin/env bash
rm -rf $HOME/_Lecture_k8s_starter_kit
git clone https://github.com/sysnet4admin/_Lecture_k8s_starter_kit.git $HOME/_Lecture_k8s_starter_kit
find $HOME/_Lecture_k8s_starter_kit -regex ".*\.\(sh\)" -exec chmod 700 {} \;
EOF
chmod 700 /usr/local/bin/rerepo-k8s-starter.kit
- ์ธ์ ๋ ์ง ๋ค์ ์คํ ๊ฐ๋ฅํ "๋ฆฌ์ ์คํฌ๋ฆฝํธ" ์์ฑ
- ์ค์ตํ๋ค ๋ณด๋ฉด ํ์ผ์ด ๊ผฌ์ด๊ฑฐ๋ ์ค๋ฅ ๋ฑ์ด ๋ฐ์ -> rerepo-k8s-starter.kit ์ฌ์ฉ์ผ๋ก ์ด๊ธฐ ์ํ ๋ณต๊ตฌ ๊ฐ๋ฅ
- git clone https://github.com/yujicai/update-kube-cert.git /tmp/update-kube-cert
chmod 755 /tmp/update-kube-cert/update-kubeadm-cert.sh
/tmp/update-kube-cert/update-kubeadm-cert.sh all --cri containerd
rm -rf /tmp/update-kube-cert
echo "Wait 30 seconds for restarting the Control-Plane Node..." ; sleep 30- ์ฟ ๋ฒ๋คํธ์ค๋ TLS ์ธ์ฆ์ ๊ธฐ๋ฐ
- kubeadm init -> ์ธ์ฆ์ ์ ํจ๊ธฐ๊ฐ ์ ํ ์์
- ์ธ์ฆ์๊ฐ ๋ง๋ฃ ๋๋ฉด API ์๋ฒ ์ ๊ทผ ๋ถ๊ฐ, ํด๋ฌ์คํฐ ์ฃฝ์
- ์ด ์คํฌ๋ฆฝํธ๋ kubeadm cert ๊ฐฑ์ ์๋ํ
worker_node.sh
1. worker_node.sh - ์ค ๋ฒํธ 1 - 5

- kubeadm join \
--token 123456.1234567890123456 \
--discovery-token-unsafe-skip-ca-verification \
192.168.1.10:6443- worker ๋ ธ๋๋ฅผ control plane์ ๋ฑ๋ก (join)
์ ์ฒด ์์ฝ
1. k8s_env_build.sh
์ญํ : ์ฟ ๋ฒ๋คํฐ์ค ์ค์น ๊ฐ๋ฅํ ์ํ๋ก OS ํ๋
- swap OFF
- /etc/fstab ์์
- k8s repo ๋ฑ๋ก
- docker repo ๋ฑ๋ก (containerd์ฉ)
- ๋คํธ์ํฌ ์ค์ (ip_forward, br_netfilter)
2. k8s_pkg_cfg.sh
์ญํ : ์ฟ ๋ฒ๋คํฐ์ค ์คํ ์์ง ์ค์น
- apt update
- kubelet / kubeadm / kubectl ์ค์น (๋ฒ์ ๊ณ ์ )
- containerd ์ค์น
- containerd config ์์ฑ
- SystemCgroup=true ์ค์
- crictl ์ค์
- ์๋น์ค ์คํ (containerd, kubelet)
3. controlplane_node.sh
์ญํ : ํด๋ฌ์คํฐ์ ๋(Control Plane) ์์ฑ
- kubeadm init
- kubectl config ์ค์
- CNI (Calico) ์ค์น
- kubectl ์๋ ์์ฑ + alias
- ์ค์ต ์ฝ๋ clone
- ์ธ์ฆ์ ๊ฐฑ์
4. worker_nodes.sh
์ญํ : ์ค์ workload ๋๋ฆฌ๋ ๋ ธ๋ ์ถ๊ฐ (์์ปค ๋ ธ๋ ํด๋ฌ์คํฐ ์ฐธ์ฌ)
- kubeadm join ์คํ
- control plane์ ๋ฑ๋ก
- kubelet ์ฐ๊ฒฐ
'์ฟ ๋ฒ๋คํฐ์ค > ์ฟ ๋ฒ๋คํฐ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [์ฟ ๋ฒ๋คํฐ์ค ์ค์ ] ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ๋ฒ (0) | 2026.05.05 |
|---|---|
| [์ฟ ๋ฒ๋คํฐ์ค ์ค์ ] ์์ฃผ ์ฐ์ด๋ kubectl ์ต์ ๋ช ๋ น์ด (0) | 2026.04.09 |
| [์ฟ ๋ฒ๋คํฐ์ค ์์] ์ฟ ๋ฒ๋คํฐ์ค ์ ๊ทธ๋ ์ด๋ ๋ฐฉ์๊ณผ ์ค๋ธ์ ํธ ๋จ์ถ์ด (0) | 2026.03.15 |
| [์ฟ ๋ฒ๋คํฐ์ค ์์] ์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ (0) | 2026.03.15 |
| [์ฟ ๋ฒ๋คํฐ์ค ์์] ์ฟ ๋ฒ๋คํฐ์ค ์ธ์ฌ์ด๋ (0) | 2026.03.15 |
๋๊ธ