آموزش Kubernetes برای سال 2024: یادگیری اصول موثر Container مدیریت

Kubernetes که اغلب به اختصار K8s نامیده می شود، یک انتخاب عالی برای آن است container orchestration به دلیل مقیاس پذیری، انعطاف پذیری و ویژگی های قوی آن. چه یک توسعه‌دهنده یا یک مدیر سیستم باشید، تسلط بر Kubernetes می‌تواند روش استقرار، مقیاس‌بندی و مدیریت برنامه‌های کاربردی را ساده‌تر کند.

در این مقاله، ما شما را از طریق Kubernetes راهنمایی می‌کنیم و مفاهیم اساسی، ویژگی‌های کلیدی، و همچنین مزایا و معایب آن را توضیح می‌دهیم. همچنین روش راه‌اندازی یک محیط Kubernetes، استقرار اولین برنامه خود و عیب‌یابی مشکلات رایج را خواهید یافت.

پس از خواندن این آموزش Kubernetes برای مبتدیان، خواهید دانست که چگونه به طور کامل از پلت فرم برای کارآمد استفاده کنید. container مدیریت.

Kubernetes یک منبع باز قدرتمند است container orchestration سکو. در همین حال، یک محیط Kubernetes مدیریت برنامه های کاربردی کانتینری را ساده می کند. به زبان ساده، این پلتفرم چارچوبی کارآمد برای استقرار، مقیاس‌بندی و مدیریت برنامه‌ها فراهم می‌کند و تضمین می‌کند که آن‌ها به طور یکپارچه در مجموعه‌ای از ماشین‌ها اجرا می‌شوند.

معماری Kubernetes یک رابط سازگار برای توسعه دهندگان و اپراتورها ارائه می دهد. این باعث می شود تیم ها تمرکز کنند روی توسعه اپلیکیشن به جای گرفتار شدن در پیچیدگی های زیرساختی.

به عنوان پیشرو container ارکستراتور، این ابزار فناوری اطلاعات تضمین می کند که برنامه های کاربردی کانتینری به طور قابل اعتماد اجرا می شوند، و به طور موثر نیازمندی های استقرار و مقیاس بندی را مدیریت می کنند و در عین حال پیکربندی های سخت افزاری و شبکه اصلی را انتزاعی می کنند.

Kubernetes چگونه کار می کند؟

این پلتفرم از طریق صفحه کنترل و اجزای اصلی خود عمل می کند، که هر یک نقش تخصصی برای مدیریت برنامه های کاربردی کانتینری در سراسر خوشه های Kubernetes دارند.

بیایید این اشیاء ضروری Kubernetes را با جزئیات بیشتر بررسی کنیم:

گره ها

گره ها ماشین های جداگانه ای هستند که ستون فقرات یک خوشه Kubernetes را تشکیل می دهند. اینها می توانند استاد باشند node یا گره های کارگری که نقش مهمی در اجرای کانتینرهای متعدد دارند. علاوه بر این، گره ها می توانند کار کنند روی سرورهای خصوصی فیزیکی یا مجازی

غلاف

Podها کوچکترین واحدهای قابل استقرار در این پلتفرم هستند و به عنوان بلوک های ساختمانی اصلی برنامه های Kubernetes عمل می کنند. یک غلاف می‌تواند حاوی یک یا چند کانتینر باشد و Kubernetes اطمینان می‌دهد که آنها با هم برنامه‌ریزی می‌شوند روی همان node برای ارتباط بهینه و تعادل بار.

خدمات

خدمات به برنامه ها امکان می دهد به صورت آنلاین در دسترس باشند و تعادل بار را مدیریت کنند. آنها یک راه ثابت برای دسترسی به خدمات کانتینری ارائه می کنند در حالی که پیچیدگی های اتصال شبکه را انتزاعی می کنند.

سرور API

سرور API به عنوان قسمت جلویی صفحه کنترل Kubernetes عمل می کند و درخواست های داخلی و خارجی را برای مدیریت جنبه های مختلف خوشه مدیریت می کند.

فراتر از این اجزای اصلی، معماری Kubernetes مفاهیم پیشرفته تری را برای افزایش بیشتر قابلیت های خود معرفی می کند، از جمله:

مجموعه های تکرار

مجموعه های تکرار تعداد مشخصی از غلاف های یکسان را برای تضمین در دسترس بودن و قابلیت اطمینان بالا نگه می دارند. اگر یک pod از کار بیفتد، مجموعه تکرار به طور خودکار آن را جایگزین می کند.

کنترل کننده های ورودی

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

این مؤلفه‌ها با هم، کوبرنتس را قادر می‌سازد تا پیچیدگی‌های بارهای کاری کانتینری را در سیستم‌های توزیع‌شده به طور مؤثر مدیریت کند.

ویژگی های کلیدی Kubernetes

وب سایت رسمی Kubernetesوب سایت رسمی Kubernetes

Kubernetes مجموعه ای قوی از ویژگی های متناسب با نیازهای خاص برنامه های کاربردی مدرن کانتینری را ارائه می دهد. این ویژگی ها استقرار را ساده می کند و در عین حال کارایی و انعطاف پذیری برنامه را افزایش می دهد.

مقیاس بندی

Kubernetes امکانات مقیاس پذیری یکپارچه را برای برنامه شما فراهم می کند. این به صورت پویا با تقاضا تنظیم می شود و اطمینان حاصل می کند که از منابع شما به طور بهینه استفاده می شود. این سازگاری به شما کمک می کند تا هزینه ها را کاهش دهید و در عین حال تجربه کاربری روانی را حفظ کنید.

تعادل بار

تعادل بار یک ویژگی اصلی در معماری Kubernetes است که به طور موثر ترافیک ورودی را در چند پاد توزیع می کند. این در دسترس بودن بالا و عملکرد مطلوب برنامه را تضمین می کند و از اضافه بار جلوگیری می کند روی هر غلاف خاصی

خود درمانی

