یادگیری نحوه نصب کوبرنتیز روی گوگل کلود برای کسبوکارهایی که در دنیای دادهمحور امروزی، به استقرار اپلیکیشنهای کاربردی نیاز دارند بسیار مهم است. کوبرنتیز یک پلتفرم ارکستراسیون کانتینر منبعباز است که به دلیل توانایی در مدیریت و مقیاسبندی کارآمد اپلیکیشنهای کانتینری، محبوبیت بسیار زیادی دارد. در این آموزش، ما روند استقرار کوبرنتیز را در پلتفرم Google Cloud که به اختصار به آن GCP میگویند به شما یاد میدهیم تا بتوانید از قدرت کوبرنتیز برای بهبود اپلیکیشنهای خود استفاده کنید.
معرفی کوبرنتیز
کوبرنتیز یک پلتفرم منبعباز است که از آن برای خودکارسازی استقرار، مقیاسبندی و عملیات کانتینرهای برنامه استفاده میشود. با کمک این پلتفرم، بسیاری از وظایف توسعهدهندگان که مربوط به مدیریت برنامههای کانتینری هستند، بسیار سادهتر میشود. همچنین، این پلتفرم بسیاری از مشکلاتی که تیمها در طول مدیریت برنامههای کانتینری با آن مواجه میشوند را حل میکند. برای آشنایی بیشتر با کوبرنتیز نیز، توصیه میکنیم که مطلب کوبرنتیز چیست را مطالعه کنید.
پیشنیازهای نصب کوبرنتیز روی گوگل کلود
برای نصب و پیکربندی کوبرنتیز روی فضای ابری گوگل به موارد زیر نیاز داریم:
- ایجاد پروژه GCP
- پیکربندی رابط خط فرمان (CLI) gcloud
قبل از نصب کوبرنتیز روی Google Cloud، باید محیط GCP خود را راهاندازی کنیم. برای انجام این کار، مراحل زیر را دنبال کنید:
۱. یک حساب GCP ایجاد کرده و وارد کنسول شوید.
۲. Kubernetes Engine API را در کنسول ایجادشده فعال کنید.
۳. حال باید ابزار خط فرمان gcloud را برای مدیریت منابع GCP خود نصب کنید.
برای نصب راحت gcloud میتوانید از دستور زیر استفاده کنید:
# download the gcloud tar.gz curl -O https: //dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-316.0.0-darwin-x86_64.tar.gz # extract the file tar -xf google-cloud-sdk-316.0.0-darwin-x86_64.tar.gz # install gcloud ./google-cloud-sdk/install.sh # initialize gcloud ./google-cloud-sdk/bin/gcloud init
۴. حال باید با اجرای دستور زیر، ابزار Kubectl که رابط خط فرمان برای تعامل با کلاسترهای Kubernetes است را نصب کنید.
gcloud components install kubectl
راهنمای نصب کوبرنتیز روی گوگل کلود
پس از آمادهسازی موارد موردنیاز برای نصب Kubernetes بر روی سرور گوگل میتوانید با دنبال کردن مراحل زیر، نصب و پیکربندی کوبرنتیز را شروع کنید:
۱. ساخت یک VPC
ابر خصوصی مجازی (VPC) یک پلتفرم ابری است که سرویسهای آن بر روی زیرساختهای گوگل کار میکنند. توجه داشته باشید که VPC با سرور ابری مجازی که آن را با نام VPS ابری میشناسیم تفاوت دارد. VPS ابری دارای ساختاری هوشمند است و با کمک امکانات و منابع دیتاسنترهای متعددی که دارد، خطر ازدسترفتن اطلاعات و ارتباط اینترنت در آن بسیار کم است.
با دنبال کردن مراحل زیر، میتوانیم یک VPC جدید را در پروژه GCP ایجاد کنیم:
اول از همه، رابط خط فرمان را باز کنید و با اجرای دستور زیر، بررسی کنید که gcloud به درستی پیکربندی شدهاست یا خیر:
Gcloud init
پس از اینکه اطلاعات پیکربندی را مانند تصویر بالا مشاهده کردید، دکمه N را فشار دهید. سپس، برای ایجاد VPC دستور زیر را اجرا کنید:
gcloud compute networks create vpc-k8s
پس از اینکه VPC شما در فضای ابری ساخته شد، پیامی شبیه به تصویر زیر را مشاهده خواهید کرد:
درصورتی که api در پروژه شما فعال نباشد، پرامپت زیر را مشاهده خواهید کرد. توجه داشته باشید که این پیام معمولا پس از اولینباری که برای ساخت VPC اقدام میکنید، ظاهر میشود:
پس از دریافت پیام بالا، کلید «Y» کیبورد را فشار دهید تا API فعال شود.
زمانی که پیام زیر را دریافت میکنید، به این معنی است که VPC با موفقیت ساخته شدهاست.
۲. فعال سازی Kubernetes Cluster API
برای دنبال کردن مراحل نصب Kubernetes بر روی سرور گوگل باید API کوبرنتیز را برای تمام پروژههای GCP فعال کنیم. اگر این API فعال نباشد، خطای زیر را مشاهده خواهید کرد:
ERROR: (gcloud.container.clusters.create) ResponseError: code=400, message=Failed precondition when calling the ServiceConsumerManager: tenantmanager:: 185014: Consumer 12132323232(project number) should enable service: container.googleapis.com before generating a service account.
برای فعال کردن API کوبرنتیز مراحل زیر را دنبال کنید:
به وبسایت https: //console.google.com بروید.
Kubernetes engine که در زیر قسمت Compute section است را انتخاب کنید.
گزینه «Clusters» را انتخاب کنید.
مانند تصویر زیر، بررسی کنید که آیا پیام «Kubernetes engine API is being enabled» ظاهر میشود یا خیر.
۳. ساخت یک Kubernetes Cluster
در این مرحله از نصب کوبرنتیز، باید با استفاده از برخی پارامترها، یک کلاستر کوبرنتیز را ایجاد کنیم. این پارامترها عبارتنداز:
- نام کلاستر که در اینجا آن را my-k8s-cluster میگذاریم؛
- تعداد گرهها که در اینجا آن را ۳ مشخص کردیم؛
- نام VPC؛
- منطقه (Zone)؛
- برچسب (Tag)؛
- محدودهها (Scopes).
در دستور زیر، از تمام پارامترهای بالا استفاده میکنیم:
gcloud container clusters create my-k8s-cluster --num-nodes 3 --network vpc-k8s --zone us-central1-a --tags private --scopes=storage-rw,compute-ro
با اجرای دستور بالا، پیامی شبیه به پیام زیر دریافت میکنیم که به ما میگوید کلاستر ساخته شده و در حال اجرا است:
کوبرنتیز یک ابزار خط فرمان kubectlas را برای بررسی وضعیت کلاستر، جزئیات گره و غیره ارائه میدهد. اگر این ابزار را روی دستگاه خود نصب نکردهاید، میتوانید آن را از این لینک (+) دانلود و نصب کنید.
فقط کافی است، فایل exe را دانلود کرده و یک متغیر Environment را در مسیر سیستم خود اضافه کنید. حالا بیایید چند دستور kubectl را برای بررسی جزئیات کلاستر اجرا کنیم.
بررسی عملکرد درست کلاسترها
برای اینکه بررسی کنید که آیا کلاستر شما عملکرد درستی دارد یا نه، دستور زیر را در رابط فرمان اجرا کنید:
kubectl get componentstatuses -o yaml
پس از اجرای دستور بالا، باید پیامی شبیه به شکل زیر را ببینید:
بررسی گرههای درون کلاستر
برای بررسی گرههای درون کلاستر، دستور زیر را در رابط خط فرمان اجرا کنید:
kubectl get nodes
پس از اجرای دستور بالا، پیامی شبیه به شکل زیر را دریافت میکنید:
بررسی اطلاعات کلاستر
برای بررسی اطلاعات کلاستر، دستور زیر را اجرا کنید:
kubectl get-info
زمانی که دستور بالا را در رابط خط فرمان اجرا میکنید، پیامی شبیه به شکل زیر ظاهر میشود:
Kubernetes Cluster چطور کار میکند؟
زمانی که یک کوبرنتیز را مستقر کردیم، همراه با آن یک کلاستر را هم دریافت میکنیم که دارای مشخصات زیر است:
- ۳ گره؛
- مدیر کنترلر (controller manager)؛
- زمانبندی (scheduler)؛
- کلاستر etcd با دو عضو.
Kubernetes master به همراه برخی از سرویسها نظیر موارد زیر راهاندازی شده است:
- بکاند پیشفرض که توسط کنترلر استفاده شده است؛
- KubeDNS برای سرویس DNS در کلاستر؛
- metrics-server برای متریکهای استفاده از منابع.
برای بررسی این سرویسها، دستور زیر را در رابط خط فرمان اجرا کنید:
kubectl get svc --all-namespaces
۴. بررسی مستقیم کلاستر روی کنسول GCP
برای اینکه کلاستر را بر روی کنسول GCP بررسی کنید، مانند تصویر زیر به بخش «Clusters» بروید:
نحوه اتصال به کلاستر از دستگاه/ماشین دیگر
اگر میخواهید از دستگاه دیگری به کلاستر متصل شوید، باید دستور زیر را اجرا کنید تا اعتبارنامهها را در دستگاه جدید اضافه کنید.
gcloud container clusters get-credentials my-k8s-cluster --zone us-central1-a --project my-kubernetes-project-60896
اگر دستور kubectl get pod را مستقیما و بدون اجرای دستور بالا اجرا کنید، خطای زیر را مشاهده خواهید کرد:
kubectl unable to connect to server: x509: certificate signed by unknown authority Kubernetes-dashboard
این داشبوردی است که در آن میتوانید تمام جزئیات مربوط به پادها، گرهها، بکارگیری CPU و غیره را مشاهده کنید.
اگر میخواهید به داشبورد دسترسی داشته باشید، باید سرویس kubernetes-dashboard را با استفاده از اجرای دستور زیر مستقر کنید:
kubectl apply -f https: //raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
خروجی کد بالا، چیزی شبیه به شکل زیر است:
این سرویس، تحت یک فضای نام (namespace) متفاوت kubernetes-dashboard ایجاد شده است.
برای بررسی پادها و سرویسها، دستور زیر را اجرا کنید:
kubectl get pods -A kubectl get svc --all-namespaces
پس از اجرای دستور بالا، باید یک خروجی شبیه به شکل زیر را مشاهده کنید:
حالا برای دسترسی به داشبورد با استفاده از رابط کاربری گرافیکی (GUI)، دستور زیر را اجرا کنید:
kubectl proxy
خروجی کد بالا، شبیه به شکل زیر خواهد بود:
در ادامه، آدرس زیر را در مرورگرتان باز کنید:
http: //localhost: 8001/api/v1/namespaces/kubernetes-dashboard/services/https: kubernetes-dashboard: /proxy/#/login
پس از باز کردن آدرس بالا، صفحهای شبیه به تصویر زیر در مرورگر برایتان باز میشود:
نحوه وارد شدن به کوبرنتیز
حالا میتوانیم بررسی کنیم که آیا یک کاربر موجود، وجود دارد یا خیر. برای انجام این کار، باید نام زمینه فعلی را بدانیم. این زمینه، ترکیبی از اطلاعات کلاستر، کاربران برای احراز هویت و فضای نام است. برای فهمیدن نام زمینه، کد زیر را در رابط خط فرمان اجرا کنید:
kubectl config current-context
خروجی کد بالا، نام زمینه را به ما نشان میدهد:
حال که فهمیدیم نام زمینه چیست، میتوانیم آن را از طریق دستور kubectl config view پیکربندی کنیم:
kubectl config view
خروجی دستور بالا، شبیه به شکل زیر است:
حالا ما یک توکن کاربری موجود پیدا کردیم که میتوانیم از آن برای ورود به کنسول داشبورد kubernetes استفاده کنیم. این توکن را کپی کرده و مانند تصویر زیر در قسمت «enter token» وارد کنید:
پس از کلیک بر روی دکمه sign in وارد داشبورد خود خواهید شد:
اجرای استقرار سرویس Nginx
برای استقرار سرویس Nginx و بررسی پادها، دستور زیر را در رابط خط فرمان اجرا کنید:
kubectl run nginx-pod --image nginx kubectl get pods
خروجی کد بالا، شبیه به تصویر زیر خواهد بود:
بررسی شرح و جزئیات پادها
برای بررسی شرح و جزئیات پادها، دستور زیر را اجرا کنید:
kubectl describe pods nginx-pod kubectl describe pods nginx-pod > output.yaml
خروجی دستور بالا، شبیه به تصویر زیر خواهد بود:
برای بررسی پادها روی کنسول، از مسیر زیر اقدام کنید:
نحوه دسترسی به پادها
برای دسترسی به پادها از طریق رابط خط فرمان، دستور زیر را اجرا کنید:
Get the pod name kubectl port-forward nginx-pod 8000: 80
پس از اجرای دستور بالا، خروجی بهصورت زیر خواهد بود:
برای دسترسی به پادها از طریق مرورگر، آدرس زیر را در مرورگرتان باز کنید:
http: //localhost: 8000/
آدرس بالا، شما را به صفحهای شبیه به تصویر زیر هدایت میکند:
جمع بندی
نصب کوبرنتیز روی گوگل کلود فرایندی چندمرحلهای است که شامل ایجاد یک کلاستر، تنظیمات شبکه، پیکربندی ابزارهای خط فرمان، و مدیریت منابع میشود. این روش به توسعهدهندگان امکان میدهد تا اپلیکیشنهای خود را بهصورت مقیاسپذیر و مدیریتشده روی گوگل کلود اجرا کنند. با استفاده از دستورات kubectl
، میتوان کلاستر را مدیریت کرده و از داشبورد گرافیکی برای بررسی عملکرد آن بهره برد. اگر هدف شما یادگیری کوبرنتیز برای مدیریت برنامههای کانتینری در محیط ابری است، این راهنما یک شروع مناسب است.