احمد رفیعی
احمد رفیعی
خواندن ۱۶ دقیقه·۲ ماه پیش

کوبر سینگل ( قسمت دوم )

توی قسمت دوم از مسیر کوبرنتیز بعد از بررسی kubectl میریم به سراغ ابزارهایی که با اونها می‌تونیم یه کوبرنتز دمه‌دستی! ستاپ کنیم که بتونیم باهاش تمرین کنیم.


خب یه مروری کنیم پست‌های قبلی رو:

توصیه می‌کنم که حتما این پست‌ها رو هم مطالعه کنید. بریم که ادامه بدیم.

بررسی Kubectl :

Kubectl
Kubectl


ابزار کامندلاین کوبرنتیز kubectl هست که بهمون این امکان رو میده تا کامندهامون رو روی کلاستر کوبرنتیز اجرا کنیم. از kubectl میتونیم برای دیپلوی کردن اپلیکیشن‌ها و مدیریت منابع‌مون و بررسی لاگ‌ها‌ و ... استفاده کنیم. اینجا میتونید بیشتر در موردش بخونید.

توصیه میکنم برای اینکه راحت‌تر بتونید با کامندلاین کوبر کار کنید مواردیکه توی قسمت kubectl ریپو دواپس سرتیفیکیشن گذاشتم گیتهاب رو دنبال کنید و ازشون استفاده کنید تا راحت‌تر بتونید با کوبر کار کنید. در ادامه یه توضیح کوتاه در مورد یکی دوتا از مواردیکه کار با کامندلاین رو راحت تر میکنن براتون میذارم. این موارد به نظرم خیلی برای کار با کوبرنتیز به دردتون می‌خوره و کاملا کاربردی هست که خوبه حتما ازش استفاده کنید.

ابزار kubectx:

اگر شما هم مثل من چندتا کلاستر kubernetes دارید که هر کدوم داره کاری انجام می‌ده و لازم دارید به راحتی بین اون‌ها جابه‌جا بشید، این ابزار خیلی بهتون کمک می‌کنه. با استفاده از این ابزار می‌تونید به راحتی بین کلاسترهای خود جابه‌جا بشید و کانتکس مربوط به kubectl را خیلی راحت تغییر دهید.

kubectx demo
kubectx demo

ابزار kubens:

و برای جابه‌جایی بین namespaceهای مختلف این ابزار به شما کمک می‌کند. باهاش به راحتی می‌تونید بین namespaceهای کوبرنتیز جابه جا بشید.

kubens demo
kubens demo

بررسی kubeconfig:

kubeconfig
kubeconfig

کیوب کانفیگ فایلی هست که توی اون ما دیتای مربوط به کلاسترها، یوزرمون و namespaceها رو نگهداری می‌کنیم همچینین اطلاعات مربوط به مکانیزم آتنتیکیشن‌مون به کلاسترها رو. کامندلاین کوبر با استفاده از این فایل کانفیگ اطلاعاتی رو که برای برقراری ارتباط با API Server نیاز داره رو پیدا میکنه. به عبارت دیگه تو این کانفیگ مشخص می‌کنیم که endpoint ارتباطی ما با هر کلاستر و کاربرمون و نحوه‌ی احراض هویت اون به چه صورت است. از روی این کانفیگ می‌تونیم متوجه بشیم که به کدوم کلاستر چطوری می‌تونیم متصل بشیم.

به صورت پیش فرض فایل کانفیگ کوبر رو در دایرکتوری kube. یوزری که باهاش کار می‌کنیم نگهداری می‌کنیم. با استفاده از متغیر محیطی KUBECONFIG و فلگ kubeconfig -- هم میشه این فایل رو تعیین کرد.

kubeconfig path
kubeconfig path

هر فایل کیوب‌کانفیگ از چند قسمت کلی تشکیل میشه:

  • clusters

توی این قسمت لیست همه کلاسترهایی که بهشون اکسس داریم رو قرار میدیم. هر کلاستر شامل جزئیاتی از قبیل URL مربوط به API Server اون کلاستر (endpoint)، سرتیفیکیت متناظر با اون کلاستر و یک اسم برای مشخص کردن کلاستر میشه.

  • users