قابلیت خوددرمانی Kubernetes زمان خرابی را به حداقل می رساند. اگر یک container یا پاد از کار می افتد، به طور خودکار جایگزین می شود، برنامه شما را روان نگه می دارد و ارائه خدمات ثابت را حفظ می کند.

کشف خدمات و فراداده

کشف سرویس در محیط Kubernetes بدون دردسر است، زیرا ارتباط بین اجزای مختلف برنامه را ساده می کند. فراداده خدمات را می توان برای تنظیم دقیق این تعاملات استفاده کرد و پیچیدگی ها را در سیستم های توزیع شده ساده می کند.

به روز رسانی های چرخشی و بازگشت به عقب

Kubernetes از به روز رسانی های متحرک پشتیبانی می کند و امکان دسترسی مداوم به سرویس را فراهم می کند. در صورت بروز مشکل در حین به روز رسانی، بازگشت به نسخه پایدار سریع و ساده است.

مدیریت منابع

Kubernetes به مدیریت دقیق منابع کمک می‌کند و به شما امکان می‌دهد محدودیت‌های منابع و درخواست‌هایی را برای پادها تعریف کنید. این امر استفاده موثر از CPU و حافظه را تضمین می کند.

ConfigMaps، رازها و متغیرهای محیطی

Kubernetes ConfigMaps و اسرار را برای مدیریت پیکربندی امن، از جمله استفاده از متغیرهای محیطی، ارائه می دهد. ذخیره و مدیریت ایمن داده‌های حساس مانند کلیدهای API و گذرواژه‌ها و محافظت از آنها در برابر دسترسی غیرمجاز.

کنترل‌کننده‌های تکرار و کنترل‌کننده‌های ورودی

برای کنترل پیشرفته، Kubernetes ویژگی هایی مانند Replication و Ingress Controller را معرفی می کند. در حالی که کنترل‌کننده‌های تکرار تعداد پادهای مورد نظر را حفظ می‌کنند، کنترل‌کننده‌های ورودی دسترسی خارجی به سرویس‌های درون خوشه Kubernetes شما را مدیریت می‌کنند.

مزایا و معایب Kubernetes

سنجش نقاط قوت و ضعف Kubernetes برای تصمیم گیری در مورد اینکه آیا این پلت فرم مناسب برای شماست، بسیار مهم است. container نیازهای مدیریت

مزایای Kubernetes

Kubernetes مزایای مختلفی را به ارمغان می آورد و آن را به گزینه ای جذاب برای مدیریت کانتینرهای در حال اجرا تبدیل می کند. در اینجا روش متمایز شدن آن آمده است:

مقیاس پذیری

Kubernetes استقرار کانتینرها را آسان می کند و اطمینان می دهد که برنامه های شما می توانند بر اساس گسترش یا انقباض شوند روی تقاضای بلادرنگ در اینجا روش برتری آن آمده است:

  • جرم گیری بدون زحمت Kubernetes می تواند به طور خودکار کانتینرهای اضافی را در صورت افزایش تقاضا بدون دخالت دستی مستقر کند.
  • توقف صفر همانطور که شما کانتینرها را مستقر می کنید، Kubernetes از یک متعادل کننده بار استفاده می کند تا ترافیک را در بین کانتینرهای موجود و جدید توزیع کند و خدمات مداوم را تضمین کند.

در دسترس بودن بالا

یک شی استقرار در Kubernetes به در دسترس بودن بالا کمک می کند، یک مزیت حیاتی برای هر سازمانی. در اینجا روش دستیابی Kubernetes به این امر آمده است:

  • خرابی خودکار – اگر یک container یا node شکست می خورد، Kubernetes ترافیک را به کانتینرها یا گره های کاربردی هدایت می کند و زمان خرابی را کاهش می دهد.
  • تعادل بار – Kubernetes با متعادل کننده بار داخلی خود، ترافیک ورودی را به طور یکنواخت در چندین پاد پخش می کند و عملکرد را بهبود می بخشد و در دسترس بودن را افزایش می دهد.

انعطاف پذیری و توسعه پذیری

Kubernetes در انعطاف‌پذیری عالی است و شما را قادر می‌سازد تا نرم‌افزار بسته و راه‌حل‌های سفارشی را مطابق با نیازهای خود انتخاب کنید.

در اینجا مزایای اصلی آن وجود دارد:

  • منابع و اپراتورهای سفارشی – Kubernetes به شما کمک می کند منابع و اپراتورهای سفارشی ایجاد کنید و عملکرد آن را برای رفع نیازهای تجاری خود گسترش دهید.
  • بهترین ایده های نژادی – ماهیت منبع باز و پشتیبانی جامعه یک اکوسیستم غنی از برنامه های افزودنی و ابزار ایجاد می کند. در نتیجه، می‌توانید محیط Kubernetes خود را با مجموعه‌ای از افزونه‌ها برای همه چیز، از نظارت گرفته تا دسترسی خارجی، بهبود بخشید.

معایب Kubernetes

در حالی که Kubernetes یک پلت فرم قوی است، معایب خاصی دارد که باید در نظر بگیرید. بیایید به آنها بپردازیم:

پیچیدگی

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

شدت منابع

Kubernetes به سرمایه گذاری قابل توجهی در منابع سرور مانند CPU، حافظه و ذخیره سازی نیاز دارد. این ممکن است برای برنامه‌های کوچک‌تر سربار بیشتر از سود ایجاد کند، به‌ویژه اگر در حال اجرا هستید.روی منابع

فقدان راه حل های ذخیره سازی بومی

Kubernetes راه‌حل‌های ذخیره‌سازی داخلی را ارائه نمی‌کند، که می‌تواند چالش‌هایی را ایجاد کند، به‌ویژه برای برنامه‌هایی که به ذخیره‌سازی داده‌های دائمی یا حساس نیاز دارند. برای غلبه بر این محدودیت، باید گزینه‌های ذخیره‌سازی خارجی مانند ذخیره‌سازی متصل به شبکه (NAS)، شبکه‌های منطقه ذخیره‌سازی (SAN)، یا سرویس‌های ابری را بگنجانید.

