MicroK8s

نحوه ایجاد یک Kubernetes Cluster با دسترسی بالا با MicroK8s


در این آموزش، نحوه ایجاد یک Kubernetes Cluster با استفاده از ویژگی MicroK8s ،HA را خواهید آموخت. به‌جای استفاده از چندین ماشین یا public cloud برای میزبانی Cluster، یاد می‌گیرید که چگونه از Multipass به عنوان پایه‌ای برای یک local cloud استفاده کنید.

Kubernetes چیست؟

Cluster های Kubernetes برنامه‌های بسته بندی شده را به روشی قابل اعتماد و مقیاس پذیر میزبانی می‌کنند. با در نظر گرفتن DevOps Kubernetes کارهای تعمیر و نگهداری مانند ارتقاء و امنیت را ساده می‌کند.

MicroK8s چیست؟

MicroK8s یک توزیع سبک Kubernetes دارای گواهینامه CNCF، برای ایستگاه‌های کاری، Cluster ها ودستگاه‌های اینترنت اشیاء است.

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

آنچه در این آموزش خواهید آموخت:
نحوه نصب Multipass برای اجرای و مدیریت ماشین‌های مجازی
نحوه استقرار نمونه‌های MicroK8s در ماشین‌های مجازی
نحوه پیوستن به node
های MicroK8s در یک خوشه Kubernetes


آنچه شما نیاز دارید:
دستگاهی با اوبونتو، ویندوز یا macOS با حداقل 8 گیگابایت رم

1. نصب Multipass

اگر از Windows یا macOS استفاده می‌کنید، می‌توانید این مرحله را نادیده بگیرید، زیرا نصب کنندگان MicroK8s Windows و macOS قبلاً Multipass را به عنوان بخشی از بسته نصب نصب کرده‌اند.

Multipass برای ایجاد یک mini-cloud مجازی در ایستگاه کاری شما استفاده می‌شود. در این آموزش، ما نمونه‌های MicroK8s را بر روی VMهای Multipass اجرا می‌کنیم تا خوشه Kubernetes خود را در یک ایستگاه کاری لینوکس ایجاد کنیم.

Multipass برای لینوکس به عنوان یک بسته snap منتشر شده است که در فروشگاه Snap موجود است. به لطف آن برای اکثر توزیع‌های اصلی لینوکس در دسترس است. پس از اجرای برنامه‌های فوری بر روی توزیع خود، نصب Multipass به آسانی به شرح زیر است:

snap install multipass

راه اندازی ماشین‌های مجازی

هنگامی که Multipass را روی دستگاه خود نصب کردید، می‌توانید از آن برای چرخاندن ماشین‌های مجازی اوبونتو استفاده کنید. در این آموزش، ما 3 ماشین مجازی برای میزبانی node های MicroK8s خود ایجاد می‌کنیم.

multipass launch -m 4Gb -n <vm-name>

اگر نام VM را با استفاده از آرگومان -n مشخص نکنید، Multipass به طور خودکار یک نام تصادفی به ماشین مجازی شما اختصاص می‌دهد. آرگومان -m مقدار مشخصی از حافظه را به ماشین مجازی شما اختصاص می‌دهد. در اینجا ، برای اطمینان از اینکه VM دارای حافظه کافی برای اجرای cluster K8s شما است، ما 4 گیگابایت اختصاص می‌دهیم.

از دستورات پوسته VM های خود استفاده کنید

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

multipass shell <vm-name>

ماشین‌های مجازی چندپایه شما از جدیدترین image اوبونتو استفاده می‌کنند. می‌توانید از این موارد برای نصب MicroK8 و ایجاد خوشه Kubernetes استفاده کنید.

MicroK8s .2 را نصب کنید

روی هر یک از VM های خود اجرا کنید:

sudo snap install microk8s --classic

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

برای نصب MicroK8s در سیستم عامل‌های دیگر (Windows ، macOS ، Raspberry Pi و غیره) اسناد MicroK8s را ببینید.