توی این قسمت هر یوزر با یک اسم مشخص به همراه دیتای مربوط به آتنتیکیشن که مثلا میتونه یه کلاینت سرتیفیکیت باشه مشخص می‌شود. موارد دیگه مثل bearer tokens و authenticating proxy توی این قسمت قرار میگیرن.

  • context

یکی از بخش‌های فایل کانفیگ کوبرنتیز context هست که برای تبدیل دسترسی به یک اسم ازش استفاده می‌کنیم. هر context از جمع شدن سه تا پارامتر درست میشه، چه کلاستری ... چه نیم‌اسپیسی ... چه یوزری ... اینا میشن یه context که کامندلاین کوبر بر اساس اونا با کلاستر ارتباط می‌گیره و با کامند kubectl config use-context میتونیم به کانتکست موردنظرمون جابجا شیم.

  • current context

همونطور که از اسمش هم مشخصه کانتکستی که الان توش هستیم رو نشون میده.

kubeconfig file
kubeconfig file


کلاستر سینگل نود:

حتما شما هم زیاد اسم کوبرنتیز رو شنیدید و کم و بیش می‌دونید چی هست و قراره چه کارهایی برامون انجام بده. اما نکته‌ی مهمی که هست، برای یادگیری نیاز داریم که یه آزمایشگاه برای خودمون داشته باشیم تا تمام موارد رو اونجا بررسی کنیم. به خاطر همین قبل از این که شروع کنیم در مورد کوبرنتیز صحبت کنیم نحوه راه‌اندازی اون با کمترین منابع رو بررسی می‌کنیم. به راحتی و با کمترین هزینه آزمایشگاه کوبرنتیز خودتون رو راه‌اندازی کنید. در این مستند برای سیستم‌عامل‌های مختلف راه‌حل ارائه می‌شود.

من قبلا توی دوره‌های دواپس شروع می‌کردم و مطالب مربوط به کوبرنتیز رو آموزش می‌دادم و میگفتم و میرفتیم جلو تا اینکه اون آخرا می‌رسیدیم به نصب و ستاپ کلاستر و ... تازه اونجا بچه‌ها شروع می‌کردن کامند زدن و دست به کیبورد شدن، که متوجه شدم این مدلی بچه‌ها نمی‌تونن خیلی‌ خوب مطالب رو فالو کنن و برای اینکه از همون اول همراه مطالب بتونن تمرین کنن و دست به کیبورد بشن این قسمت رو اضافه کردم. این طوری از همون ابتدا یه کلاستر مینیمال کوبرنتیز دارند که طی دوره تمام مواردی که یاد می‌گیرند رو می‌تونن روی اون تست و بررسی کنند. خود کوبرنتیز برای تست‌های خودش از همین راهکارها استفاده می‌کنه.

قبل از اینکه شروع کنیم سه تا نکته مهم:

نکته‌ی اول: برای اینکه راحت کارتون پیش بره چون تمام لینک‌ها و کارهایی که داریم انجام می‌دهیم تحریم است بهتره که کلا از اول یا پروکسی تنظیم کنید یا از یکی از روش‌های که توی پست های قبل گفتیم، استفاده کنید.

نکته‌ی دوم: هر کدوم از روش‌ها رو شما انتخاب کنید به دستور kubectl نیاز دارید و باید این دستورالعمل رو داخل کامپیوتر خودتون نصب کنید که به دلیل استفاده در این مستند، بالاتر توضیحش دادم.

نکته‌ی سوم: اگر دارید روی لپ‌تاپ و یا کامپیوتر کاری خودتون نصب می‌کنید، خوبه که مستقیم این کار رو انجام ندید و روی یک vm آن را نصب کنید. ابزارهای مختلفی وجود دارد که به شما این امکان را می‌دهد که داخل سیستم‌عامل خود VM داشته باشید که از ساده‌ترین اون‌ها می‌تونم به VirtualBox اشاره کنم که از اینجا می‌توانید آن را دانلود کنید. البته امکان این رو هم دارید که مستقیم روی سیستم خودتون داشته باشید. هر طوری راحت‌تر هستید که مدیریتش کنید عمل کنید.