روش راه اندازی Kubernetes

راه اندازی Kubernetes برای کارآمدی بسیار مهم است container مدیریت. محیط میزبانی شما نقش کلیدی در این امر ایفا می کند. هاستینگerمیزبانی VPS به سمت منابع و ثبات مورد نیاز برای اجرای یک خوشه Kubernetes طراحی شده است.

1. یک روش استقرار را انتخاب کنید

انتخاب درست استقرار Kubernetes یکی از اولین تصمیماتی است که باید گرفته شود. هر گزینه موارد استفاده خاص خود را دارد، به عنوان مثال، یک مورد container برای پروژه های کوچک بهتر است و چندین کانتینر برای ارتباط با دنیای بیرونی مناسب تر است.

Local محیط

استقرار Kubernetes در یک ماشین محلی برای یادگیری، آزمایش و توسعه ایده آل است. ابزارهایی مانند Minikube و Kind (Kubernetes در Docker) راه اندازی را ساده می کنند و یک خوشه محلی برای آزمایش ارائه می دهند. در نتیجه، استفاده از یک محیط محلی برای Kubernetes برای افراد و تیم های کوچک سریع و راحت است. با این حال، نسبت به سایر روش ها به منابع بیشتری نیاز دارد.

Kubernetes خود میزبان

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

به همین دلیل، خود میزبانی مناسب سازمان‌های بزرگ‌تر با نیازهای زیرساختی پیچیده یا الزامات انطباق خاص است.

مدیریت خدمات Kubernetes

برای اکثر بارهای کاری تولید و پروژه های بزرگتر، یک سرویس Kubernetes مدیریت شده، مانند Amazon EKS، Google Kubernetes Engine (GKE)، یا Azure Kubernetes Service (AKS)، یک انتخاب قانع کننده است. خدمات مدیریت شده به دلیل سهولت استفاده و استحکام آنها به شدت توصیه می شود.

اگر شروع می کنید و می خواهید یک تجربه بی دردسر برای یادگیری و توسعه داشته باشید، یک محیط محلی را انتخاب کنید. Kubernetes خود میزبان کنترل کامل را فراهم می کند اما به زمان و تخصص قابل توجهی نیاز دارد. خدمات مدیریت شده به بهترین وجه با اکثر سناریوهای تولید مطابقت دارد و مقیاس پذیری و قابلیت اطمینان را بدون هزینه های اداری ارائه می دهد.

پیشنهاد می‌کنیم بخوانید:  روش ایجاد یک مگا منو وردپرس با استفاده از افزونه و به صورت دستی

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

این آموزش Kubernetes شما را در راه اندازی یک محیط Kubernetes راهنمایی می کند روی هاستینگer با استفاده از یک اوبونتو 22.04 64 بیتی سیستم عامل. این مراحل دقیق را دنبال کنید:

  1. از طریق SSH با استفاده از a وارد VPS خود شوید terminal مشتری مانند PuTTY. اطمینان حاصل کنید که VPS شما با دستورات زیر به روز است:
sudo apt-get update && sudo apt-get upgrade
  1. Kubernetes متکی است روی آ container زمان اجرا، مانند Docker. Docker را نصب کنید روی VPS خود را با این دستور:
sudo apt install docker.io
  1. فعال کردن و راه اندازی Docker به عنوان یک سرویس سیستم:
sudo systemctl enable docker
sudo systemctl start docker
  1. ویژگی های نرم افزار را برای مدیریت مخازنی که از آن ها نصب می کنید، نصب کنید.
sudo apt-get install -y apt-transport-https
  1. با این دستورات لینوکس، کلید رسمی و مخزن GPG Kubernetes را اضافه کنید:
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list > /dev/null
  1. اکنون می توانید Kubernetes را نصب کنید. لیست بسته ها را به روز کنید و بسته های Kubernetes را نصب کنید.
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
  1. Kubernetes نیاز دارد swap از کار افتادن با استفاده از دستور زیر می توانید آن را غیرفعال کنید:
sudo swapoff -a
  1. در نهایت Master را مقداردهی اولیه کنید node با دستور زیر جایگزین کردن your-master-ip با آی پی استاد شما node.
sudo kubeadm init --apiserver-advertise-address=your-master-ip

پس از اتمام نصب، یک خروجی با دستورالعمل دریافت خواهید کرد روی چگونه گره های کارگر را به خوشه خود بپیوندید. این خروجی را ذخیره کنید، زیرا بعداً به آن نیاز خواهید داشت.

3. Kubernetes را پیکربندی کنید

پس از نصب موفقیت آمیز Kubernetes، مرحله مهم بعدی در این آموزش Kubernetes پیکربندی خوشه شما است. این شامل راه اندازی گره ها و فراداده های pod و همچنین اجرای اقدامات امنیتی برای محافظت از خوشه شما است. بیایید شیرجه بزنیم:

  1. یک بار استاد شما node بالا است، با استفاده از دستور ارائه شده در پایان نصب Kubernetes، گره های کارگر را با master ملحق کنید:
sudo kubeadm join [your-master-ip]:[your-port] --token [your-token] --discovery-token-ca-cert-hash [your-hash]
  1. برای راه اندازی شبکه پاد، می توانید یک افزونه شبکه مانند نصب کنید کالیکو با استفاده از دستور زیر:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
  1. برای اطمینان از اینکه همه چیز به درستی کار می کند، اجرا کنید:
kubectl get nodes

خوشه Kubernetes شما اکنون باید عملیاتی باشد روی VPS شما

