نصب کلاستر کوبرنتیز

در این مقاله به مراحل نصب کلاستر 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

پیروز و سربلند باشید.

https://kubernetes.io