استفاده از ارائه کننده‌های سرویس کوبرنتیز:

معمولا یکی از راحت‌ترین و سریع‌ترین راه‌حل‌های موجود، استفاده از ارائه‌کننده‌های Cloud می‌باشد که سرویس‌هایی همانند کوبرنتیز را ارائه می‌کنند که این راه برای ما داخل ایران هم بسیار هزینه‌بر بوده (با توجه به نسبت ارزهای دیگه به پول ما) و هم امکانش به راحتی فراهم نیست زیرا از سمت کمپانی‌های ارائه کننده‌ی خدمات کلاد سرویس این امکانات برای ایران محدود و مسدود شده است.

بریم با هم یه معرفی داشته باشیم روی چنتا ابزاری که با استفاده از اونا می‌تونیم یه کلاستر سینگل نود داشته باشیم.

minikube :

minikube
minikube

مینی‌کیوب یک کوبرنتیز لوکال هست که میتونیم ازش برای یادگیری کار با کوبرنتیز و توسعه اپلیکیشن روی اون استفاده کرد. برای استفاده از مینی کیوب تنها نیازه که داکر رو نصب داشته باشید ( و البته بتونید ایمیجش رو هم بگیرید اگه توی ایران هستید ) و یا اینکه یه ماشین مجازی داشته باشید و خیلی ساده با یه کامند minikube start میتونید کار رو شروع کنید. داکرم الزامی نیست هرکدوم از لیست زیر باشه هم اوکیه:

Docker, QEMU, Hyperkit, Hyper-V, KVM, Parallels, Podman, VirtualBox, or VMware Fusion/Workstation

حداقل به 2Core CPU و 2GB ram و 20GB دیسک نیازه برای راه‌اندازی مینی کیوب نیاز داریم و همچنین اینترنت!
شما می‌تونید نسخه‌ی آخر minikube رو بر اساس سیستم‌عامل خود از اینجا دریافت و برای نصب آن نیز از اینجا استفاده کنید.

مینی کیوب یه ابزار خوب و کاربردی برای شماست که بتونید با استفاده از آن کار با کوبرنتیز رو تمرین کنید. کلی امکاناتی که تو کوبرنتیز نیاز داریم رو به خوبی برای ما فراهم می‌کنه و در اختیارمون قرار می‌ده. کار کردن باهاش خیلی راحت و دم دستی هست و به خوبی می‌تونید ازش استفاده کنید تا یک کوبرنتیز لوکال داشته باشید.

kind :

kind
kind

سرویس kind به شما این امکان را می‌دهد که بر روی داکر، کوبرنتیز داشته باشید و برای تست به راحتی آن را راه‌اندازی کنید. تصویری که به عنوان لوگو داره استفاده می‌کنه هم خیلی قشنگ و کامل هست و به همین موضوع که کوبرنتیز رو داره تو یه کانتینر به شما می‌ده اشاره می‌کنه.

برای استفاده ابتدا نیاز است که شما داکر را بر روی ماشین خود نصب داشته باشید. اینجا تفاوتی ندارد که شما از چه سیستم‌عاملی استفاده می‌کنید و یا اینکه داکر را به چه صورت روی ماشین خود نصب کرده‌اید.

بعد از نصب داکر، نسخه‌ی آخر kind رو از اینجا دریافت کنید. برای نصب طبق سیستم‌عامل خود مطابق دستورات عمل کنید.

حالا بعد از نصب kind می‌توانید با استفاده از دستور زیر یک کلاستر kubernetes برای خودتون ایجاد کنید.

kind create cluster --name DockerMe

در تصویر زیر نتیجه‌ی دستور بالا را مشاهده می‌کنید.

kind create cluster
kind create cluster

همواره بعد از ایجاد کلاستر، کانفیگ مربوط به kubectl را نیز خودش انجام می‌دهد و دستور kubectl شما به کلاستر kind متصل خواهد شد. با دستور زیر می‌توانید ببینید که در حال حاضر kubectl شما به کدام کلاستر متصل می‌باشد.

kubectl config current-context

با استفاده از دستور زیر می‌توانید نودهای داخل کلاستر خود را مشاهده کنید و podهایی که دارد را بررسی کنید.