در مورد امنیت، توصیه می کنیم اقدامات زیر را اعمال کنید:

  • دسترسی API را فقط به IP های قابل اعتماد محدود کنید.
  • برای محدود کردن مجوزها، کنترل دسترسی مبتنی بر نقش (RBAC) را فعال کنید روی نقش های درون خوشه شما
  • برای جلوگیری از آسیب‌پذیری‌های امنیتی احتمالی، به‌طور منظم تمام اجزای خوشه Kubernetes خود را به‌روزرسانی کنید.

اینجا در هاستینگer، ما ویژگی های تخصصی را برای امنیت بیشتر VPS شما ارائه می دهیم. اینها شامل راه حل فایروال مبتنی بر ابر است که از سرور مجازی شما در برابر تهدیدات اینترنتی بالقوه محافظت می کند.

Hostinger  راه حل فایروال مبتنی بر ابر در بخش VPSHostinger  راه حل فایروال مبتنی بر ابر در بخش VPS

علاوه بر این، اسکنر بدافزار قوی ما که با Monarx ادغام شده است، نظارت فعال و امنیت VPS شما را با شناسایی، مدیریت و پاکسازی فایل‌های در معرض خطر و مخرب امکان پذیر می‌سازد.

Hostinger  اسکنر بدافزار در بخش VPSHostinger  اسکنر بدافزار در بخش VPS

می توانید با دسترسی به هر دو ویژگی را فعال کنید VPS بخش روی hPanel.

4. دسترسی کاربر را تنظیم کنید و داشبورد را پیمایش کنید

هنگامی که خوشه شما راه اندازی و اجرا می شود، گام بعدی مدیریت دسترسی و مجوزهای کاربر است روی نقش ها یا آدرس های IP این تضمین می کند که فقط افراد مجاز می توانند تغییراتی در محیط Kubernetes شما ایجاد کنند.

  1. برای این آموزش، یک حساب کاربری با نام ایجاد می کنیم جان با استفاده از دستور زیر با خیال راحت از نام دیگری استفاده کنید.
kubectl create serviceaccount john
  1. تنظیم نقش الزام آور برای جان. ویرایشگر نانو را برای ایجاد فایل YAML باز کنید:
nano john-role.yaml
  1. محتوای زیر را درج کنید که مجموعه جان به عنوان یک مدیر خوشه، یک نقش از پیش تعریف شده در Kubernetes:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: john-cluster-admin-binding
subjects:
- kind: User
  name: john
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io
  1. ذخیره کنید و از ویرایشگر خارج شوید.
  2. برای راه اندازی کنترل دسترسی مبتنی بر نقش (RBAC) برای جان، دستور زیر را اجرا کنید:
kubectl apply -f john-role.yaml
  1. با اجرای زیر می‌توانید تأیید کنید که نقش‌ها و مجوزها به درستی اعمال می‌شوند:
kubectl get roles
kubectl get rolebindings
  1. برای یک رویکرد بصری تر برای مدیریت خوشه خود، داشبورد Kubernetes را با استفاده از این دستور نصب کنید:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml
  1. پروکسی شبکه را برای دسترسی به داشبورد راه اندازی کنید:
kubectl proxy
  1. مرورگر خود را باز کرده و به آن بروید http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/ برای دسترسی به داشبورد

هنگامی که با موفقیت به داشبورد دسترسی پیدا کردید، می توانید از آن برای مدیریت و نظارت بر خوشه Kubernetes خود استفاده کنید. این داشبورد یک رابط گرافیکی برای کارهای مختلف Kubernetes از جمله مدیریت منابع، بازرسی گزارش و بررسی سلامت خوشه ارائه می دهد.

روش استقرار برنامه ها روی کوبرنتیس

استقرار برنامه های کاربردی روی خوشه Kubernetes یک گام مهم برای استفاده از پتانسیل کامل است container orchestration.

بیایید در این آموزش Kubernetes به راه اندازی و اجرای برنامه شما ادامه دهیم.

1. برنامه خود را آماده کنید

قبل از استقرار هر برنامه ای روی Kubernetes، درک اصول اولیه کانتینرسازی بسیار مهم است. شما باید برنامه خود و وابستگی های آن را در یک واحد بسته بندی کنید container با استفاده از داکر یا هر کدام container موتور

این رویکرد تک باینری تضمین می کند که برنامه شما به طور مداوم رفتار می کند، چه اینطور باشد روی یک مجرد node یا چندین گره، از بین بردن مسائل خاص محیطی. برای ایجاد یک Docker container، این مراحل را دنبال کنید:

  1. فایلی ایجاد کنید که حاوی دستوراتی برای ساختن تصویر داکر باشد. این Dockerfile باید تصویر پایه را مشخص کند و مراحل بسته بندی برنامه شما را در یک برنامه مشخص کند container.
# Use an existing Docker image as a base
FROM node:14
# Set the working kube directory in the container
WORKDIR /app
# Copy the application code into the container
COPY . /app
# Install any needed packages
RUN npm install
# Specify the command to run روی container start
CMD ["npm", "start"]
  1. پس از ایجاد Dockerfile، به دایرکتوری حاوی آن بروید. دستور زیر را برای ساخت تصویر Docker اجرا کنید و جایگزین کنید نام کاربری شما با نام واقعی برنامه شما:
docker build -t your-application-name .

2. اولین برنامه را مستقر کنید

پس از کانتینری کردن برنامه، وقت آن است که آن را در خوشه Kubernetes خود مستقر کنید. برای انجام این کار، باید یک استقرار Kubernetes ایجاد کنید.

این به پلتفرم می‌گوید که چگونه نمونه‌های برنامه کانتینری خود را که در Kubernetes Pods سازماندهی شده‌اند ایجاد و به‌روزرسانی کند. در اینجا مراحل کامل وجود دارد:

  1. استقرار را در فایلی به نام ایجاد کنید your-app-deployment.yaml. این فایل YAML مشخص می کند که Kubernetes باید Docker شما را اجرا کند container یک پورت خاص را تصویر و در معرض دید قرار دهید. جایگزین کردن نام کاربری شما و تصویر تو docker بر این اساس.