MicroK8s یک برنامه snap است و به همین دلیل، اغلب در هر نسخه از Kubernetes به روز می‌شود. برای پیروی از یک سری نسخه‌های بالادستی خاص، ممکن است در حین نصب یک کانال را انتخاب کنید. به عنوان مثال، برای دنبال کردن سری v1.19:

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

برای بررسی وضعیت Node در MicroK8s خود پس از اتمام نصب می‌توانید از موارد زیر استفاده کنید:

microk8s status --wait-ready

در صورت دریافت پیام مجوز کافی، باید از دستورات زیر برای افزودن کاربر ubuntu به گروه sudoers microk8s داخل VM استفاده کنید:

sudo usermod -a -G microk8s ubuntu
sudo chown -f -R ubuntu ~/.kube

برای تأیید تغییرات، می‌توانید از پوسته VM خارج شده و دوباره وارد شوید.

3. یک Cluster چندگره MicroK8s ایجاد کنید

اکنون اجازه دهید روی ایجاد cluster در kubernetes متمرکز شویم. در Node اولیه، اجرا کنید:

microk8s add-node

این دستور خروجی زیر را به شما می‌دهد:

Join node with:
microk8s join ip-172-31-20-243:25000/DDOkUupkmaBezNnMheTBqFYHLWINGDbf

If the node you are adding is not reachable through the default interface 
you can use one of the following:
microk8s join 10.1.84.0:25000/DDOkUupkmaBezNnMheTBqFYHLWINGDbf
microk8s join 10.22.254.77:25000/DDOkUupkmaBezNnMheTBqFYHLWINGDbf

دستور join را از خروجی کپی کرده و از Node بعدی MicroK8s اجرا کنید. پیوستن موفقیت آمیز ممکن است چند دقیقه طول بکشد.

این فرآیند (ایجاد یک توکن ، اجرای آن از Node متصل) را برای Node سوم تکرار کنید.

اگر می‌خواهید به Node های اضافی بپیوندید، باید همان روند را تکرار کنید.

4. یک نمونه برنامه containerised را Deploy کنید

اکنون یک استقرار microbot با سه pod از طریق kubectl cli ایجاد می‌کنیم. این را روی هر یک از Node های صفحه کنترل اجرا کنید:

microk8s kubectl create deployment microbot --image=dontrebootme/microbot:v1
microk8s kubectl scale deployment microbot --replicas=3

برای نشان دادن Deploy، باید یک سرویس ایجاد کنیم:

microk8s kubectl expose deployment microbot --type=NodePort --port=80 --name=microbot-service

پس از چند دقیقه Cluster ما به این شکل است:

> microk8s kubectl get all --all-namespaces
NAMESPACE     NAME                                          READY   STATUS    RESTARTS   AGE                                                                                                              [0/594]
kube-system   pod/calico-kube-controllers-847c8c99d-mjgqn   1/1     Running   0          1m
kube-system   pod/calico-node-2x7t7                         1/1     Running   0          1m
kube-system   pod/calico-node-vkzg8                         1/1     Running   0          1m
default       pod/microbot-5f5499d479-n647g                 1/1     Running   0          30s
default       pod/microbot-5f5499d479-x25lc                 1/1     Running   0          35s
default       pod/microbot-5f5499d479-xrbf2                 1/1     Running   0          40s   

NAMESPACE   NAME                       TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
default     service/kubernetes         ClusterIP   10.152.183.1    <none>        443/TCP        1m
default     service/microbot-service   NodePort    10.152.183.99   <none>        80:30017/TCP   42s

NAMESPACE     NAME                         DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
kube-system   daemonset.apps/calico-node   2         2         2       2            2           kubernetes.io/os=linux   1m

NAMESPACE     NAME                                      READY   UP-TO-DATE   AVAILABLE   AGE
kube-system   deployment.apps/calico-kube-controllers   1/1     1            1           1m
default       deployment.apps/microbot                  3/3     3            3           40s

NAMESPACE     NAME                                                DESIRED   CURRENT   READY   AGE
kube-system   replicaset.apps/calico-kube-controllers-847c8c99d   1         1         1       1m
default       replicaset.apps/microbot-5f5499d479                 3         3         3       40s