kubectl get nodes kubectl get po -A
https://virgool.io/d/yqfdm1fnwryh/%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF%DA%A9%D9%84%D8%A7%D8%B3%D8%AA%D8%B1multi-nodes:%D8%A8%D8%A7kind%D8%A7%DB%8C%D9%86%D9%82%D8%A7%D8%A8%D9%84%DB%8C%D8%AA%D9%88%D8%AC%D9%88%D8%AF%D8%AF%D8%A7%D8%B1%D9%87%DA%A9%D9%87%D8%B4%D9%85%D8%A7%D8%A8%D8%AA%D9%88%D9%86%DB%8C%D8%AF%DB%8C%DA%A9multi-nodes%DA%A9%D9%84%D8%A7%D8%B3%D8%AA%D8%B1%DA%A9%D8%A7%D9%85%D9%84%DA%A9%D9%87%D8%B4%D8%A7%D9%85%D9%84%DB%B3%D8%AA%D8%A7%D9%86%D9%88%D8%AFmaster%D9%88%DB%B3%D8%AA%D8%A7%D9%86%D9%88%D8%AFworker%D8%A8%D8%A7%D8%B4%D8%AF%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF%DA%A9%D9%86%DB%8C%D8%AF.%D8%A7%DB%8C%D9%86%D8%AE%DB%8C%D9%84%DB%8C%D8%AE%D9%88%D8%A8%D9%87%DA%A9%D9%87%D8%A8%D8%AA%D9%88%D9%86%DB%8C%D8%AF%DB%8C%DA%A9%DA%A9%D9%84%D8%A7%D8%B3%D8%AA%D8%B1multimaster%D8%B1%D9%88%DB%8C%DB%8C%DA%A9%D9%85%D8%A7%D8%B4%DB%8C%D9%86%D8%A8%D8%B1%D8%A7%DB%8C%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D9%87%E2%80%8C%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C%DA%A9%D9%86%DB%8C%D8%AF%D9%88%D8%AF%D8%A7%D8%B4%D8%AA%D9%87%D8%A8%D8%A7%D8%B4%DB%8C%D8%AF.%D8%A8%D8%B1%D8%A7%DB%8C%D8%A7%DB%8C%D9%86%DA%A9%D8%A7%D8%B1%D9%86%DB%8C%D8%A7%D8%B2%D8%AF%D8%A7%D8%B1%DB%8C%D8%AF%DA%A9%D9%87%DB%8C%DA%A9%DA%A9%D8%A7%D9%86%D9%81%DB%8C%DA%AF%D9%81%D8%A7%DB%8C%D9%84%D8%A8%D8%B1%D8%A7%DB%8C%D8%A2%D9%86%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF%DA%A9%D9%86%DB%8C%D8%AF%D8%9B%DB%8C%DA%A9%D9%81%D8%A7%DB%8C%D9%84%D9%87%D9%85%D8%A7%D9%86%D9%86%D8%AF%D9%81%D8%A7%DB%8C%D9%84%D8%B2%DB%8C%D8%B1%DA%A9%D9%87%D8%AF%D8%A7%D8%AE%D9%84%D8%A2%D9%86%D9%86%D9%82%D8%B4%D9%88%D8%AA%D8%B9%D8%AF%D8%A7%D8%AF%D9%86%D9%88%D8%AF%D9%87%D8%A7%D8%B1%D8%A7%D9%85%D8%B4%D8%AE%D8%B5%DA%A9%D8%B1%D8%AF%DB%8C%D8%AF.
vim my-cluster-config.yaml kind: Cluster apiVersion: kind.sigs.k8s.io/v1alpha3 nodes: - role: control-plane - role: control-plane - role: control-plane - role: worker - role: worker - role: worker

بعد از ایجاد فایل بالا، با استفاده از دستور زیر از روی آن می‌توانید کلاستر خود را ایجاد کنید.

kind create cluster --name DockerMe-Cluster --config my-cluster-config.yaml

