در این بخش قصد دارم تا نحوه نصب کوبرنتیز را آموزش بدم. برای نصب کوبرنتیز مراحل زیر را در یک ترمینال با دسترسی root اجرا کنید.
apt-get install -y apt-transport-https ca-certificates curl
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
apt update && apt install -y kubelet kubeadm kubectl
از آنجایی که نسخه های نصب شده kubelet، kubectl و kubeadm باید با هم سازگار باشند، در صورتی که بخواهید از آپدیت ناخواسته آنها جلوگیری کنید میتوانید از دستور زیر استفاده کنید.
sudo apt-mark hold kubelet kubeadm kubectl
در این مرحله کوبرنتیز نصب شده است. طراحی کلاستری که قرار است آن را پیاده سازی کنیم شامل دو نود مستر، سه نود کلاینت و یک نود به عنوان storage است.
قبل از شروع به هر کاری برای ماشین ها hostname تنظیم کنید. به عنوان مثال برای نودهای مستر master1 و master2 تنظیم کنید، و برای نودهای کلاینت node1 و node2 و node3، و برای نود ذخیره سازی storage را تنظیم کنید. پس از تنظیم hostnameها در تمام نودها آی پی نودهای مستر را در etc/hosts/ تمام ماشین ها از جمله نودهای مستر تنظیم کنید. در اینجا آی پی ماشین ها به شرح زیر است.
master1 192.168.68.152
master2 192.168.68.153
node1 192.168.68.154
node2 192.168.68.155
node3 192.168.68.156
storage 192.168.68.157
حالا نیاز است تا نود مستر راه اندازی شود. برای شروع به کار نود مستر دستور زیر را در ماشین master1 اجرا کنید.
MASTER_IP=$(hostname -I | awk '{print $1}')
MASTER_HOSTNAME=$(hostname -s)
sudo kubeadm init --apiserver-advertise-address $MASTER_IP \
--pod-network-cidr=10.244.0.0/16 \
--control-plane-endpoint "$MASTER_HOSTNAME:6443" \
--upload-certs
پس از اجرای این دستور چنین خروجی دریافت خواهید کرد.
حال دستورات زیر را در ماشین master1 تحت یوزر اصلی (غیر root) اجرا کنید.
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
توجه داشته باشید که سرتیفیک های تولید شده در ماشین شما با آنچه در بالا مشاهده میکنید متفاوت خواهد بود. لذا از آنچه در بالا می بینید استفاده نکنید.
حال در ماشین master2 دستور زیر را اجرا کنید.
kubeadm join master1:6443 --token <token> \
--discovery-token-ca-cert-hash <certificate hash> \
--control-plane --certificate-key <certificate hash>
پس از اجرای دستور بالا در ماشین master2 دستورات زیر را در یوزر غیر root اجرا کنید.
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
در سایر نودهای node1 و node2 و node3 دستور زیر را اجرا کنید.
kubeadm join master1:6443 --token <token> \
--discovery-token-ca-cert-hash <certificate hash>
توجه داشته باشید که اگر تنظیمات آی پی که در بالا ذکر شد انجام نشود، دستورات بالا با خطا مواجه میشود.
به منظور فعال سازی قابلیت تکمیل خودکار دستورات bash، میتوانید دو دستور زیر را در ماشین master1 و master2 تحت یوزری غیر root اجرا کنید.
echo "source <(kubectl completion bash)" >> ~/.bashrc
echo "source <(kubeadm completion bash)" >> ~/.bashrc
source ~/.bashrc
دستور زیر را در نود master1 اجرا کنید تا وضعیت کلاستر ایجاده شده را مشاهده کنید.
kubectl get nodes
در این مرحله راه اندازی کلاستر کوبرنتیز به اتمام رسیده است. در پست بعدی نحوه راه اندازی نود storage و نحوه ذخیره سازی داده در آن آموزش داده خواهد شد.