ابزار Kubernetes یک پلتفرم متن‌باز برای مدیریت تکنولوژی‌های کانتینر مانند Docker محسوب می‌شود. Docker امکان ساخت کانتینر برای ایمیج‌های از پیش تنظیم شده و اپلیکیشن‌ها را فراهم می‌کند. Kubernetes در مرحله‌ای فراتر، به شما اجازه می‌دهد که بار را بین کانتینرها تنظیم کنید و چند کانتینر را بین چند سیستم اجرا نمایید.

در این آموزش، نحوه نصب ابزار Kubernetes در اوبونتو 18.04 را بررسی خواهیم کرد. با ما همراه باشید.

پیش‌نیازها

  • دو یا چند سرور لینوکس که در آنها اوبونتو 04 نصب شده باشد.
  • دسترسی به حساب کاربر در هر دو سیستم با مجوّز sudo یا روت.
  • داشتن ابزار مدیریت بسته apt به صورت پیش‌فرض
  • خط فرمان یا پنجره ترمینال (کلیدهای Ctrl-Alt-T)

مراحل نصب ابزار Kubernetes در اوبونتو

تنظیم Docker

گام ۱) نصب Docker

Kubernetes نیازمند یک نسخه نصب‌شده از Docker است. اگر در حال حاضر، یک نصب از Docker در سیستم خود دارید، می‌توانید از این مرحله گذر کنید.

اگر ابزار Docker را نصب  نکرده‌اید، می‌توانید به ترتیب زیر این کار را انجام دهید.

۱) بروزرسانی لیست بسته‌ها با استفاده از فرمان زیر


sudo apt-get update

بروزرسانی لیست بسته‌ها برای آماده‌سازی نصب ابزار Kubernetes

بروزرسانی لیست بسته‌ها

۲) نصب Docker با استفاده از فرمان زیر صورت می‌گیرد.


sudo apt-get install docker.io

۳) این کار را در هر سروری که به عنوان یک نقطه یا node عمل می‌کند، انجام دهید.

۴) با کمک فرمان زیر، نصب و نسخه Docker را بررسی کنید.


docker ––version

گام ۲) اجرا و فعال‌سازی Docker

۱) با وارد کردن این فرمان، Docker را به گونه‌ای تنظیم کنید که پس از هر بار راه‌اندازی سیستم، اجرا شود.


sudo systemctl enable docker

۲) از اجرا شدن Docker مطمئن شوید.


sudo systemctl status docker

در صورتی که Docker اجرا نبود، می‌توانید از فرمان زیر کمک بگیرید.


sudo systemctl start docker

۴) این کار را در سایر نقاط نیز تکرار کنید.

نصب ابزار Kubernetes

گام ۳) اضافه کردن کلید امضای Kubernetes

به دلیل دریافت ابزار Kubernetes از یک منبع غیر استاندارد، ابتدا باید مطمئن شوید که نرم‌افزار معتبر است. چنین کاری با استفاده از اضافه‌کردن یک «کلید امضا» صورت می‌گیرد.

۱) فرمان زیر را به منظور اضافه‌کردن کلید امضا وارد کنید.


curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add

در صورت که با پیغام خطای مبنی بر عدم نصب curl روبرو شدید، آن را با فرمان زیر نصب کنید.


sudo apt-get install curl

۲) سپس فرمان قبل را برای نصب کلیدهای امضا در هر کدام از نقاط تکرار کنید.

گام ۴) اضافه‌کردن منابع نرم‌افزار

Kubernetes در منابع پیش‌فرض وجود ندارد و باید آن را به روش زیر اضافه کرد.


sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"

این کار را در سایر نقاط سرور نیز تکرار کنید.

گام ۵) ابزار‌های نصب Kubernetes

Kubeadm یا Kubernetes Admin ابزاری است که به ساخت یک «کلاستر» کمک می‌کند.  این ابزار با کمک بهترین روش‌هایی که توسط انجمن‌های کاربری ارائه می‌شود، سرعت تنظیمات را به میزان قابل‌توجهی افزایش می‌دهد.  Kubelet یک بسته کاری است که در هر کدام از نقاط اجرا می‌شود و کانتینر‌ها را راه‌اندازی می‌کند. این همان ابزاری است که به شما دسترسی خط فرمان به کلاسترها را می‌دهد.

۱) نصب ابزارهای Kubernetes با استفاده از فرمان زیر:


sudo apt-get install kubeadm kubelet kubectl

sudo apt-mark hold kubeadm kubelet kubectl