با kind دوست باشید و ازش استفاده کنید. به راحتی برای شما کلاستر kubernetes آماده می‌کنه و می‌تونید تمام تست‌های خود را روی آن انجام دهید. خود کوبرنتیز تو تست‌های e2e خودش از kind استفاده می‌کنه و فانکشن جدیدش رو با این سرویس تست و بررسی می‌کنه. راستی kind یعنی kubernetes in docker که خیلی به مفهومی که داره ازش استافده می‌کنه اشاره می‌کنه. این طوری هر نود کلاستر کوبرنتیز رو داخل یک کانتینر ایجاد می‌کنه و ازش استفاده می‌کنه.

MicroK8S :

microk8s
microk8s

این ابزار که توسط شرکت Canonical (شرکت ارائه دهنده‌ی سیستم‌عامل ubuntu و کلی ابزار مفید و خفن دیگه) ارائه می‌شود، می‌خواهد به ما کمک کند که با سرعت زیاد و بسیار سبک بتونیم یک نسخه kubernetes برای خودمان داشته باشیم. تمرکز این ابزار بر سبک‌ بودن و سادگی ارائه kubernetes می‌باشد.

از هر سیستم‌عاملی که استفاده کنید microk8s یه راه‌حل خوب برای شما می‌باشد و حتی می‌تونید با استفاده از آن کلاسترهای پروداکشن ردی هم ایجاد کنید و ازش استفاده کنید.

اگر از ویندوز استفاده می‌کنید می‌توانید از اینجا آن را دانلود و نصب کنید. اینجا هم می‌تونید داکیومنت نصب روی ویندوز و مک این ابزار را بررسی کنید.

در لینوکس هم با استفاده از ابزار snap می‌توانید به راحتی همانند دستور زیر آن را نصب کنید.

sudo snap install microk8s --classic --channel=1.18/stable
microk8s install
microk8s install

برای اینکه لیستی از channelها که نسخه‌های نصبی شما می‌باشد را بدست بیاورید می‌توانید از این دستور استفاده کنید.

snap info microk8s

بعد از نصب می‌توانید بررسی کنید که وضعیت آن به چه صورت می‌باشد.

microk8s status microk8s status --wait-ready

آپشن wait-ready برای بررسی وضعیت کلاستر kubernetes می‌باشد و تا زمانی که وضعیت آن آماده‌ به کار باشد صبر می‌کند. اگر دستور بالا زیاد طول کشید، برای اینکه بدونید در چه وضعیتی می‌باشد می‌توانید از دستور زیر استفاده کنید که جزئیات بیشتری را در اختیار شما قرار می‌دهد.

microk8s inspect

با استفاده از این دستور می‌توان نودهای کلاستر نصب شده را بررسی کرد.

microk8s kubectl get nodes microk8s kubectl get services microk8s kubectl get po -A

برای اینکه بتوانید از دستور kubectl خود سیستم استفاده کنید می‌بایست آن را کانفیگ کنید تا از کانفیگ مربوط به microk8s استفاده کند از این رو ابتدا کانفیگ فایل مربوطه را ایجاد و سپس از آن استفاده می‌کنیم.

microk8s.config > microk8s.yaml export KUBECONFIG=$PWD/microk8s.yaml kubectl config current-context

حالا می‌توانیم با دستور kubectl موارد این کلاستر را بررسی کنیم.

kubectl get nodes kubectl get po -A

با استفاده از دستور زیر می‌توانیم یک دیولویمنت روی kubernetes جدید خود داشته باشیم.

kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1

حالا اگر لیست podهای خود را بررسی کنید می‌توانید آن را مشاهده کنید.

kubectl get po -A
https://virgool.io/d/yqfdm1fnwryh/%F0%9F%93%B7
k3s
k3s

این ابزار به ما کمک می‌کنه که یک kubernetes خیلی سبک برای استفاده در iot و Edge computing داشته باشیم. این ابزار توسط کمپانی Rancher ارائه شده است که خوب بسیار سبک و کاربردی است. صفحه‌ی اول سایت rancher نشان می‌ده که این شرکت تمرکزش روی چی هست و داره چی‌ کار می‌کنه.

https://www.youtube.com/watch?v=nRVBNkcr4eM&t=112s

نحوه‌ی عملکرد k3s در تصویر زیر مشخص می‌باشد.