apiVersion: apps/v1
kind: Deployment
metadata:
  name: your-application-name
spec:
  replicas: 2
  selector:
    matchLabels:
      app: your-application-name
  template:
    metadata:
      labels:
        app: your-application-name
    spec:
      containers:
      - name: your-application-name
        image: your-docker-image
        ports:
        - containerPort: 80
  1. برای اعمال این استقرار، دستور زیر را اجرا کنید:
kubectl apply -f your-app-deployment.yaml
  1. سپس، یک فایل YAML اعلامی دیگر به نام ایجاد کنید your-app-service.yaml. این استقرار شما را به عنوان یک سرویس نشان می دهد و باعث می شود شما container قابل دسترسی از طریق شبکه
apiVersion: v1
kind: Service
metadata:
  name: your-application-name
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: your-application-name
  1. برای دسترسی به برنامه خود، این دستور را اجرا کنید:
kubectl apply -f your-app-service.yaml
  1. برای اطمینان از اینکه Deployment شما آماده و اجرا می شود، با موارد زیر بررسی کنید:
kubectl get deployments
  1. برای پیدا کردن IP و پورت در معرض، موارد زیر را اجرا کنید:
kubectl get services

3. برنامه خود را مقیاس کنید

مقیاس‌گذاری در Kubernetes به لطف ویژگی‌های داخلی قوی آن مانند مجموعه‌های مشابه، که به عنوان واحدهای منطقی برای مقیاس‌بندی عمل می‌کنند، ساده است. اینها تضمین می‌کنند که تعداد از پیش تعیین‌شده‌ای از غلاف‌های یکسان در حال اجرا هستند، و سازگاری با حجم‌های کاری مختلف و خواسته‌های کاربر را آسان‌تر می‌کنند.

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

  1. برای درک تنظیمات فعلی خود، دستور زیر را اجرا کنید:
kubectl get deployments
  1. برای افزایش تعداد کپی ها از دستور زیر استفاده کنید. به یاد داشته باشید که جایگزین کنید استقرار-نام شما و تعداد ماکت با جزئیات خاص شما:
kubectl scale deployments/your-deployment-name --replicas=number-of-replicas
  1. برای تأیید موفقیت‌آمیز بودن عملیات مقیاس‌بندی، با دستور زیر از استقرارهای خود بازدید کنید:
kubectl get deployments

احساس رایگان برای آزمایش با تعداد مختلف از ماکت بر اساس روی نیازهای برنامه شما مراقب بودن روی معیارهای عملکرد و در حین پیش رفتن تنظیمات را انجام دهید.

4. نظارت و مدیریت برنامه ها

نظارت و مدیریت برنامه های شما در هنگام کار با اشیاء Kubernetes حیاتی است. استفاده از ابزارهایی مانند Prometheus برای جمع آوری معیارها و Grafana برای تجسم داده ها می تواند بازی را تغییر دهد. در اینجا خلاصه ای از روش نظارت بر عملکرد برنامه شما آورده شده است.

  1. Prometheus را با استفاده از Helm با اجرای این دستور نصب کنید:
helm install prometheus stable/prometheus
  1. هنگامی که Prometheus راه اندازی شد، به نصب Grafana برای مشاهده دقیق معیارهای خود ادامه دهید:
helm install grafana stable/grafana
  1. با وجود هر دو ابزار، Grafana را پیکربندی کنید تا معیارها را از Prometheus استخراج کند. ConfigMap را با استفاده از:
kubectl edit configmap grafana-datasources -n monitoring

برای شروع نظارت مراحل زیر را دنبال کنید:

  1. برای شروع نظارت اولیه، از صادرکنندگان متریک استفاده کنید. تنظیمات خود را با این دستور اعمال کنید:
kubectl apply -f exporter-config.yaml
  1. برای بررسی معیارهای مختلف برای برنامه کانتینری خود به داشبورد Grafana خود بروید.

به‌علاوه، به‌روزرسانی منظم برنامه‌های شما عملکرد مطلوب را تضمین می‌کند.

  1. برای به روز رسانی برنامه خود بدون توقف، از ویژگی به روز رسانی چرخشی استفاده کنید:
kubectl rolling-update your-old-controller your-new-controller
  1. اگر به‌روزرسانی طبق برنامه پیش نرود، Kubernetes به شما کمک می‌کند به نسخه قبلی برگردید. این به ویژه هنگام کار با غلاف ها و ظروف جدید مفید است.
kubectl rollout undo deployments/your-deployment-name

Kubernetes همچنین به شما امکان می دهد لیستی از غلاف های در حال اجرا را مشاهده کنید و مدیریت کانتینرهای جدید و موجود را آسان تر می کند. با خیال راحت از دستور استفاده کنید kubectl غلاف ها را دریافت می کند برای فهرست کردن غلاف ها به عنوان بخشی از روال نظارت خود.

آموزش Kubernetes برای سال 1403: یادگیری اصول موثر Container مدیریتآموزش Kubernetes برای سال 1403: یادگیری اصول موثر Container مدیریت
آموزش Kubernetes برای سال 1403: یادگیری اصول موثر Container مدیریت 10

بهترین تمرینات Kubernetes

Kubernetes یک ابزار منبع باز است که مزایای زیادی را ارائه می دهد. برای استفاده کامل از قابلیت های آن، رعایت بهترین شیوه های توسعه یافته در جامعه Kubernetes بسیار مهم است.

بهینه سازی مدیریت منابع

مدیریت منابع در Kubernetes برای عملکرد و پایداری برنامه های شما بسیار مهم است. با تعریف محدودیت‌های منابع و درخواست‌ها برای اشیاء مختلف مانند pods، یک محیط پایدار برای مدیریت برنامه‌های کانتینری ایجاد می‌کنید.

محدودیت‌های منابع، استفاده از CPU و حافظه را محدود می‌کند تا از هجوم منابع جلوگیری کند، در حالی که درخواست‌های منبع تضمین می‌کنند که کانتینرهای شما حداقل منابع مورد نیاز را دارند. یافتن تعادل بین این دو کلید برای عملکرد بهینه بدون اتلاف منابع است.

