راحتترین روش نصب kubernetes
مقدمه:
امروز قصد داریم تا یکی از راحتترین راههای ممکن برای ساخت یک کلاستر kubernetes را به شما توضیح دهیم.
در این روش با استفاده از یکی از سریعترین و بهترین ابزارهای نصب k8s که توسط تیم kubernetes ارائه شده است میتوانیم در سریعترین زمان ممکن یک کلاستر k8s آماده به کار داشته باشیم.
اسم این ابزار kubespray بوده و با استفاده از آن میتوانیم ابزارهای بسیار زیادی در k8s را بعد از نصب در اختیار داشته باشیم.
در ادامه به توضیح کلی kubespray میپردازیم.

ابزار Kubespray چیست؟
به تعریف کلی kubespray را میتوان ترکیبی از ابزارهای انسیبل دانست که بعد از تنظیم و اجرا کلاستر k8s مورد نظر را به ما ارائه میکند.
مزیتهای kubespray:
این روش مزیتهای بسیاری دارد، از جمله آنها میتوان سرعت، راحتی در نصب، ارائه ابزار جهت تعمیر و نگهداری کلاستر و نصب ابزارهای اولیه و پایه استفاده از k8s بعد از اتمام کار در صورتی که قبل از نصب تنظیم شده باشد، نصب شده و آماده استفاده است.
اجزای پشتیبانی شده توسط kubespray:
اجزای زیر در صورتی که قبل از نصب در داخل فایلهای تنظیمات آنرا تنظیم کرده باشید؛ بعد از نصب در دسترس خواهند بود:
هسته:
- Kubernetes
- Etcd
- Docker
- Containerd
- Cri-o
شبکه:
- cni-plugins
- Calico
- Canal
- Cilium
- Flanneld
- Kube-ovn
- Multus
- Ovn4nfv
- Weave
برنامههای اجرایی:
- Ambassador
- Cephfs-provisioner
- Rbd-provisioner
- Cert-manager
- Coredns
- Ingress-ngins
پیشنیازهای نصب kubernetes با kubespray:
حداقل پیشنیازهای مورد نیاز برای نصب kubernetes توسط kubespray به شرح زیر میباشند:
- نصب برنامههای Ansible v2.9.x و Jinja 2.11+ و python-netaddr
- نصب python-pip و python3-pip
- نصب docker v19 و docker-compose
- قابلیت پشتیبانی از IPv4 Forwarding
- کیوب اسپری را به عنوان کاربر root اجرا کنید.
حداقل پیشنیازهای سختافزاری:
- ۱.۵ گیگابایت فضای ذخیرهسازی در مستر
- ۱ گیگابایت فضای ذخیرهسازی در هر سرور
شروع به نصب:
ابتدا باید پکیجهای معرفی شده در قسمت بالا را بر روی سرور خود نصب کنید؛ بهطور مثال برای سرور ubuntu 18.04:
apt-get install --no-install-recommends -y python ca-certificates git make jq nmap curl uuid-runtime bc python3-pip python-pipحال نوبت آن است که Ansible را نصب کنیم:
apt update -y
apt install software-properties-common -y
apt-add-repository --yes --update ppa:ansible/ansible
apt install ansible -yدر این قسمت داکر را با ورژنی که مطابقت با فرآیند نصب ما دارند نصب میکنیم.
apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
apt-get update -y
apt-get install docker-ce=5:19.03.15~3-0~ubuntu-bionic docker-ce-cli=5:19.03.15~3-0~ubuntu-bionic containerd.io=1.3.9-1سرویس Docker را فعال میکنیم:
systemctl start docker
systemctl enable dockerبا دو دستور زیر ابتدا IP Forwarding را فعال کرده و سپس حافظه Swap را غیرفعال میکنیم.
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
swapoff -aبا دستور زیر یک کلید rsa میسازیم تا امکان استفاده از ssh بدون نیاز به رمز عبور را برای Ansible فراهم سازیم.
ssh-keygenو با دستور زیر کلید خود را در تمام سرورها به صورت یک به یک قرار میدهیم. ( به جای <server name> از آیپی هر سرور برای انتقال کلید به آن استفاده کنید.
ssh-copy-id root@<server name>وقتی تا به اینجا رسیدیم تقریبا پیشنیازهای نصب انجام شده و نوبت دریافت پروژه از Github میباشد.
git clone https://github.com/kubernetes-incubator/kubespray.gitو وارد پوشه kubespray به وجود آمده میشویم:
cd kubesprayدر این مرحله باید تمام پیشنیازهای باقی مانده با استفاده از دستور زیر نصب شده یا چک شوند:
sudo pip install -r requirements.txtسپس برای تنظیم کاربر مورد استفاده برای انجام فرآیند نصب kubernetes از دستور زیر استفاده میکنیم:
echo "remote_user=ubuntu" >> ansible.cfgدر این مرحله ابتدا از پوشه اصلی نصب یک رونوشت تهیه میکنیم تا در صورتی که مشکلی در تنظیمات پیشآمد بتوانیم از فایلهای دست نخورده منبع تهیه کرده و مشکل را برطرف کنیم:
cp -rfp inventory/sample inventory/prodبا دستور زیر فایل hosts.ini که در آن آدرس سرورهایی که به کلاستر اضافه میشوند نوشته میشود و از آنجا در دسترس قرار میگیرند ساخته میشود. (به جای IPهای داخل دستور از IPهای سرورهای خود استفاده کنید.)
CONFIG_FILE=inventory/prod/hosts.ini python3 contrib/inventory_builder/inventory.py 192.168.1.101 192.168.1.102 192.168.1.103 192.168.1.104بعد از استفاده از دستور بالا یک فایل با نام inventory/prod/hosts.ini ساخته میشود و این فایل بهاین صورت میباشد:
[all]
node1 ansible_host=192.168.1.101 ip=192.168.1.101
node2 ansible_host=192.168.1.102 ip=192.168.1.102
node3 ansible_host=192.168.1.103 ip=192.168.1.103
node4 ansible_host=192.168.1.104 ip=192.168.1.104
[kube-master]
node1
node2
[kube-node]
node1
node2
node3
node4
[etcd]
node1
node2
node3
[k8s-cluster:children]
kube-node
kube-master
[calico-rr]
[vault]
node1
node2
node3تا اینجا فرآیند نصب به نیمه خود رسیده است.
در این مرحله خود شما باید در داخل آدرس inventory/prod/group_vars/ و هر دو پوشه all و k8s-cluster و تمام فایلهای داخل را مطالعه کرده و با توجه به نیاز خود، فرآیند نصب را شخصیسازی کرده و ابزارهای خود را اضافه، تغییر یا غیرفعال کنید.
تنها قسمت باقی مانده از فرآیند نصب؛ دستور زیر است که ansible را فعال کرده و وارد مرحله نصب میشود؛ این مرحله تقریبا ۳۰ دقیقه تا یک ساعت (حتی بیشتر) زمان میبرد.
ansible-playbook -b -v -i inventory/prod/hosts.ini cluster.yml -vvvvدر پایان بعد از اتمام کار موفق انسیبل میتوانید با دستور زیر از صحت و سلامت کلاستر خود اطمینان حاصل فرمایید:
kubectl get nodesامیدوارم اطلاعات منتشر شده در این مقاله توانسته باشد کمکی به شما کرده باشد.
با تشکر از تیم ابر آراز که زمان لازم برای جمع آوری این مطالب را در اختیار من قرار داد.
در صورتی که نیاز به سرویس تحت پلتفرم ابری داشتید؛ میتوانید سرویسهایی با قیمت و کیفیت مناسب را از ما تهیه نمایید.
آدرس ما: arazcloud.com
مطلبی دیگر از این انتشارات
مقایسه 11 دوره مطرح سئو در ایران (در کدام دوره شرکت کنیم؟)
مطلبی دیگر از این انتشارات
آپلود پروژه React بر روی هاست
مطلبی دیگر از این انتشارات
سایت SPA یا PWA چیست؟