raspberry pi - deptno/deptno.github.io GitHub Wiki

raspberry pi

kubernetes setup

kubespray ๋กœ ์‹œ๊ฐ„ ๋งŽ์ด ๋‚ ๋ฆผ kubeadm ์œผ๋กœ ์„ฑ๊ณต ha ๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๊ณ  k3s ๋Œ€์‹  k8s ๋ฅผ ์„ ํƒํ–ˆ์œผ๋‚˜ api-server ์ž์ฒด๊ฐ€ load balancer ๋ฅผ ํ•„์š”๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ƒฅ ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉ

kubeadm

os: Ubuntu Server 22.04.1 LTS (64-bit) - Server OS with long-term support for RPi

  • ๊ณตํ†ต
cgroup="$(head -n1 /boot/firmware/cmdline.txt) cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1 swapaccount=1"
echo $cgroup | sudo tee /boot/firmware/cmdline.txt

sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
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
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

# off swap
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo swapoff -a

# containerd
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=arm64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

sudo apt update
sudo apt install -y containerd.io

sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml

# ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ
sudo rm /etc/containerd/config.toml
sudo systemctl restart containerd

sudo sysctl --system
sudo systemctl restart containerd

cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

# lsmod ๊ฒฝ์šฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ modprobe
lsmod | grep overlay
lsmod | grep br_netfilter
sudo modprobe overlay
sudo modprobe br_netfilter

cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

sudo sysctl --system
sudo systemctl restart containerd
  • master node (control plane)
sudo kubeadm config images pull
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 

init ์˜ ๊ฒฐ๊ณผ๋กœ ๋‚˜์˜ค๋Š” ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•ด์„œ ~/.kube/config ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด kubectl ์‚ฌ์šฉ๊ฐ€๋Šฅ

  • worker node init ์˜ ๊ฒฐ๊ณผ๋กœ ์•„๋ž˜ ํ˜•์‹์˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ณต๋ถ™ํ•˜์—ฌ ์‹คํ–‰
sudo kubeadm join 192.168.0.74:6443 --token [token] [--node-name name_default:hostname]
  • x86 ์˜ ๊ฒฝ์šฐ containerd ๊ฐ€ ์„ค์น˜๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ # containerd ๋ถ€๋ถ„์„ ์•„๋ž˜๋กœ ๋Œ€์‹ ํ•œ๋‹ค
# x86
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

error

kubeadm ์ฐธ์กฐ

link