از بررسی های بهداشتی و خود درمانی اطمینان حاصل کنید

یکی از اصول اصلی Kubernetes حفظ وضعیت مطلوب برنامه های شما است.

بررسی های سلامت از طریق کاوشگرهای آمادگی و زنده بودن برای این امر ضروری است. کاوشگرهای آمادگی به مدیریت ترافیک ورودی با ارزیابی اینکه آیا a container برای آن آماده است، در حالی که کاوشگرهای زنده نگه داشتن زبانه ها روی را containerسلامتی مداوم

کاوشگرهای زنده ناموفق، Kubernetes را برای جایگزینی مشکل ساز تحریک می کند container، حفظ وضعیت مطلوب برنامه کانتینری بدون دخالت دست.

تنظیمات و اسرار امن

امنیت نمی تواند به خطر بیفتد، به خصوص زمانی که با داده های حساس و تنظیمات پیکربندی سروکار دارید. Kubernetes راه حل های قوی مانند ConfigMaps و Secrets ارائه می دهد.

پیشنهاد می‌کنیم بخوانید:  روش نصب MongoDB روی اوبونتو در سال 1403

ConfigMaps داده‌های پیکربندی و اسرار را به‌طور امن حاوی اطلاعات حساسی مانند کلیدهای API و رمزهای عبور ذخیره می‌کند. اجرای این موارد داده های حساس شما را رمزگذاری می کند و فقط برای کاربران مجاز قابل دسترسی است.

Rolling Updates و Rollbacks را اجرا کنید

ماهیت پویا برنامه های مدرن مستلزم یک استراتژی کارآمد برای به روز رسانی و بازگشت است. Kubernetes در این زمینه با استراتژی به روز رسانی چرخشی خود برتر است. کانتینرهای قدیمی به تدریج با معرفی نسخه‌های جدید کنار گذاشته می‌شوند و انتقال یکپارچه و استقرار بدون توقف را تضمین می‌کنند.

این سرویس بدون وقفه را حفظ می‌کند و حتی زمانی که تغییرات قابل توجهی در برنامه‌های کانتینری شما اتفاق می‌افتد، تجربه کاربری برتر را تضمین می‌کند.

عیب یابی مشکلات رایج Kubernetes

در این بخش، برخی از مشکلات رایجی که ممکن است در مورد Kubernetes با آن مواجه شوید را بررسی می کنیم و به شما نشان می دهیم که چگونه آنها را به طور موثر تشخیص داده و حل کنید.

شکست پاد

این خرابی‌ها زمانی اتفاق می‌افتند که غلاف‌ها نمی‌توانند آنطور که انتظار می‌رود کار کنند، و باعث می‌شود کانتینرهای آن‌ها در انجام وظایف مورد نظر خود شکست بخورند. این خرابی ها می توانند در دسترس بودن و عملکرد برنامه های شما را مختل کنند.

دلایل رایج خرابی غلاف عبارتند از:

  • محدودیت های منابع – زمانی که پادها به CPU، حافظه یا منابع دیگر نیاز دارند، ممکن است از کار بیفتند روی را node. این می تواند منجر به فرسودگی منابع شود و باعث پایان یافتن غلاف شود.
  • تنظیمات اشتباه پیکربندی های نادرست، مانند تعیین نام اشتباه تصویر یا نصب حجم های نادرست.
  • مسائل مربوط به تصویر مشکلی با چیزی داشتن container تصاویر، مانند وابستگی‌های از دست رفته یا شکست‌های کشش تصویر، می‌توانند منجر به خرابی pod شوند.

هنگامی که یک غلاف از کار می افتد، این مراحل را برای شناسایی و رفع مشکل دنبال کنید:

  1. استفاده کنید kubectl توصیف pod دستور مشاهده اطلاعات دقیق در مورد غلاف، از جمله رویدادها، گزارش‌ها و جزئیات پیکربندی. به دنبال پیام‌های خطا و رویدادهایی باشید که می‌توانند شما را به سمت علت شکست راهنمایی کنند.
  2. درخواست‌های منابع و محدودیت‌های غلاف را در پیکربندی آن مرور کنید. اطمینان حاصل کنید که منابع مورد نیاز غلاف با آن مطابقت دارد nodeمنابع موجود
  3. استفاده کنید لاگ های کوبکتل برای بررسی سیاهههای مربوط به ظروف غلاف. Container گزارش‌ها اغلب حاوی اطلاعات ارزشمندی در مورد آنچه اشتباه بوده است.
  4. مراجع تصویر غلاف، متغیرهای محیطی، پایه‌های تنظیم صدا و سایر تنظیمات را بررسی کنید تا مطمئن شوید که درست هستند.
  5. مشکلات مربوط به شبکه، مانند پیکربندی DNS یا مشکلات اتصال، که ممکن است باعث از کار افتادن پاد شود را برطرف کنید.
  6. اگر node مشکلاتی را تجربه می کند، به آن مشکلات رسیدگی کنید یا به Kubernetes اجازه دهید به طور خودکار غلاف را به یک غلاف سالم تغییر دهد node.

مشکلات شبکه

مشکلات شبکه در یک خوشه Kubernetes می تواند ارتباط بین پادها و سرویس ها را مختل کند و بر عملکرد برنامه های شما تأثیر بگذارد. در اینجا برخی از مشکلات مربوط به شبکه وجود دارد که ممکن است با آن مواجه شوید:

  • اتصال سرویس – هنگامی که سرویس ها نمی توانند با یکدیگر ارتباط برقرار کنند، برنامه ها ممکن است از کار بیفتند. مشکلات اتصال می تواند ناشی از تعاریف سرویس، خط مشی های شبکه، یا مشکلات اساسی شبکه باشد.
  • وضوح DNS مشکلات DNS می تواند مشکلاتی را در کشف سرویس و ارتباط ایجاد کند. همانطور که ارتباطات پاد به پاد متکی است روی DNS، پیکربندی نادرست DNS می تواند منجر به خرابی شود.
  • پارتیشن بندی شبکه در سیستم های توزیع شده، پارتیشن بندی شبکه زمانی اتفاق می افتد که لینک های شبکه مختل شوند یا گره ها ایزوله شوند. این می تواند منجر به ناهماهنگی داده ها و اختلال در خدمات شود.

