1 - ساخت یک دیپلویمنت با استفاده از kubectl
اهداف
- یاد خواهید گرفت دیپلویمنت ها چیستند.
- با استفاده از کوب کتل (kubectl) اولین برنامه خود را بر روی کوبرنتیز مستقر خواهید کرد.
دیپلویمنت های کوبرنتیز
توجه:
این آموزش از کانتینری استفاده می کند که برای سیستم های ۶۴ بیتی طراحی شده است. اگر معماری پردازنده سیستمی که مینی کوب را بر آن اجرا می کنید به غیر از این است می توانید از درابور شبیه ساز مینی کی یوب استفاده کنید.بعد از راه اندازی یک کلاستر کوبرنتیز شما می توانید برنامه های کانتینری خود را بر روی آن اجرا کنید. برای انجام این کار شما تنها باید یک دیپلویمنت کوبرنتیز بسازید. بعد از ساخت دیپلویمنت کنترل پلین کوبرنتیز شما نسخه های از برنامه هایتان را برروی نودهای کلاستر اجرا می کند.
بعد از اینکه نسخه های برنامه ایجاد شدند، دیپلویمنت کوبرنتیز به صورت پیوسته آن ها را نظارت خواهد کرد. اگر نودی که برنامه را میزبانی می کند خاموش یا حذف شود دیپلویمنت کنترلر آن نسخه را بر روی نودی دیگر در کلاستر اجرا خواهد کرد. این مکانیزم باعث می شود که محیط شما در مواردی همچون مشکل سروری یا تعمیر و نگهداری خود به خود احیا شود
در محیط های قدیم بیشتر اسکریپت های نصب برای شروع برنامه ها استفاده می شدند، اما این اسکریپت ها امکان احیا محیط را فراهم نمی کردند. کوبرنتیز به صورت بنیادی با حالت قدیمی نگهداری فرق دارد و با استفاده از نودهای مختلف که توسط دیپلویمنت ها برنامه های شما را اجرا می کنند این مهم را مدیریت می کند.
اولین برنامه خود را برروی کوبرنتیز مستقر کنید
شما می توانید یک دیپلویمنت را با استفاده از دستور کوب کتل ساخته و مدیریت کنید.
شما می توانید دیپلویمنت های کوبرنتیز را با استفاده از رابط دستوری کوب کتل ساخته و مدیریت کنید.کوب کتل
با استفاده از رابط کاربری کوبرنتیز این مهم را فراهم می سازد.در این قسمت شما رایج ترین دستورات را برای ساخت یک دیپلویمنت فرا خواهید گرفت.
زمانی که یک دیپلویمنت می سازید باید ایمیج کانتینری برنامه خود و تعداد کپی هایی (replicas) که در محیط تان می خواهید اجرا شوند را مشخص کنید. شما می توانید این مشخصات را بعد از ساخت دیپلویمنت خود تغییر دهید. بخش ۵ و بخش ۶ این دوره آموزشی که در مورد مقیاس بندی و تغییر دیپلویمنت ها می باشد.
برای اولین دیپلویمنت تان شما از برنامه پکیج شده داکری hello-node که یک کانتینر NGINX است و به تمام درخواست های شما پاسخ میدهد استفاده خواهید کرد.
اگر هنوز برنامه hello-node را در محیط خود مستقر نکرده اید می توانید از دستورالعمل های آموزشی صفحه آغاز کار با مینی کوب استفاده کنید. برای ادامه به نرم افزار کوب کتل هم احتیاج دارید که می توانید از اینجا نصب کنید.
حالا که با دیپلویمنت ها آشنا شدید، بی یایید اولین دیپلویمنت خود را مستقر کنید!
مقدمات کوب کتل
برای دنبال کردن این آموزش شما نیاز به نرم افزار کوب کتل دارید.
به طور کلی دستور کوب کتل به این نحو استفاده می شود: kubectl action resource
.
این دستور یک فعالیت (مانند create
, describe
یا delete
) را برروی یک منبع خاص (مانند node
یا deployment
) اجرا می کند.
شما می توانید با استفاده از --help
در اخر هر دستور اطلاعات بیشتری در مورد پارمترهای قابل قبول آن به دست آورید.
برای مثال: kubectl get nodes --help
شما می توانید با استفاده از kubectl version
می توانید از اینکه کوب کتل می تواند با کلاستر شما ارتباط برقرار کند اطمینان حاصل کنید. با استفاده از این دستور می توانید از اینکه این ابزار برروی سیستم و سرور نصب است اطمینان یابید.
برای بررسی نود ها در کلاستر از دستور kubectl get nodes
استفاده کنید.
با استفاده از این دستور می توانید نود های قابل دسترس را ببینید. بعدا، یاد خواهید گرفت که چگونه برنامه هایتان را برروی یک نود خاص اجرا کنید.
استقرار یک برنامه
بی یایید تا اولین برنامه خود را با دستور kubectl create deployment
برروی کوبرنتیز نصب کنیم.
برای اینکار ما نیاز به نامی برای دیپلویمنت (در این مثال kubernetes-bootcamp
) و آدرس ایمیج برنامه کانتینر شده را داریم.
توجه داشته باشید که در مواردی که ایمیج برروی سایت های دیگیری به غیر از داکر میزبانی می گردد آدرس کامل ایمیج لازم است.
kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1
آفرین! شما اولین برنامه خود را به صورت دیپلویمنت مستقر کردید.
خلاصه مواردی که یک دیپلویمنت انجام می دهد اینگونه است:
- بررسی می کند که کدام نود در کلاستر بهترین مکام برای اجرای برنامه است.
- اجرای برنامه بر روی نود ایده ال را برنامه ریزی می کند.
- برنامه به نحوی تنظیم می کند تا در زمان مورد نیاز ان را به نود های دیگر انتقال دهد.
برای دریافت فهرست دیپلویمنت ها می توانید از دستور زیر استفاده کنید.
kubectl get deployments
اینجا می بینیم که ۱ دیپلویمنت نسخه ای از برنامه ما را اجرا کرده است. این نسخه از برنامه به صورت یک کانتینر بر روی نود ما در حال اجرا است.
بررسی برنامه
تمامی پادهایی که در کوبرنتیز در حال اجرا هستند بر روی یک شبکه خصوصی و مجزا می باشند.
به صورت پیش فرض این پادها و سرویس ها از داخل کلاستر قابل دسترس هستند اما از خارج از کلاستر کسی به آن ها دسترسی ندارد.
وقتی شما از دستور kubectl
استفاده می کنید در اصل دارید از طریق رابط کاربری کوبرنتیز با برنامه ها ارتباط بر قرار می کنید.
در فصل ۴ این دوره آموزشی بیشتر با نحوه انتشار یک برنامه برای دسترسی از خارج از محیط کلاستر آشنا خواهید شد. درضمن چون این آموزش ابتدایی است ما به جزییات پادها نخواهیم پرداخت.
دستور kubectl proxy
به شما امکان می دهد که با ایجاد یک پروکسی به شبکه خصوصی کلاستر وصل شوید.
برای خاتمه این دستور می توانید از control-c
استفاده کنید.
برای اجرای دستور زیر از یک ترمینال جدید استفاده کنید
kubectl proxy
در زمانی که این دستور در حال اجرا می باشد ما به رابط کاربری داخل کوبرتنیز دسترسی داریم. این دسترسی به شما این امکان را می دهد تاتمامی API های کوبرتنیز را بررسی و یا از طریق برنامه های دیگر با آن ها ارتباط برقرار کنید.
به عنوان مثال از طریث دستور زیر شما می توانید با استفاده از ابزار curl
ویرایش کوبرتنیز خود را ببینید.
curl http://localhost:8001/version
توجه:
در صورتی که درگاه 8001 قابل دسترسی نمی باشد دستورkubectl proxy
را دوباره چک کنید.سرور رابط کاربری به صورت خودکار برای هر پاد بر اساس نامش یک پایانه می سازد که از طریق پروکسی ساخته شده در این آموزش قابل دسترس می باشد.
برای استفاده از این قابلیت شما نیاز به نام پاد ها دارید.
دستور زیر در مرحله اول نام پاد را گرفته و در یک متغیر محیطی به نام POD_NAME
ذخیره می کند.
export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')
echo Name of the Pod: $POD_NAME
بعد از بدست آوردن نام پاد مورد نظرتان شما می توانید از طریق رابط کاربری اطلاعات بیشتری در مورد آن پاد دریافت نمایید:
curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME:8080/proxy/
در این قسمت شما با استفاده از پروکسی به دیپلویمنت خود دسترسی یافتید، در قسمت ۴ این دوره شما با سرویس ها آشنا می شوید که به شما این امکان را می دهند تا بدون استفاده از پروکسی برنامه های خود را منتشر کنید.
گام بعدی
- آموزش بررسی پادها و نودها.
- در مورد دیپلویمنت ها بیشتر بدانید.