در بالا، Podهای microbot را داریم، service/microbot-service در لیست دوم خدمات است. سرویس ما دارای Cluster ، IPای است که از طریق آن می‌توانیم به آن دسترسی پیدا کنیم. اما توجه داشته باشید که سرویس از نوع NodePort است. این بدان معناست که استقرار در یک پورت در دستگاه میزبان نیز موجود است. آن پورت به طور تصادفی انتخاب می‌شود و در این مورد، 30017 می‌باشد.

از مرورگر خود به برنامه دسترسی پیدا کنید

برای دسترسی به سرویس microbot از مرورگر محلی خود، باید آن را به IP یکی از ماشین‌های مجازی خود و پورتی که سرویس از آن در معرض نمایش است، نشان دهید.

برای مشاهده آدرس IP آن از دستور ip در یکی از ماشین‌های مجازی خود استفاده کنید:

>ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000                                                                                                                        
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00                                                                                                                             
    inet 127.0.0.1/8 scope host lo                                                                                                                                            
       valid_lft forever preferred_lft forever                                                                                                                                    
    inet6 ::1/128 scope host                                                                                                                                          
       valid_lft forever preferred_lft forever                                                                                                                                                                     
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000                                                                                                                
    link/ether 52:54:00:c9:b1:2f brd ff:ff:ff:ff:ff:ff                                                                                                                             
    inet 10.166.194.208/24 brd 10.166.194.255 scope global ens4                                                                                                                                          
       valid_lft forever preferred_lft forever                                                                                                                                                                     
    inet6 fe80::5054:ff:fec9:b12f/64 scope link                                                                                                                                          
       valid_lft forever preferred_lft forever                                                                                                                                                                     

5: vxlan.calico: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1410 qdisc noqueue state UNKNOWN group default                                                                                                              
    link/ether 66:ae:23:b9:4c:ca brd ff:ff:ff:ff:ff:ff                                                                                                                                                             
    inet 10.1.202.0/32 brd 10.1.202.0 scope global vxlan.calico                                                                                                                                        
       valid_lft forever preferred_lft forever                                                                                                                                                                     
    inet6 fe80::64ae:23ff:feb9:4cca/64 scope link                                                                                                                                          
       valid_lft forever preferred_lft forever

6: cali6d8cc5df688@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1440 qdisc noqueue state UP group default
    link/ether ee:ee:ee:ee:ee:ee brd ff:ff:ff:ff:ff:ff link-netns cni-f8c70512-4448-aa9d-4e8a-41d780c92f43
    inet6 fe80::ecee:eeff:feee:eeee/64 scope link
       valid_lft forever preferred_lft forever

9: cali6f43c081ad9@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1440 qdisc noqueue state UP group default
    link/ether ee:ee:ee:ee:ee:ee brd ff:ff:ff:ff:ff:ff link-netns cni-78561df6-7132-a1ba-9b60-30d1010d555a
    inet6 fe80::ecee:eeff:feee:eeee/64 scope link
       valid_lft forever preferred_lft forever

10: calic0bf7d8c9d3@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1440 qdisc noqueue state UP group default
    link/ether ee:ee:ee:ee:ee:ee brd ff:ff:ff:ff:ff:ff link-netns cni-61873c9a-7b3c-e0ac-ab6a-bd5ea85a0b6c
    inet6 fe80::ecee:eeff:feee:eeee/64 scope link
       valid_lft forever preferred_lft forever

در مورد ما، ens4 رابط شبکه تعیین شده با IP 10.166.194.208 است.

اکنون می‌توانیم مرورگری را باز کنیم، آن را به 10.166.194.208:30017 اشاره کنیم و از میکروبات خود لذت ببریم.

5. جمع بندی

شما در حال حاضر دارای یک Kubernetes چند Node بسیار بالا برای تنظیم Containerهای خود هستید.

اکنون می‌توانید تمام خدمات MicroK8s را متوقف کنید:

microk8s stop

یا تنظیمات Cluster خود را با موارد زیر بازنشانی کنید:

microk8s reset

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

منبع: www.ubuntu.com

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.