در اینجا مراحل کلیدی برای رسیدگی به مشکلات شبکه در Kubernetes آمده است:

  1. تعاریف خدمات خود را از نظر صحت بررسی کنید. مطمئن شوید که نام‌های سرویس و پورت‌ها دقیق هستند. این kubectl خدمات دریافت می کند دستور می تواند به شما در بررسی جزئیات سرویس کمک کند.
  2. خط مشی های شبکه خود را که جریان ترافیک بین پادها را کنترل می کند، مرور کنید. اطمینان حاصل کنید که خط‌مشی‌ها به‌طور مناسبی پیکربندی شده‌اند تا ترافیک مورد نظر را مجاز یا رد کنند.
  3. تأیید کنید که تنظیمات DNS در Kubernetes و در سطح کلاستر درست است. Kubernetes باید به طور خودکار پیکربندی های DNS را مدیریت کند، اما ممکن است تنظیمات اشتباه رخ دهد.
  4. ابزارهایی مانند nslookup یا حفر کردن می تواند به تشخیص مشکلات DNS کمک کند. از آنها برای آزمایش وضوح DNS در کلاستر خود استفاده کنید.
  5. اگر از افزونه‌های شبکه مانند Calico یا Flannel استفاده می‌کنید، پیکربندی‌ها و گزارش‌های آن‌ها را برای مشکلات احتمالی شبکه بررسی کنید.
  6. قدرت نفوذ kube-proxy برای مدیریت ارتباطات شبکه بین سرویس ها و پادها.

برای افزایش امنیت در خوشه Kubernetes خود، اجرای سیاست های شبکه را در نظر بگیرید. خط مشی های شبکه تعریف می کنند که چگونه پادها می توانند با یکدیگر و سایر منابع ارتباط برقرار کنند. آنها به محدود کردن ترافیک و محافظت از خوشه شما در برابر دسترسی غیرمجاز یا اتصالات شبکه ناخواسته کمک می کنند.

چالش های ذخیره سازی مداوم

در Kubernetes، مدیریت ذخیره‌سازی پایدار برای اجرای برنامه‌های دارای حالت حیاتی است. با این حال، عدم مدیریت موثر ذخیره سازی می تواند منجر به از دست رفتن داده ها، اختلال در برنامه ها و عملکرد ضعیف شود.

مشکلات رایج مربوط به ذخیره سازی دائمی عبارتند از:

  • تخصیص منابع – دست کم گرفتن نیازهای ذخیره سازی می تواند منجر به از دست دادن داده ها شود، در حالی که تامین بیش از حد می تواند منجر به هزینه های غیر ضروری شود.
  • عدم تطابق حجم دائمی (PV) و کلاس ذخیره سازی – پیکربندی نادرست بین PV ها و کلاس های ذخیره سازی می تواند منجر به مشکلات سازگاری شود و اتصال ذخیره سازی مناسب به غلاف های شما را دشوار کند.
  • از دست رفتن داده ها – ممکن است به دلایل مختلفی مانند خرابی پاد، حذف یا خرابی سخت افزار رخ دهد.

هنگامی که با چالش های ذخیره سازی مداوم در محیط Kubernetes خود مواجه می شوید، این مراحل را برای حل آنها دنبال کنید:

  1. به طور منظم نیازهای ذخیره سازی برنامه خود را ارزیابی کنید و درخواست های منابع و محدودیت ها را تنظیم کنید. از معیارها و ابزارهای نظارتی برای شناسایی منابع کم یا بیش از حد تهیه شده استفاده کنید.
  2. مطمئن شوید که PV ها و کلاس های ذخیره سازی شما مطابقت مناسبی دارند. پیکربندی کلاس ذخیره سازی خود را بررسی کنید تا تضمین کنید که ویژگی های مورد نظر مانند عملکرد و حالت های دسترسی را ارائه می دهد.
  3. گزینه های بازیابی اطلاعات مانند عکس های فوری را برای بازیابی اطلاعات از دست رفته یا خراب کاوش کنید. راه‌حل‌های پشتیبان‌گیری که با ارائه‌دهنده فضای ذخیره‌سازی شما یکپارچه می‌شوند نیز به بازیابی داده‌ها کمک می‌کنند.
  4. پشتیبان گیری را خودکار کنید process برای اطمینان از حفاظت منظم و مداوم از داده ها. راه حل های پشتیبان گیری خودکار یا اسکریپت هایی را که در فواصل زمانی برنامه ریزی شده اجرا می شوند، پیاده سازی کنید.
  5. راه حل ذخیره سازی را انتخاب کنید که به راحتی بتواند نیازهای رو به رشد ذخیره سازی را برآورده کند. سیستم‌های ذخیره‌سازی را پیاده‌سازی کنید که می‌توانند به صورت پویا گسترش یابند زیرا برنامه‌های کانتینری‌شده شما به فضای ذخیره‌سازی بیشتری نیاز دارند.

مقیاس بندی و عملکرد خوشه

مقیاس پذیری یک ویژگی تعیین کننده Kubernetes است که به برنامه ها اجازه می دهد تا با بارهای کاری متفاوت سازگار شوند. با این حال، ممکن است با رشد برنامه های خود با چالش های مقیاس بندی و گلوگاه های عملکردی مواجه شوید.

