Local Kubernetes چیست؟
Clusterهای Kubernetes برنامههای بسته بندی شده را به روشی قابل اعتماد و مقیاس پذیر میزبانی میکنند. با در نظر گرفتن DevOps، Local Kubernetes کارهای تعمیر و نگهداری مانند ارتقاء را ساده میکند.
MicroK8s چیست؟
MicroK8s یک گواهینامه CNCF بالادست Kubernetes است که کاملاً روی ایستگاه کاری شما اجرا میشود. به عنوان یک برنامه فوری، تمام خدمات Kubernetes را بطور طبیعی (یعنی بدون ماشین های مجازی) اجرا میکند، در حالی که مجموعهای از کتابخانهها و فایلهای باینری مورد نیاز را بسته بندی میکند.
در این آموزش شما یاد میگیرید که چگونه…
- Kubernetes Cluster خود را راه اندازی کنید.
- افزونههای اصلی Kubernetes مانند dns و داشبورد را فعال کنید.
- Cluster خود را از مشتری kubectl CLI کنترل کنید.
- اولین حجم کار Container خود را Deploy کنید.
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
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 نشان دهیم.
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