در این مقاله به مراحل نصب کلاستر kubernetes از طریق kubeadm و calico میپردازیم.
پیش نیازها
منابع سخت افزاری :
در این آموزش شما به حداقل دو node ورکر و یک node مستر با منابع ۲ گیگ رم و ۲ cpu نیازمندیم.
منابع نرم افزاری :
اطمینان حاصل فرمایید از توزیع لینوکسی استفاده نمایید که kubernetes را support نماید که در این آموزش ما از سیستم عامل ubuntu استفاده میکنیم.
شبکه:
تمامی node ها دسترسی به اینترنت و ارتباط با یکدیگر را با یک شبکه قابل اعتماد داشته باشند.
نصب کلاستر کوبرنتیز
تنظیم Hostnames
sudo nano /etc/hosts
10.0.0.2 master-node
10.0.0.3 worker-node1
10.0.0.4 worker-node2
غیرفعال سازی swap
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
ست کردن ipv4 bridge روی تمامی node ها
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
پارامترهای sysctl را بدون راه اندازی مجدد اعمال میکنیم.
sudo sysctl --system
اضافه کردن ریپو Containerd
در این آموزش ما کلاستر کوبرنتیز را با containerd راه اندازی میکنیم.
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
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" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
نصب و کانفیگ containerd
sudo apt-get install containerd.io
sudo mkdir /etc/containerd
sudo sh -c "containerd config default > /etc/containerd/config.toml"
بعد از ایجاد فایل config.toml آنرا با استفاده از یک ویرایشگر باز نموده و “SystemdCgroup” را به true تغییر میدهیم.
sudo sed -i 's/ SystemdCgroup = false/ SystemdCgroup = true/' /etc/containerd/config.toml
sudo systemctl restart containerd.service
sudo systemctl enable containerd.service
در این مرحله سرویس contianerd نصب و راه اندازی شد
اضافه کردن ریپو k8s
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
نصب kubelet, kubeadm, kubectl
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
sudo systemctl enable --now kubelet
راه اندازی اولیه kubeadm
بر روی node مستر دستورات زیر را اجرا میکنیم.
sudo kubeadm config images pull
sudo kubeadm init --pod-network-cidr=10.10.0.0/16
ممکن است در نصب ایمیج ها بامشکل مواجه شوید که ترجیحا از dns های شکن و ۴۰۳ برای گذر از تحریم استفاده نمایید.
اضافه کردن کانفیگ ها به User’s Directory
در این مرحله روی سرور مستر دستورات زیر را اعمال میکنیم:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
اکنون کاربر امکان ارتباط با کلاستر کوبرنتیز را قادر خواهد بود.
تنظیم شبکه Calico
بعد از نصب و راه اندازی kubeadm نیاز داریم تا شبکه کلاستر را جهت ارتباط بین node ها تنظیم کنیم.
curl https://docs.projectcalico.org/manifests/calico.yaml -O
kubectl apply -f calico.yaml
kubectl get events --namespace kube-system
پس از اینکه calico در حالت running قرار گرفت به مرحله بعدی میرویم.
اتصال node های worker
پس از نصب و راه اندازی کلاستر کوبرنتیز بر روی node مستر یه token جهت ارتباط node های worker دریافت میکنیم که کافیست روی node های worker اعمال کنیم.
kubeadm join 10.0.0.2:6443 --token ndi3ae.ujwfcuais8zm2cyn --discovery-token-ca-cert-hash sha256:fc6c1094159833bf95a3fcb7d49960026e4ddad56f8648b94240cd1c867b2f6b
بررسی وضعیت کلاستر
پس از join شدن node ها جهت وضعیت کلاستر دستورات زیر را جهت مشاهده و خطایابی بر روی node مستر میزنیم:
kubectl get nodes
kubectl get pods -A
پیروز و سربلند باشید.