Kubernetes

نصب Local Kubernetes با MicroK8s

Local Kubernetes چیست؟

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

MicroK8s چیست؟

MicroK8s یک گواهینامه CNCF بالادست Kubernetes است که کاملاً روی ایستگاه کاری شما اجرا می‌شود. به عنوان یک برنامه فوری، تمام خدمات Kubernetes را بطور طبیعی (یعنی بدون ماشین های مجازی) اجرا می‌کند، در حالی که مجموعه‌ای از کتابخانه‌ها و فایل‌های باینری مورد نیاز را بسته بندی می‌کند.

در این آموزش شما یاد می‌گیرید که چگونه…

  • Kubernetes Cluster خود را راه اندازی کنید.
  • افزونه‌های اصلی Kubernetes مانند dns و داشبورد را فعال کنید.
  • Cluster خود را از مشتری kubectl CLI کنترل کنید.
  • اولین حجم کار Container خود را Deploy کنید.
نصب Local Kubernetes با MicroK8s

1. Deploying MicroK8s

اگر از اوبونتو استفاده می‌کنید، سریع ترین راه برای شروع نصب MicroK8s ، کلیک دکمه install در snap store است.

با این حال، می‌توانید MicroK8s را با commad نیز نصب کنید:

sudo snap install microk8s --classic

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

برای سایر سیستم عامل‌ها (Windows ، macOS ، Raspberry Pi و غیره) و روش‎‌های نصب، لطفاً اسناد MicroK8s را مطالعه نمائید.

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

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

2. افزونه‌ها را فعال کنید

به طور پیش فرض، ما یک upstream Kubernetes را در اختیار داریم. سرویس‌های اضافی مانند داشبورد، core-dns یا ذخیره سازی محلی را می توان با اجرای دستور microk8s enable فعال کرد:

microk8s enable dns dashboard storage

این افزونه‌ها را می‌توان در هر زمان با اجرای دستور microk8s disable غیرفعال کرد:

microk8s disable dns dashboard storage

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

لیست مهمترین افزونه‌ها

  • dashboard: داشبورد Local kubernetes را Deploy کنید.
  • dns: استقرار DNS. این افزونه ممکن است مورد نیاز باشد، بنابراین توصیه می‌کنیم همیشه آن را فعال کنید.
  • storage: یک کلاس ذخیره سازی پیش فرض ایجاد کنید. این کلاس ذخیره سازی از ارائه دهنده hostpath که به دایرکتوری روی میزبان اشاره می کند استفاده می‌کند.
  • ingress: یک کنترل کننده ingress ایجاد کنید.
  • gpu: با فعال کردن زمان اجرا nvidia-docker و nvidia-device-plugin-daemonset ، GPU ها را در معرض MicroK8 قرار دهید. به درایورهای NVIDIA نیاز دارد که از قبل روی سیستم میزبان نصب شده باشند.
  • istio: خدمات اصلی Istio را مستقر کنید. می‌توانید از دستور microk8s istioctl برای مدیریت استقرارهای خود استفاده کنید.
  • registry: یک رجیستری خصوصی docker را مستقر کرده و در localhost: 32000 افشا کنید. افزونه ذخیره سازی به عنوان بخشی از این افزونه فعال می‌شود.

3. دسترسی به داشبورد Local Kubernetes

اکنون که افزونه‌های dns و داشبورد را فعال کرده‌ایم، می‌توانیم به داشبورد موجود دسترسی پیدا کنیم. برای انجام این کار ابتدا پیشرفت استقرار افزونه های خود را با microk8s kubectl get all -all-namespaces بررسی می‌کنیم. فقط چند دقیقه طول می‌کشد تا همه Podها در حالت “در حال اجرا” قرار گیرند:

NAMESPACE     NAME                                             READY   STATUS    RESTARTS   AGE
kube-system   pod/calico-kube-controllers-847c8c99d-fmbsl      1/1     Running   0          92s
kube-system   pod/metrics-server-8bbfb4bdb-gwbch               1/1     Running   0          14s
kube-system   pod/dashboard-metrics-scraper-6c4568dc68-5xpbb   1/1     Running   0          14s
kube-system   pod/calico-node-sc2pv                            1/1     Running   0          92s
kube-system   pod/coredns-86f78bb79c-lfjtr                     1/1     Running   0          23s
kube-system   pod/kubernetes-dashboard-7ffd448895-7n5j2        1/1     Running   0          14s

NAMESPACE     NAME                                TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                  AGE
default       service/kubernetes                  ClusterIP   10.152.183.1     <none>        443/TCP                  100s
kube-system   service/kube-dns                    ClusterIP   10.152.183.10    <none>        53/UDP,53/TCP,9153/TCP   23s
kube-system   service/metrics-server              ClusterIP   10.152.183.158   <none>        443/TCP                  15s
kube-system   service/kubernetes-dashboard        ClusterIP   10.152.183.64   <none>        443/TCP                  14s
kube-system   service/dashboard-metrics-scraper   ClusterIP   10.152.183.223   <none>        8000/TCP                 14s

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

NAMESPACE     NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
kube-system   deployment.apps/calico-kube-controllers     1/1     1            1           95s
kube-system   deployment.apps/metrics-server              1/1     1            1           15s
kube-system   deployment.apps/dashboard-metrics-scraper   1/1     1            1           14s
kube-system   deployment.apps/coredns                     1/1     1            1           23s
kube-system   deployment.apps/kubernetes-dashboard        1/1     1            1           14s

NAMESPACE     NAME                                                   DESIRED   CURRENT   READY   AGE
kube-system   replicaset.apps/calico-kube-controllers-847c8c99d      1         1         1       93s
kube-system   replicaset.apps/metrics-server-8bbfb4bdb               1         1         1       15s
kube-system   replicaset.apps/dashboard-metrics-scraper-6c4568dc68   1         1         1       14s
kube-system   replicaset.apps/coredns-86f78bb79c                     1         1         1       23s
kube-system   replicaset.apps/kubernetes-dashboard-7ffd448895        1         1         1       14s

داشبورد Kubernetes

همانطور که در بالا می‌بینیم سرویس kubernetes-dashboard در فضای نام kube-system دارای ClusterIP 10.152.183.64 است و در پورت TCP 443 گوش می‌دهد. ClusterIP به طور تصادفی تعیین شده است، بنابراین اگر این مراحل را در میزبان خود دنبال می‌کنید، مطمئن شوید که آدرس IP که دریافت کردید مرورگر خود را به آدرس https://10.152.183.64:443 نشان دهید و رابط کاربری داشبورد kubernetes را مشاهده خواهید کرد. برای دسترسی به داشبورد از رمز پیش فرض بازیابی شده از کامند زیر استفاده کنید.

token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
microk8s kubectl -n kube-system describe secret $token

نصب Local Kubernetes با MicroK8s

4. اولین سرویس خود را در Kubernetes میزبانی کنید

با ایجاد یک microbot deployment با دو Pod از طریق kubectl cli شروع می‌کنیم:

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

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

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
kube-system   pod/calico-kube-controllers-847c8c99d-fmbsl      1/1     Running   0          3m21s
kube-system   pod/metrics-server-8bbfb4bdb-gwbch               1/1     Running   0          2m3s
kube-system   pod/dashboard-metrics-scraper-6c4568dc68-5xpbb   1/1     Running   0          2m3s
kube-system   pod/calico-node-sc2pv                            1/1     Running   0          3m21s
kube-system   pod/coredns-86f78bb79c-lfjtr                     1/1     Running   0          2m12s
kube-system   pod/kubernetes-dashboard-7ffd448895-7n5j2        1/1     Running   0          2m3s
default       pod/microbot-5f5499d479-vznng                    1/1     Running   0          22s
default       pod/microbot-5f5499d479-6kq5r                    1/1     Running   0          22s

