behnam.hasanbeygi
behnam.hasanbeygi
خواندن ۴ دقیقه·۴ سال پیش

راه اندازی cluser kubernetes در Docker

سلام خسته نباشید

سال نو رو به همه تون تبریک میگم(زمانی که این مقاله رو می نویسم عید سال ۱۴۰۰ هستش)

راه اندازی یک کلاستر kubernetes شاید برای خیلی ها مشکل باشه تو این مقاله سعی کردم به سریع ترین حالت ممکن این کار رو به شما نشون بدم!

توجه : این کلاستر صرفا برای یادگیری kubernetes است و اصلا برای محیط production توصیه نمی شود!

نیازمندی ها:

من روی ubuntu 18:04 هستم ولی شما میتونید از بقیه سیستم عامل های که وجود داره استفاده کنید

نصب Docker

نصب زبان go

نصب کامند kind

یک اینترنت قوی چون که image که دانلود میشه حداقل ۱.۱۷ گیگ حجمش:(

خب مستقیما میریم سر اصل مطلب اول شما باید Docker نصب کنید چون این مقاله راجب این موضوع نیست فقط به این بسنده میکنیم که لینک های مربوط به نصب Docker رو برای شما قرار میدیم بر اساس مراحل داخل سایت خود Docker پیش برید مطمنا میتونید این کار رو انجام بدید:)

https://docs.docker.com/engine/install/

از بین لیستی که وجود داره میتونید سیستم عامل مورد نظر خودتون رو پیدا کنید و شروع به نصب کنید به طور مثال سیستم عامل من ubuntu 18:04 برای همین من ubuntu رو انتخاب میکنم و ادامه مراحل رو پیش میرم

بعد از نصب Docker نوبت به نصب زبان Go میرسه

زبان برنامه نویسی Go رو میتونید از لینک زیر دانلود کنید حالا برای هر سیستم عاملی که مورد نظر شماست

https://golang.org/doc/install

باز هم تاکید میکنم بر اساس اینکه من دارم از لینوکس استفاده میکنم مراحل نصب لینوکس رو پیش می گیرم!

فایل tar زبانGo رو دانلود میکنم سپس تو /usr/local انتقالش میدم بدین شکل

sudo tar xzvf go1.16.2.linux-amd64.tar.gz sudo mv go /usr/local

و بعدش باید PATH این کامند رو به shell لینوکس خودم معرفی کنم تا بتونه از اون استفاده کنه!

export PATH=$PATH:/usr/local/go/bin

و بعد از این کار اگر command

which go

رو اجر کنم باید خروجی

/usr/local/go/bin/go

بدین شکل رو ببینم!

خب تا این قسمت ما هم Docker نصب کردیم و هم زبان Go!

مرحله بعد اجرای کامندی به اسم kind !

به ادرس GitHub kubernetes-sigs/kind میریم و بقیه مراحل رو از اونجام انجام میدیم!

https://github.com/kubernetes-sigs/kind

تو این قسمت README رو با دقت بخونید یک ساختار به خصوص توضیح داده برای نصب کامند Kind


If you have go (1.11+) and docker installed GO111MODULE="on" go get sigs.k8s.io/kind@v0.10.0



کامند زیر باید اجرا کنید

GO111MODULE="on" go get sigs.k8s.io/kind@v0.10.0

تو این قسمت گفته که اگر ورژن go شما بالاتر از ۱.۱۱ و Docker رو هم اگر نصب کردید همه چیز اوکی و اون کامند رو اگر اجرا کنید یک دایرکتوری رو برای شما دانلود میکنه و در همون دایرکتوری که قرار دارید جایگذاری میکنه مثلا اگر شما در home خودتون هستید بعد از دانلود کامل پکیج و ها و فایل ها یک دایرکتوری رو میتونید ببینید به اسم go

داخل دایرکتوری go دو تا ساب دایرکتوری میتونی ببینی به اسم bin and pkg برای اجرای کامند kind مثل زمانی که برای go اومدی PATH رو export کردی باز باید این کار رو انجام بدی مثلا من دایرکتوری رو در home خودم دانلود کردم پس به این صورت میشه

/home/behnam/go


export PATH=$PATH:/home/behnam/go/bin

و به این کار PATH مربوط به کامند kind رو به shell خودم export میکنم و بعد از اجرای

which kind

باید خروجی زیر رو ببینم

/home/behnam/go/bin/kind

و حالا که همه مراحل طی شد از قدرت کامند kind استفاده میکنم برای ایجاد کلاسترم!

با زدن کامند رو به رو میتونم یک cluster تک node که master هستش رو ایجاد کنم!

kind create cluster

و باید صبر کنید تا image رو دانلود کنه بعد از دانلود کردن و تموم شدن مراحل شما یک kubernetes تک node دارید

کامند kubectl رو نصب کنید

https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/

بعد از نصب kubectl با کامند رو به رو میتونید cluster رو خودتون نگاه کنید

kubectl cluster-info

kubectl get nodes -o wide

kubectl get pods -A

حالا شما میخوایید یک کلاستر بسازید که یک master و چندین worker داشته باشه!

برای همین باید شما config مربوط به چیزی که میخوایید رو به کامند kind بدید که بتونه براتون یک کلاستر سه master و سه worker تحویل بده!

کلاستر قبلی که ساخته بودید رو پاک کنید

kind delete cluster

به URL زیر برید اونجا config های متنوعی میبیند که من یکی از config ها رو به صورتی اختصاصی خودم تغییر دادم و براتون اینجام قرار میدم!

https://kind.sigs.k8s.io/docs/user/configuration/

یک فایل به اسم kind-config.yaml تشکیل بدید و این config رو اونجام قرار بدید !



kind: Cluster

apiVersion: kind.x-k8s.io/v1alpha4

nodes:

- role: control-plane

- role: control-plane

- role: control-plane

- role: worker

- role: worker

- role: worker

https://virgool.io/p/xiehfjgzlp8q/edit#
https://virgool.io/p/xiehfjgzlp8q/edit#Whilethesewillnotaddmorerealcomputecapacityand
https://virgool.io/p/xiehfjgzlp8q/edit#havelimitedisolation,thiscanbeusefulfortesting
https://virgool.io/p/xiehfjgzlp8q/edit#rollingupdatesetc.
https://virgool.io/p/xiehfjgzlp8q/edit#
https://virgool.io/p/xiehfjgzlp8q/edit#TheAPI-serverandothercontrolplanecomponentswillbe
https://virgool.io/p/xiehfjgzlp8q/edit#onthecontrol-planenode.
https://virgool.io/p/xiehfjgzlp8q/edit#
https://virgool.io/p/xiehfjgzlp8q/edit#Youprobablydon'tneedthisunlessyouaretestingKubernetesitself.

خب باید این config رو به کامند kind بدید با سویچ --config

kind create cluster --config kind-config.yaml

با این حرکت شما یه کلاستر سه master و سه worker خواهید داشت

دقت کنید این کلاستر برای حالت Development و یادگیری هستش و اصلا برای production توصیه نمیشه !


kubernetesdockerkindgolinux
MLOps and data science @ AIFA team
شاید از این پست‌ها خوشتان بیاید