راحتترین روش نصب 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:
1apt-get install --no-install-recommends -y python ca-certificates git make jq nmap curl uuid-runtime bc python3-pip python-pip
حال نوبت آن است که Ansible را نصب کنیم:
1234apt update -y apt install software-properties-common -y apt-add-repository --yes --update ppa:ansible/ansible apt install ansible -y
در این قسمت داکر را با ورژنی که مطابقت با فرآیند نصب ما دارند نصب میکنیم.
12345apt 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 را فعال میکنیم:
12systemctl start docker systemctl enable docker
با دو دستور زیر ابتدا IP Forwarding را فعال کرده و سپس حافظه Swap را غیرفعال میکنیم.
12echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf swapoff -a
با دستور زیر یک کلید rsa میسازیم تا امکان استفاده از ssh بدون نیاز به رمز عبور را برای Ansible فراهم سازیم.
1ssh-keygen
و با دستور زیر کلید خود را در تمام سرورها به صورت یک به یک قرار میدهیم. ( به جای <server name> از آیپی هر سرور برای انتقال کلید به آن استفاده کنید.
1ssh-copy-id root@<server name>
وقتی تا به اینجا رسیدیم تقریبا پیشنیازهای نصب انجام شده و نوبت دریافت پروژه از Github میباشد.
1git clone https://github.com/kubernetes-incubator/kubespray.git
و وارد پوشه kubespray به وجود آمده میشویم:
1cd kubespray
در این مرحله باید تمام پیشنیازهای باقی مانده با استفاده از دستور زیر نصب شده یا چک شوند:
1sudo pip install -r requirements.txt
سپس برای تنظیم کاربر مورد استفاده برای انجام فرآیند نصب kubernetes از دستور زیر استفاده میکنیم:
1echo "remote_user=ubuntu" >> ansible.cfg
در این مرحله ابتدا از پوشه اصلی نصب یک رونوشت تهیه میکنیم تا در صورتی که مشکلی در تنظیمات پیشآمد بتوانیم از فایلهای دست نخورده منبع تهیه کرده و مشکل را برطرف کنیم:
1cp -rfp inventory/sample inventory/prod
با دستور زیر فایل hosts.ini که در آن آدرس سرورهایی که به کلاستر اضافه میشوند نوشته میشود و از آنجا در دسترس قرار میگیرند ساخته میشود. (به جای IPهای داخل دستور از IPهای سرورهای خود استفاده کنید.)
1CONFIG_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 ساخته میشود و این فایل بهاین صورت میباشد:
12345678910111213141516171819202122232425262728293031[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 را فعال کرده و وارد مرحله نصب میشود؛ این مرحله تقریبا ۳۰ دقیقه تا یک ساعت (حتی بیشتر) زمان میبرد.
1ansible-playbook -b -v -i inventory/prod/hosts.ini cluster.yml -vvvv
در پایان بعد از اتمام کار موفق انسیبل میتوانید با دستور زیر از صحت و سلامت کلاستر خود اطمینان حاصل فرمایید:
1kubectl get nodes
امیدوارم اطلاعات منتشر شده در این مقاله توانسته باشد کمکی به شما کرده باشد.
با تشکر از تیم ابر آراز که زمان لازم برای جمع آوری این مطالب را در اختیار من قرار داد.
در صورتی که نیاز به سرویس تحت پلتفرم ابری داشتید؛ میتوانید سرویسهایی با قیمت و کیفیت مناسب را از ما تهیه نمایید.
آدرس ما: arazcloud.com