مسائل رایج در این زمینه عبارتند از:

  • اختلاف منابع رقابت برای منابع، مانند CPU و حافظه، در میان پادهای مختلف می تواند منجر به مشکلات عملکرد شود. پادهای با محدودیت منابع ممکن است عملکرد مطلوبی نداشته باشند.
  • تراکم شبکه – افزایش ترافیک می تواند پهنای باند شبکه را اشباع کند و منجر به تاخیر در ارتباط و کاهش عملکرد شود.
  • مدیریت ناکارآمد منابع – درخواست ها و محدودیت های ناکارآمد منابع می تواند منابع شما را هدر دهد.

برای بهینه سازی عملکرد خوشه و رفع چالش های مقیاس بندی، استراتژی های زیر را در نظر بگیرید:

  1. به طور منظم درخواست های منابع و محدودیت های مربوط به غلاف های خود را بررسی کنید. این مقادیر را بر اساس تنظیم کنید روی الزامات برنامه و در دسترس بودن منابع
  2. برای فعال کردن مقیاس بندی پویا غلاف ها، مقیاس خودکار غلاف افقی (HPA) را پیاده سازی کنید. روی استفاده از منابع یا معیارهای سفارشی این تضمین می‌کند که برنامه‌های شما می‌توانند به طور خودکار با افزایش ترافیک بدون دخالت دستی مقابله کنند.
  3. نظارت بر ترافیک شبکه و اجرای سیاست های شبکه برای تنظیم جریان ترافیک. استفاده از a را در نظر بگیرید container رابط شبکه (CNI) و افزونه هایی برای افزایش عملکرد شبکه.
  4. مشغول کردن kube-controller-manager برای مقیاس بندی خودکار گره ها بر اساس روی نیازهای منابع
  5. کد برنامه کانتینری خود را مرور و بهینه سازی کنید و از استفاده کارآمد از منابع اطمینان حاصل کنید. استفاده را در نظر بگیرید container orchestration بهترین شیوه ها برای بهبود عملکرد
  6. به‌صورت دوره‌ای تصاویر، ظروف، سرویس‌ها و حجم‌های Docker استفاده نشده را حذف کنید. می توانید از دستوراتی مانند هرس سیستم داکر برای داکر و kubectl حذف کنید برای پاکسازی منابع Kubernetes.

نتیجه

Kubernetes ابزاری است که به مدیریت و استقرار برنامه‌ها کمک می‌کند و باعث می‌شود آنها به راحتی اجرا شوند روی سرورها، هم در محیط های محلی و هم در فضای ابری.

در این آموزش Kubernetes برای مبتدیان، ما اجزای اصلی، ویژگی های کلیدی، و همچنین جوانب مثبت و منفی را پوشش داده ایم. ما به شما نشان داده‌ایم که چگونه محیط Kubernetes خود را راه‌اندازی کنید و برنامه‌ها را پیاده‌سازی کنید.

Kubernetes با مقیاس بندی پویا، توانایی های خود درمانی و طیف گسترده ای از برنامه های افزودنی، ابزاری قدرتمند برای مدیریت برنامه های کاربردی کانتینری در یک محیط توزیع شده است.

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

سایر ابزارهای استقرار را بیاموزید

روش استفاده از کمال برای استقرار برنامه های وب
روش نصب جنکینز روی اوبونتو
راهنمای نصب و راه اندازی Redis روی اوبونتو

سوالات متداول آموزش Kubernetes

این بخش به رایج ترین سوالات در مورد Kubernetes پاسخ خواهد داد.

Kubernetes برای چه مواردی استفاده می شود؟

Kubernetes در درجه اول استفاده می شود container orchestration، استقرار، مقیاس بندی و مدیریت برنامه های کاربردی کانتینری را خودکار می کند. استفاده کارآمد از منابع را تضمین می‌کند، مقیاس‌پذیری را افزایش می‌دهد، و مدیریت چرخه عمر برنامه را در یک محیط ابری ساده می‌کند، و آن را به انتخابی ایده‌آل برای اجرای برنامه‌های مدرن و توزیع‌شده تبدیل می‌کند.

آیا Kubernetes همان داکر است؟

نه، Kubernetes و Docker اهداف متفاوتی دارند. Docker یک پلتفرم کانتینری‌سازی است که برنامه‌ها و وابستگی‌های آنها را در کانتینرها بسته‌بندی می‌کند. در همین حال، Kubernetes یک orchestration پلتفرمی که استقرار، مقیاس‌بندی و عملکرد آن کانتینرها را در یک خوشه مدیریت می‌کند. Kubernetes می تواند کانتینرهای ایجاد شده با استفاده از Docker و موارد دیگر را هماهنگ کند container زمان اجرا

چگونه یادگیری Kubernetes را شروع کنم؟

برای شروع یادگیری Kubernetes، با رسمی آن شروع کنید آموزش و مستندات. سپس، یک خوشه Kubernetes را به صورت محلی نصب کنید یا روی یک ارائه دهنده ابر سپس، مفاهیم Kubernetes مانند پادها، خدمات و استقرارها را بررسی کنید. با استقرار و مدیریت برنامه ها، یادگیری خود را عملی کنید. در نهایت، در حین پیشرفت به انجمن ها و انجمن های آنلاین بپیوندید تا از آنها پشتیبانی و راهنمایی کنید روی سفر یادگیری شما

آیا Kubernetes برای پروژه های کوچک مناسب است یا عمدتاً برای برنامه های کاربردی در مقیاس بزرگ است؟

Kubernetes همه کاره است و می تواند هم برای پروژه های کوچک و هم برای برنامه های کاربردی در مقیاس بزرگ استفاده شود. در حالی که ویژگی‌های قوی برای مدیریت استقرارهای پیچیده و بزرگ ارائه می‌دهد، می‌تواند با ارائه کانتینرسازی، مقیاس‌بندی و پروژه‌های کوچک سودمند باشد. orchestration توانایی ها. با این حال، سطح پیچیدگی در راه اندازی و نگهداری ممکن است متفاوت باشد، بنابراین انتخاب بستگی دارد روی الزامات پروژه