راه اندازی 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/goexport 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-infokubectl 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: ClusterapiVersion: kind.x-k8s.io/v1alpha4nodes:- 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 بدید با سویچ --configkind create cluster --config kind-config.yamlبا این حرکت شما یه کلاستر سه master و سه worker خواهید داشتدقت کنید این کلاستر برای حالت Development و یادگیری هستش و اصلا برای production توصیه نمیشه !