نکات کلیدی
1. کوبرنتیس: ارکستراسیون کانتینرها، نه فقط داکر
کوبرنتیس یک سیستم ارکستراسیون کانتینر است که بهطور خاص برای کانتینرهای مبتنی بر داکر طراحی شده است.
فراتر از داکر. در حالی که داکر یک پلتفرم محبوب برای کانتینرها است، کوبرنتیس بهگونهای طراحی شده که مستقل از زمان اجرای کانتینر باشد. این سیستم میتواند کانتینرهای ایجاد شده با داکر، rkt یا سایر زمانهای اجرای کانتینر که رابط زمان اجرای کانتینر (CRI) را پیادهسازی میکنند، ارکستراسیون کند. این انعطافپذیری اجازه میدهد تا دامنه وسیعتری از فناوریهای کانتینر در محیط کوبرنتیس استفاده شود.
- کوبرنتیس از فناوریهای کانتینر لینوکس برای ایزولهسازی استفاده میکند.
- داکر یک پلتفرم برای بستهبندی، توزیع و اجرای برنامهها است.
- rkt یک موتور کانتینر لینوکس دیگر است که بر امنیت و استانداردهای باز تأکید دارد.
انتزاع کلید است. کوبرنتیس فناوری زیرین کانتینر را انتزاع میکند و به توسعهدهندگان اجازه میدهد تا بر روی استقرار و مدیریت برنامهها تمرکز کنند و نه جزئیات زمان اجرای کانتینر. این انتزاع برای قابلیت حمل و تعاملپذیری در محیطهای مختلف حیاتی است.
- کوبرنتیس کل دیتاسنتر را بهعنوان یک پلتفرم استقرار واحد ارائه میدهد.
- توسعهدهندگان میتوانند برنامهها را از طریق کوبرنتیس بدون نیاز به کمک مدیران سیستم مستقر کنند.
- مدیران سیستم میتوانند با اطمینان بخوابند زیرا کوبرنتیس بهطور خودکار با نودهای خراب برخورد میکند.
تمرکز بر ارکستراسیون. نقش اصلی کوبرنتیس ارکستراسیون کانتینرها است و نه اینکه خود یک زمان اجرای کانتینر باشد. این سیستم ابزارها و مکانیزمهایی برای استقرار، مقیاسگذاری و مدیریت برنامههای کانتینری ارائه میدهد، صرفنظر از فناوری زیرین کانتینر. این تمرکز بر ارکستراسیون است که کوبرنتیس را به یک پلتفرم قدرتمند برای توسعه برنامههای مدرن تبدیل میکند.
2. پادها: واحد اتمی کوبرنتیس
یک پاد گروهی از یک یا چند کانتینر بههمپیوسته است که همیشه در یک نود کاری و در همان فضای نام لینوکس اجرا میشوند.
پادها بهعنوان میزبانهای منطقی. پادها بلوکهای بنیادی در کوبرنتیس هستند که نمایانگر گروهی از یک یا چند کانتینر هستند که منابع را به اشتراک میگذارند و همیشه در همان نود قرار دارند. آنها محیطی شبیه میزبان منطقی برای برنامهها فراهم میکنند و به کانتینرها اجازه میدهند تا بهگونهای با یکدیگر ارتباط برقرار کنند و دادهها را به اشتراک بگذارند که گویی بر روی یک ماشین واحد اجرا میشوند.
- پادها مانند ماشینهای منطقی جداگانه با IP، نام میزبان، فرآیندها و غیره هستند.
- پادها واحد پایهای مقیاسگذاری هستند.
- پادها زودگذر هستند.
کانتینرها درون پادها. کانتینرهای درون یک پاد شبکه و فضای نام UTS یکسانی را به اشتراک میگذارند و به آنها اجازه میدهد تا از طریق localhost ارتباط برقرار کنند و همان نام میزبان را ببینند. آنها همچنین میتوانند از طریق حجمها فایلها را به اشتراک بگذارند. این هممکانی و اشتراکگذاری منابع، پادها را برای اجرای اجزای برنامه بههمپیوسته ایدهآل میسازد.
- کانتینرها در یک پاد آدرس IP و فضای پورت یکسانی را به اشتراک میگذارند.
- کانتینرها در یک پاد میتوانند از طریق IPC ارتباط برقرار کنند.
- کانتینرها در یک پاد میتوانند از طریق حجمها فایلها را به اشتراک بگذارند.
سازماندهی کانتینرها. کانتینرها باید بر اساس وابستگیها و نیازهای مقیاسگذاری در پادها گروهبندی شوند. فرآیندهای بههمپیوسته که نیاز به اجرای همزمان دارند باید در یک پاد قرار گیرند، در حالی که اجزای مستقل باید در پادهای جداگانه مستقر شوند. این رویکرد اجازه میدهد تا از منابع بهبهترین نحو استفاده شود و مقیاسگذاری انعطافپذیرتری فراهم گردد.
- یک کانتینر نباید چندین فرآیند را اجرا کند.
- یک پاد نباید شامل چندین کانتینر باشد اگر نیازی به اجرای آنها بر روی یک ماشین وجود نداشته باشد.
3. کنترلکنندهها: اطمینان از سلامت و مقیاس برنامه
کوبرنتیس با راهاندازی مجدد خودکار کانتینرها، سلامت برنامهها را حفظ میکند.
کنترلکنندهها بهعنوان ناظر. کنترلکنندههای کوبرنتیس اجزای فعالی هستند که بهطور مداوم وضعیت خوشه را نظارت میکنند و اقداماتی برای تطبیق وضعیت واقعی با وضعیت مطلوب انجام میدهند. آنها تغییرات منابع را زیر نظر دارند و عملیات لازم را برای اطمینان از اینکه سیستم همیشه بهدرستی اجرا میشود، انجام میدهند.
- کنترلکنندهها تغییرات منابع را از سرور API زیر نظر دارند.
- کنترلکنندهها عملیات لازم را برای تطبیق وضعیت واقعی با وضعیت مطلوب انجام میدهند.
- کنترلکنندهها بهطور مستقیم با یکدیگر ارتباط برقرار نمیکنند.
ReplicationControllers و ReplicaSets. این کنترلکنندهها اطمینان حاصل میکنند که تعداد مشخصی از نسخههای پاد همیشه در حال اجرا هستند. آنها بهطور خودکار کانتینرهایی که خراب میشوند را راهاندازی مجدد میکنند و در صورت خرابی یک نود، پادها را دوباره زمانبندی میکنند. ReplicaSets نسخه جدیدتری از ReplicationControllers هستند و انتخابگرهای برچسبی بیشتری را ارائه میدهند.
- ReplicationControllers با راهاندازی مجدد خودکار کانتینرها، سلامت برنامهها را حفظ میکنند.
- ReplicaSets نسخه جدیدتری از ReplicationControllers هستند.
- ReplicaSets از انتخابگرهای برچسبی بیشتری استفاده میکنند.
DaemonSets و Jobs. DaemonSets اطمینان حاصل میکنند که یک پاد بر روی هر نود در خوشه اجرا میشود، در حالی که Jobs پادهایی را اجرا میکنند که یک کار قابل اتمام را انجام میدهند. این کنترلکنندهها روشهای مختلفی برای مدیریت پادها بر اساس موارد استفاده خاص ارائه میدهند.
- DaemonSets یک پاد را بر روی هر نود اجرا میکنند.
- Jobs پادهایی را اجرا میکنند که یک کار قابل اتمام را انجام میدهند.
- CronJobs بهطور دورهای یا یکبار در آینده Jobs را اجرا میکنند.
4. خدمات: فعالسازی ارتباط و کشف
خدمات نمایانگر یک مکان ثابت برای گروهی از یک یا چند پاد هستند که همه یک خدمت مشابه را ارائه میدهند.
خدمات بهعنوان نقاط پایدار. خدمات کوبرنتیس یک آدرس IP و پورت پایدار را فراهم میکنند که از طریق آن مشتریان میتوانند به یک گروه از پادها دسترسی پیدا کنند. این انتزاع اجازه میدهد تا پادها در خوشه جابجا شوند بدون اینکه بر اتصال مشتری تأثیر بگذارد.
- خدمات یک آدرس IP و پورت ثابت برای یک گروه از پادها فراهم میکنند.
- خدمات به مشتریان اجازه میدهند تا پادها را کشف و به آنها دسترسی پیدا کنند.
- خدمات اتصالات را در بین چندین پاد متوازن میکنند.
انواع خدمات. کوبرنتیس از انواع مختلف خدمات پشتیبانی میکند، از جمله ClusterIP (برای دسترسی داخلی)، NodePort (برای دسترسی خارجی از طریق پورتهای نود) و LoadBalancer (برای دسترسی خارجی از طریق یک بارگذار بار ابری). هر نوع روشهای مختلفی برای نمایانسازی خدمات به مشتریان ارائه میدهد.
- خدمات ClusterIP فقط از داخل خوشه قابل دسترسی هستند.
- خدمات NodePort از طریق یک پورت بر روی تمام نودها قابل دسترسی هستند.
- خدمات LoadBalancer از طریق یک بارگذار بار خارجی قابل دسترسی هستند.
کشف خدمات. پادها میتوانند خدمات را از طریق متغیرهای محیطی یا DNS کشف کنند. این امکان به برنامهها اجازه میدهد تا بدون نیاز به دانستن آدرسهای IP یا مکانهای خاص، به سایر خدمات متصل شوند.
- خدمات از طریق متغیرهای محیطی قابل کشف هستند.
- خدمات از طریق DNS قابل کشف هستند.
- خدمات میتوانند از طریق FQDN خود دسترسی پیدا کنند.
5. حجمها: مدیریت پایداری داده
حجمها برای به اشتراکگذاری دادهها بین کانتینرها استفاده میشوند.
حجمها بهعنوان ذخیرهسازی مشترک. حجمهای کوبرنتیس راهی برای به اشتراکگذاری دادهها و دسترسی به ذخیرهسازی پایدار بین کانتینرهای درون یک پاد فراهم میکنند. آنها بهعنوان بخشی از مشخصات پاد تعریف میشوند و همان چرخه حیات را بهعنوان پاد دارند.
- حجمها برای به اشتراکگذاری دادهها بین کانتینرها استفاده میشوند.
- حجمها برای دسترسی به ذخیرهسازی پایدار استفاده میشوند.
- حجمها به چرخه حیات یک پاد متصل هستند.
انواع حجمها. کوبرنتیس از انواع مختلف حجمها پشتیبانی میکند، از جمله emptyDir (برای ذخیرهسازی موقت)، hostPath (برای دسترسی به فایلها بر روی نود)، gitRepo (برای کلون کردن یک مخزن گیت) و حجمهای پایدار (برای دسترسی به ذخیرهسازی پایدار). هر نوع هدف متفاوتی را خدمت میکند و سطوح مختلفی از پایداری داده را فراهم میکند.
- حجمهای emptyDir برای ذخیرهسازی موقت استفاده میشوند.
- حجمهای hostPath برای دسترسی به فایلها بر روی نود استفاده میشوند.
- حجمهای gitRepo برای کلون کردن یک مخزن گیت استفاده میشوند.
- حجمهای پایدار برای دسترسی به ذخیرهسازی پایدار استفاده میشوند.
ذخیرهسازی پایدار. حجمهای پایدار (PVs) و درخواستهای حجم پایدار (PVCs) پادها را از فناوری ذخیرهسازی زیرین جدا میکنند و به توسعهدهندگان اجازه میدهند تا ذخیرهسازی را درخواست کنند بدون اینکه نیاز به دانستن جزئیات زیرساخت داشته باشند. این انتزاع برنامهها را قابل حملتر و مدیریت آنها را آسانتر میکند.
- حجمهای پایدار توسط مدیران خوشه تأمین میشوند.
- درخواستهای حجم پایدار توسط پادها برای درخواست ذخیرهسازی استفاده میشوند.
- حجمهای پایدار و درخواستهای حجم پایدار پادها را از فناوری ذخیرهسازی زیرین جدا میکنند.
6. ConfigMaps و Secrets: خارجیسازی پیکربندی
ConfigMaps و Secrets برای انتقال دادههای پیکربندی و اطلاعات حساس مانند اعتبارنامهها به برنامههای در حال اجرا در پادها استفاده میشوند.
ConfigMaps برای دادههای غیرحساس. ConfigMaps برای ذخیره دادههای پیکربندی غیرحساس، مانند تنظیمات برنامه، متغیرهای محیطی و آرگومانهای خط فرمان استفاده میشوند. آنها به شما اجازه میدهند تا پیکربندی را از کد برنامه جدا کنید و مدیریت و بهروزرسانی آن را آسانتر کنید.
- ConfigMaps برای ذخیره دادههای پیکربندی غیرحساس استفاده میشوند.
- ConfigMaps برای انتقال آرگومانهای خط فرمان به کانتینرها استفاده میشوند.
- ConfigMaps برای تنظیم متغیرهای محیطی برای کانتینرها استفاده میشوند.
Secrets برای دادههای حساس. Secrets برای ذخیره اطلاعات حساس، مانند رمزهای عبور، کلیدهای API و گواهینامهها استفاده میشوند. آنها بهصورت امن ذخیره میشوند و میتوانند بهعنوان حجمها به پادها متصل شوند یا بهعنوان متغیرهای محیطی نمایان شوند.
- Secrets برای ذخیره دادههای حساس استفاده میشوند.
- Secrets بهصورت امن ذخیره میشوند.
- Secrets میتوانند بهعنوان حجمها به پادها متصل شوند.
جداسازی پیکربندی. با استفاده از ConfigMaps و Secrets، میتوانید پیکربندی را از کد برنامه و تصاویر کانتینر جدا کنید و مدیریت و بهروزرسانی برنامههای خود را آسانتر کنید. این جداسازی نگرانیها برای ساخت سیستمهای قابل نگهداری و مقیاسپذیر حیاتی است.
- ConfigMaps و Secrets پیکربندی را از کد برنامه جدا میکنند.
- ConfigMaps و Secrets مدیریت و بهروزرسانی برنامهها را آسانتر میکنند.
- ConfigMaps و Secrets برنامهها را قابل حملتر میکنند.
7. ایمنسازی کوبرنتیس: احراز هویت، مجوز و سیاستهای شبکه
کوبرنتیس به شما این امکان را میدهد که سرور API کوبرنتیس و بهتبع آن خوشه را با استفاده از احراز هویت و مجوز ایمن کنید.
احراز هویت. کوبرنتیس از افزونههای احراز هویت برای تأیید هویت مشتریان متصل به سرور API استفاده میکند. این افزونهها میتوانند از روشهای مختلفی مانند گواهینامههای کلاینت، توکنهای احراز هویت یا احراز هویت HTTP پایه استفاده کنند.
- افزونههای احراز هویت هویت مشتریان را تأیید میکنند.
- افزونههای احراز هویت نام کاربری و گروههای کاربر احراز هویت شده را بازمیگردانند.
- ServiceAccounts برای احراز هویت پادها استفاده میشوند.
مجوز. پس از احراز هویت یک مشتری، سرور API از افزونههای مجوز برای تعیین اینکه آیا مشتری مجاز به انجام عمل درخواست شده بر روی منبع درخواست شده است، استفاده میکند. افزونه RBAC (کنترل دسترسی مبتنی بر نقش) استانداردترین افزونه مجوز در کوبرنتیس است.
- افزونههای مجوز تعیین میکنند که آیا یک مشتری مجاز به انجام یک عمل است یا خیر.
- RBAC استانداردترین افزونه مجوز در کوبرنتیس است.
- RBAC از نقشها و پیوندهای نقش برای اعطای مجوزها استفاده میکند.
سیاستهای شبکه. سیاستهای شبکه به شما این امکان را میدهند که ترافیک شبکه بین پادها را کنترل کنید و محدود کنید که کدام پادها میتوانند با یکدیگر ارتباط برقرار کنند. این به جداسازی برنامهها و جلوگیری از دسترسی غیرمجاز کمک میکند.
- سیاستهای شبکه ترافیک شبکه بین پادها را محدود میکنند.
- سیاستهای شبکه از انتخابگرهای پاد و انتخابگرهای فضای نام استفاده میکنند.
- سیاستهای شبکه از قوانین ورودی و خروجی استفاده میکنند.
8. مدیریت منابع: درخواستها، محدودیتها و QoS
کوبرنتیس میتواند بهگونهای پیکربندی شود که بهطور خودکار تعداد نسخههای در حال اجرای برنامه شما را مقیاسگذاری کند.
درخواستهای منبع. درخواستهای منبع حداقل مقدار CPU و حافظهای را که یک کانتینر برای اجرای صحیح نیاز دارد، مشخص میکنند. زمانبند از این درخواستها برای تعیین اینکه کدام نودها میتوانند پاد را میزبانی کنند، استفاده میکند.
- درخواستهای منبع بر زمانبندی تأثیر میگذارند.
- درخواستهای منبع بر اشتراکگذاری زمان CPU تأثیر میگذارند.
- درخواستهای منبع بهصورت جداگانه برای هر کانتینر مشخص میشوند.
محدودیتهای منبع. محدودیتهای منبع حداکثر مقدار CPU و حافظهای را که یک کانتینر مجاز به مصرف آن است، مشخص میکنند. اگر یک کانتینر از حد حافظه خود فراتر رود، توسط OOM killer کشته میشود.
- محدودیتهای منبع از مصرف بیش از حد منابع توسط کانتینرها جلوگیری میکنند.
- محدودیتهای منبع بهصورت جداگانه برای هر کانتینر مشخص میشوند.
- فراتر رفتن از محدودیتهای حافظه منجر به کشته شدن کانتینر میشود.
کلاسهای QoS. کوبرنتیس پادها را به سه کلاس کیفیت خدمات (QoS) تقسیم میکند: BestEffort، Burstable و Guaranteed. این کلاسها تعیین میکنند که کدام پادها در صورت کمبود حافظه ابتدا کشته میشوند.
- پادهای BestEffort ابتدا کشته میشوند.
- پادهای Guaranteed آخرین پادهایی هستند که کشته میشوند.
- پادهای Burstable در بین این دو کشته میشوند.
LimitRanges و ResourceQuotas. LimitRanges به شما این امکان را میدهند که درخواستها و محدودیتهای منبع پیشفرض، حداقل و حداکثر را برای پادها در یک فضای نام تنظیم کنید، در حالی که ResourceQuotas مقدار کل منابع موجود در یک فضای نام را محدود میکنند. این منابع به مدیریت مصرف منابع کمک میکنند و از استفاده بیش از
آخرین بهروزرسانی::
FAQ
What's Kubernetes in Action about?
- Comprehensive Guide: Kubernetes in Action by Marko Luksa is a detailed exploration of Kubernetes, a powerful system for managing containerized applications. It covers fundamental concepts, architecture, and practical applications.
- Hands-On Learning: The book emphasizes practical usage with hands-on tutorials and examples, helping readers apply concepts in real-world scenarios.
- Structured Approach: It is organized into parts that progressively build knowledge, starting from basic concepts to advanced topics, making it suitable for both beginners and experienced users.
Why should I read Kubernetes in Action?
- Expert Insights: Written by Marko Luksa, a recognized Kubernetes expert, the book offers valuable insights and best practices for both beginners and experienced users.
- Real-World Applications: It focuses on real-world scenarios and best practices, preparing readers for challenges in production environments.
- Up-to-Date Content: The book covers the latest features and updates in Kubernetes, ensuring readers learn the most current practices in container orchestration.
What are the key takeaways of Kubernetes in Action?
- Kubernetes Architecture: Readers will gain a thorough understanding of Kubernetes architecture, including the roles of the master and worker nodes.
- Pod Management: The book covers creating, managing, and scaling Pods, which is essential for maintaining application availability and performance.
- Service Discovery: It explains how to expose applications through Services, enabling seamless communication with Pods, crucial for building resilient applications.
What are the best quotes from Kubernetes in Action and what do they mean?
- "Kubernetes is not just a tool; it’s a platform.": This highlights Kubernetes as a comprehensive ecosystem for managing containerized applications.
- "The power of Kubernetes lies in its ability to automate the deployment, scaling, and management of applications.": This emphasizes Kubernetes' core benefit of reducing manual intervention.
- "Understanding the architecture is key to mastering Kubernetes.": This suggests that a solid grasp of Kubernetes' architecture is essential for effective use.
How does Kubernetes in Action explain the concept of Pods?
- Basic Deployable Units: Pods are the smallest deployable units in Kubernetes, containing one or more containers that share the same network namespace.
- Lifecycle Management: The book explains how Pods are managed by controllers to ensure the desired number of Pods are running, handling failures and scaling.
- Communication: It discusses how Pods communicate with each other and external services, emphasizing the importance of networking in Kubernetes.
What is the role of Services in Kubernetes as described in Kubernetes in Action?
- Stable Network Identity: Services provide a stable IP address and DNS name for accessing a set of Pods, abstracting the underlying Pods' IP addresses.
- Load Balancing: Services distribute traffic among the Pods they manage, ensuring no single Pod is overwhelmed, which is crucial for performance.
- Types of Services: The book explains different types of Services, such as ClusterIP, NodePort, and LoadBalancer, each serving specific use cases.
How does Kubernetes in Action address scaling applications?
- Manual and Automatic Scaling: The book discusses both manual scaling through commands and automatic scaling using Horizontal Pod Autoscalers.
- Resource Requests and Limits: It emphasizes setting resource requests and limits for Pods to ensure optimal scheduling and performance.
- Best Practices: Readers are provided with best practices for scaling, including monitoring metrics and adjusting replica counts based on demand.
What are StatefulSets, and how are they explained in Kubernetes in Action?
- Managing Stateful Applications: StatefulSets manage stateful applications requiring stable identities and persistent storage, crucial for databases.
- Stable Network Identity: Each Pod in a StatefulSet has a unique, stable network identity, simplifying the management of clustered applications.
- Persistent Storage: The book explains how StatefulSets work with PersistentVolumeClaims to ensure each Pod has access to its own storage.
How does Kubernetes in Action cover security in Kubernetes?
- Role-Based Access Control (RBAC): The book details how RBAC secures clusters by defining roles and permissions for users and service accounts.
- Pod Security Policies: It introduces Pod Security Policies to control security settings of Pods, adding an additional security layer.
- Network Policies: The book discusses using Network Policies to control traffic between Pods, allowing for fine-grained security controls.
What is the significance of CustomResourceDefinitions (CRDs) in Kubernetes in Action?
- Extending Functionality: CRDs allow users to define custom resources, extending Kubernetes capabilities beyond built-in resources.
- Creating Custom Controllers: The book explains creating custom controllers to manage CRDs, automating the lifecycle of custom resources.
- Real-World Applications: Examples illustrate how CRDs manage specific application types, enhancing Kubernetes' usability for various use cases.
How does Kubernetes manage resources?
- Resource Requests and Limits: Kubernetes allows specifying resource requests and limits for CPU and memory, ensuring containers have necessary resources.
- Scheduling Based on Requests: The Scheduler uses resource requests to determine node suitability, ensuring pods are scheduled on nodes with enough resources.
- Quality of Service Classes: Pods are categorized into QoS classes based on resource requests and limits, helping prioritize pods during resource contention.
What is the role of the Horizontal Pod Autoscaler in Kubernetes?
- Automatic Scaling: The Horizontal Pod Autoscaler adjusts the number of pod replicas based on observed CPU utilization or other metrics.
- Metrics Collection: It relies on metrics collected by cAdvisor and aggregated by Heapster to make scaling decisions.
- Configuration: Users can configure the HPA by specifying target metrics, minimum and maximum replicas, and the resource to monitor.
نقد و بررسی
کتاب Kubernetes in Action با استقبال بسیار مثبت خوانندگان مواجه شده است و آنها از پوشش جامع، توضیحات روشن و پیشرفت منطقی آن تمجید میکنند. بسیاری این کتاب را بهترین منبع در زمینهی Kubernetes میدانند که برای مبتدیان و کاربران با تجربه به یک اندازه مناسب است. خوانندگان از مثالهای دقیق، نمودارها و بررسی عمیق مفاهیم پیشرفته قدردانی میکنند. در حالی که برخی به این نکته اشاره میکنند که برخی بخشها ممکن است به دلیل تکامل سریع Kubernetes قدیمی شده باشند، اما بیشتر آنها هنوز هم محتوای اصلی را ارزشمند میدانند و با اشتیاق منتظر انتشار ویرایش جدیدی از آن هستند.