How it Works k3s
How it Works k3s

نصب این ابزار خیلی ساده است و کافیه که شما اسکریپت زیر را اجرا کنید تا بر روی ماشین شما نصب و پیکربندی شود.

curl -sfL https://get.k3s.io | sh -

با استفاده از دستور زیر می‌توانید لیست نودهای آن را بررسی کنید.

sudo k3s kubectl get node sudo k3s kubectl get po -A

کانفیگ مربوط به k3s نیز در مسیر زیر قرار دارد و می‌توانید دستور kubectl خود را کانفیگ کنید تا از آن استفاده کند.

vim /etc/rancher/k3s/k3s.yaml cat /etc/rancher/k3s/k3s.yaml > k3s.yaml export KUBECONFIG=$PWD/k3s.yaml kubectl config current-context

حال دیگه می‌تونید با دستور kubectl ماشین خودتون هم با کلاستر صحبت کنید.

kubectl get node kubectl get po -A

این ابزار رو جدی بگیرید می‌تونید باهاش کلاستر با تعداد نودها‌ی مختلف هم راه‌اندازی کنید. برای این کار نیاز دارید که به تعداد نودهای خود ماشین مجازی داشته باشید.

K3d :

k3d
k3d

بالاتر گفتیم برای اینکه بتونیم k3s را به صورت کلاستر تست کنیم، نیاز داریم که چند تا ماشین داشته باشیم. حالا تیم rancher ابزاری را ارائه کرده است که بتوان k3s را داخل یک کانتینر داشت و با استفاده از آن می‌توان کلاستر با استفاده از k3s را بر روی یک ماشین پیاده‌سازی و تست کرد. دقیقا شبیه kind با این تفاوت که کلاستر داخل کانتینر که راه‌اندازی می‌کنه با استفاده از k3s است و از اون داره استفاده می‌کنه.

نیاز‌مندی این ابزار این است که داکر روی ماشین شما نصب باشد. برای نصب داکر می‌تونید از قسمت‌ اول و دوم این مستند استفاده کنید که نحوه‌ی نصب آن به صورت ویدئو توضیح داده شده است.

برای نصب k3d از اسکریپت زیر استفاده می‌شود. به همین راحتی k3s نصب شد.

curl -s https://raw.githubusercontent.com/rancher/k3d/master/install.sh | bash

بعد از نصب دستور k3d می‌توانیم با استفاده از دستور زیر یک کلاستر با ۳ تا worker بر روی داکر راه‌اندازی کنیم.

k3d create --workers 3 --name DockerMe-k3d
k3d setup cluster
k3d setup cluster

در انتهای راه‌اندازی کلاستر دستور مربوط به کانفیگ kubectl رو در اختیار شما قرار می‌دهد. پس همان دستور رو بزنید و بعد با استفاده از kubectl کلاستر را بررسی کنید.

export KUBECONFIG=&quot$(k3d get-kubeconfig --name='DockerMe-k3d')&quot kubectl config current-context kubectl cluster-info kubectl get node kubectl get po -A

بعد از نصب می‌توانید با دستور docker ps مشاهده کنید که چند تا کانتینر و هر کدام با چه نقشی ایجاد شده‌اند و اگر لازم بود کلاستر خود را گسترش دهید.

k3d cluster
k3d cluster


بسیار خب این میشه قدم دوم‌مون در مسیر کوبرنتیز، تو پست‌های بعدی میریم به سراغ این ابزار و با جزئیات بیشتر باهاش آشنا میشیم.

مراقب خودتون باشید. 🌹🐳🌹


با ما متخصص شوید
با ما متخصص شوید

خوبه که داکرمی رو تو جاهای مختلف فالو کنید. پذیرای نظرات شما هستیم.

🫀 Follow DockerMe 🫀

🔔 Follow YouTube 🔔

📣 Follow Instagram 📣

🖇 Follow LinkedIn DockerMe🖇

🔎 Follow Linkedin Ahmad Rafiee 🔎

🕊 Follow Twitter 🕊

کوبرنتیزkubernetesdevops
مشاور زیرساخت. موسس سایت آموزشی DockerMe.ir
شاید از این پست‌ها خوشتان بیاید