NAMESPACE     NAME                                TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                  AGE
default       service/kubernetes                  ClusterIP   10.152.183.1     <none>        443/TCP                  3m29s
kube-system   service/kube-dns                    ClusterIP   10.152.183.10    <none>        53/UDP,53/TCP,9153/TCP   2m12s
kube-system   service/metrics-server              ClusterIP   10.152.183.158   <none>        443/TCP                  2m4s
kube-system   service/kubernetes-dashboard        ClusterIP   10.152.183.64   <none>        443/TCP                  2m3s
kube-system   service/dashboard-metrics-scraper   ClusterIP   10.152.183.223   <none>        8000/TCP                 2m3s
default       service/microbot-service            NodePort    10.152.183.69   <none>        80:32648/TCP             16s

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

NAMESPACE     NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
kube-system   deployment.apps/calico-kube-controllers     1/1     1            1           3m24s
kube-system   deployment.apps/metrics-server              1/1     1            1           2m4s
kube-system   deployment.apps/dashboard-metrics-scraper   1/1     1            1           2m3s
kube-system   deployment.apps/coredns                     1/1     1            1           2m12s
kube-system   deployment.apps/kubernetes-dashboard        1/1     1            1           2m3s
default       deployment.apps/microbot                    2/2     2            2           22s

NAMESPACE     NAME                                                   DESIRED   CURRENT   READY   AGE
kube-system   replicaset.apps/calico-kube-controllers-847c8c99d      1         1         1       3m22s
kube-system   replicaset.apps/metrics-server-8bbfb4bdb               1         1         1       2m4s
kube-system   replicaset.apps/dashboard-metrics-scraper-6c4568dc68   1         1         1       2m3s
kube-system   replicaset.apps/coredns-86f78bb79c                     1         1         1       2m12s
kube-system   replicaset.apps/kubernetes-dashboard-7ffd448895        1         1         1       2m3s
default       replicaset.apps/microbot-5f5499d479                    2         2         2       22s

ما در حال حاضر دو microbot Pod داریم و service/microbot-service آخرین لیست در لیست خدمات است. سرویس ما دارای ClusterIP است که از طریق آن می‌توانیم به آن دسترسی پیدا کنیم. اما توجه داشته باشید که سرویس ما از نوع NodePort است. این بدان معناست که استقرار ما در یک پورت در دستگاه میزبان نیز موجود است. آن پورت به طور تصادفی انتخاب می‌شود و در این حالت اتفاق می‌افتد که 32648 باشد. تنها کاری که ما باید انجام دهیم این است که مرورگر خود را به آدرس http: // localhost: 32648 نشان دهیم.

نصب Local Kubernetes با MicroK8s

5. دستورات یکپارچه

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

microk8s status: یک نمای کلی از وضعیت MicroK8s (در حال اجرا / عدم اجرا) و همچنین مجموعه افزونه های فعال شده را ارائه می دهد. در این آموزش فقظ موارد ضروری بیان شد.


microk8s enable: افزونه را فعال می‌کند.
microk8s غیرفعال: افزونه را غیرفعال می‌کند.
microk8s kubectl: با kubernetes تعامل داشته باشید.
microk8s disable: فایل پیکربندی Local kubernetes را نشان می‌دهد.
microk8s istioctl: تعامل با خدمات istio ؛ برای فعال شدن نیاز به افزونه istio دارد.
microk8s inspect : یک بازرسی سریع از محل نصب MicroK8s انجام می‌دهد.
microk8s reset: زیرساخت ها را به حالت تمیز برمی‌گرداند.
microk8s stop: کلیه خدمات kubernetes را متوقف می‌کند.
microk8s start: با این دستور MicroK8 ها پس از توقف شروع به کار می‌کند.

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

منبع: www.ubuntu.com

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

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