سلام خسته نباشید
سال نو رو به همه تون تبریک میگم(زمانی که این مقاله رو می نویسم عید سال ۱۴۰۰ هستش)
راه اندازی یک کلاستر 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
خب باید این config رو به کامند kind بدید با سویچ --config
kind create cluster --config kind-config.yaml
با این حرکت شما یه کلاستر سه master و سه worker خواهید داشت
دقت کنید این کلاستر برای حالت Development و یادگیری هستش و اصلا برای production توصیه نمیشه !