اجازه دهید تا فرآیند تکمیل شود.

۲) تأیید نصب


kubeadm version

۳) این کار را برای نقاط دیگر نیز تکرار کنید.

نکته: حتماً دقت کنید که در هر کدام از سیستم‌ها، نسخه‌های یکسانی از بسته نصب کرده باشید. استفاده از نسخه‌های متفاوت می‌تواند باعث ناپایداری سرور شود. همچنین این موضوع باعث می‌شود که apt نتواند به صورت اتوماتیک ابزار Kubernetes را بروزرسانی کند.

به‌کارگیری Kubernetes

گام ۶) آغاز به‌کارگیری Kubernetes

کار را با غیرفعال‌کردن حافظه swap در هر کدام از سرورها شروع می‌کنیم.


sudo swapoff –a

گام ۷) اختصاص عنوان هاست یکتا برای هر کدام از نقاط سرور

در اینجا باید مشخص کنید که کدام سرور به عنوان نقطه مستر یا اصلی است. سپس فرمان زیر را وارد کنید.


sudo hostnamectl set-hostname master-node

سپس با کمک فرمان زیر، نقطه سرور «ورکر» را تنظیم کنید.


sudo hostnamectl set-hostname worker01

اگر نقاط ورکر بیشتری داشتید، این فرآیند را برای اختصاص یک نام هاست منحصر به فرد برای هر کدام از آنها انجام دهید.

گام ۸) آماده‌سازی ابزار Kubernetes در نقطه مستر

به نقطه سرور مستر بروید و فرمان زیر را وارد کنید.


sudo kubeadm init --pod-network-cidr=10.244.0.0/16

وقتی اجرای این فرمان به پایان می‌رسد، یک پیغام عضویت kubeadm برایتان نمایش داده می‌شود. کل این پیغام را در جایی یادداشت کنید؛ چرا که برای الحاق نقاط ورکر به کلاستر استفاده خواهد شد.

حالا با فرمان‌های زیر، یک دایرکتوری برای کلاستر بسازید.


kubernetes-master:~$ mkdir -p $HOME/.kube

kubernetes-master:~$ sudo cp -I /etc/kubernetes/admin.conf $HOME/.kube/config

kubernetes-master:~$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

گام ۹) استفاده از شبکه Pod برای کلاستر

شبکه Pod روشی برای مجوّز به ارتباط بین نقاط مختلف در کلاستر است. در اینجا از شبکه مجازی flannel برای این منظور استفاده می‌کنیم. بر این اساس، فرمان زیر را وارد کنید.


sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

اندکی صبر کنید تا فرآیند تکمیل شود.

با کمک فرمان زیر، از اجرا و داشتن ارتباط تمام اجزا مطمئن شوید.


kubectl get pods --all-namespaces

گام ۱۰) اتصال نقطه ورکر به کلاستر

همان‌طور که در گام هفتم گفته شد، می‌توانید فرمان عضویت kubeadm را برای هر کدام از نقاط ورکر برای اتصال آن به کلاستر استفاده کنید.

بر این اساس، به سیستم worker01 سوئیچ کنید و فرمانی را که در گام ۷ یادداشت کرده بودید، یادداشت کنید.


kubeadm join --discovery-token abcdef.1234567890abcdef --discovery-token-ca-cert-hash sha256:1234..cdef 1.2.3.4:6443

حتماً کدهای مشکل از حرف و عدد را با نمونه‌هایی که از سرور مستر دریافت کرده‌اید، جایگزین کنید. این کار را باید برای سایر نقاط ورکر کلاستر نیز انجام دهید. پس از چند دقیقه، امکان بررسی وضعیت نقاط برایتان وجود خواهد داشت.

برای این منظور به سرور مستر بروید و فرمان زیر را تایپ کنید.


kubectl get nodes

در نتیجه، سیستم نقاط ورکری را که به کلاستر ملحق کرده‌اید، نشان خواهد داد.

جمع‌بندی

بعد از انجام دقیق مراحلی که در بالا گفته شد، می‌توانید بگویید که ابزار Kubernetes را در اوبونتو نصب کرده‌اید. در همین حال، باید گفت که تازه‌کاران و کسانی که هنوز هیچ تجربه در کار با کانتینرهای چندگانه ندارند، می‌توانند در ابتدا ابزار Minikube را نیز امتحان کنند. Minikube سیستمی برای اجرای یک کلاستر تک‌نقطه‌ای به صورت لوکال است و برای یادگیری مفاهیم اساسی قبل از استفاده از Kubernetes بسیار مفید خواهد بود.