|
| 1 | +--- |
| 2 | +title: اشیاء در کوبرنتیز |
| 3 | +content_type: concept |
| 4 | +weight: 30 |
| 5 | +description: > |
| 6 | + اشیای کوبرنتیز موجودیتهای پایداری در سیستم کوبرنتیز هستند. |
| 7 | + کوبرنتیز از این موجودیتها برای نمایش وضعیت خوشه شما استفاده میکند. |
| 8 | + دربارهٔ مدل اشیای کوبرنتیز و چگونگی کار با این اشیا بیشتر بیاموزید. |
| 9 | +simple_list: true |
| 10 | +card: |
| 11 | + name: concepts |
| 12 | + weight: 40 |
| 13 | +--- |
| 14 | + |
| 15 | +<!-- overview --> |
| 16 | + |
| 17 | +این صفحه توضیح میدهد که اشیای کوبرنتیز چگونه در API کوبرنتیز نمایش داده میشوند و چگونه میتوانید آنها را در قالب `.yaml` بیان کنید. |
| 18 | + |
| 19 | +<!-- body --> |
| 20 | + |
| 21 | +## درک اشیای کوبرنتیز {#kubernetes-objects} |
| 22 | + |
| 23 | +*اشیای کوبرنتیز* موجودیتهای پایداری در سیستم کوبرنتیز هستند. کوبرنتیز از این موجودیتها برای نمایش وضعیت خوشهٔ شما استفاده میکند. این اشیا بهطور مشخص میتوانند موارد زیر را توصیف کنند: |
| 24 | + |
| 25 | +* چه برنامههای کانتینری در حال اجرا هستند (و روی کدام نودها) |
| 26 | +* منابع در دسترس برای آن برنامهها |
| 27 | +* سیاستهای مرتبط با رفتار آن برنامهها، مانند سیاستهای راهاندازی مجدد، بهروزرسانیها و تحمل خطا |
| 28 | + |
| 29 | +یک شیٔ کوبرنتیز در واقع «ثبتِ نیت» است—پس از ایجاد یک شیٔ، سیستم کوبرنتیز بهطور مداوم تلاش میکند تا از وجود آن شیٔ اطمینان حاصل کند. با ایجاد یک شیٔ، در واقع به سیستم کوبرنتیز میگویید که میخواهید بار کاری خوشهٔ شما چه شکلی باشد؛ این همان *وضعیت مطلوب* خوشه است. |
| 30 | + |
| 31 | +برای کار با اشیای کوبرنتیز—چه برای ایجاد، چه اصلاح یا حذف آنها—باید از |
| 32 | +[API کوبرنتیز](/docs/concepts/overview/kubernetes-api/) استفاده کنید. بهعنوان مثال، وقتی از |
| 33 | +رابط خط فرمان `kubectl` استفاده میکنید، این CLI فراخوانهای لازم به API کوبرنتیز را برای شما انجام میدهد. همچنین میتوانید بهطور مستقیم در برنامههای خود و با استفاده از یکی از |
| 34 | +[کتابخانههای کاربری](/docs/reference/using-api/client-libraries/) |
| 35 | +به API کوبرنتیز متصل شوید. |
| 36 | + |
| 37 | +### مشخصات و وضعیت شیء |
| 38 | + |
| 39 | +تقریباً هر شیء کوبرنتیز دو فیلد تودرتو دارد که پیکربندی شیء را کنترل میکنند: |
| 40 | +*`spec`* (مشخصات) و *`status`* (وضعیت). |
| 41 | +برای اشیایی که دارای `spec` هستند، هنگام ایجاد شیء باید این فیلد را تنظیم کنید و |
| 42 | +توصیفی از ویژگیهایی که میخواهید منبع داشته باشد ارائه دهید؛ یعنی _وضعیت مطلوب_ آن. |
| 43 | + |
| 44 | +فیلد `status` _وضعیت فعلی_ شیء را توصیف میکند و توسط سیستم کوبرنتیز و اجزای آن |
| 45 | +تأمین و بهروزرسانی میشود. |
| 46 | +{{< glossary_tooltip text="control plane" term_id="control-plane" >}} |
| 47 | +کوبرنتیز بهطور مداوم و فعال تلاش میکند وضعیت واقعی هر شیء را با وضعیت مطلوب |
| 48 | +ارائهشده توسط شما منطبق نگه دارد. |
| 49 | + |
| 50 | +برای مثال: در کوبرنتیز، **Deployment** شیئی است که میتواند یک برنامهٔ در حال اجرا روی خوشهٔ شما را نشان دهد. |
| 51 | +هنگامی که Deployment را ایجاد میکنید، ممکن است در `spec` آن مشخص کنید که سه |
| 52 | +نمونه (Replica) از برنامه باید اجرا شوند. سیستم کوبرنتیز این مشخصات را خوانده و سه |
| 53 | +نمونه از برنامهٔ موردنظر شما را اجرا میکند—و `status` را طوری بهروزرسانی میکند که |
| 54 | +با `spec` منطبق باشد. اگر یکی از این نمونهها از کار بیفتد (تغییری در وضعیت)، سیستم |
| 55 | +کوبرنتیز به اختلاف بین `spec` و `status` واکنش نشان میدهد و آن را اصلاح میکند—در این |
| 56 | +جا با راهاندازی یک نمونهٔ جایگزین. |
| 57 | + |
| 58 | +برای اطلاعات بیشتر دربارهٔ فیلدهای `spec`، `status` و متادادهها، به |
| 59 | +[قراردادهای API کوبرنتیز](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md) |
| 60 | +مراجعه کنید. |
| 61 | + |
| 62 | +### توصیف یک شیء در کوبرنتیز |
| 63 | + |
| 64 | +هنگام ایجاد یک شیء در کوبرنتیز، باید `spec` آن را که وضعیت مطلوب را توصیف میکند به همراه |
| 65 | +برخی اطلاعات پایه (مانند نام) ارائه دهید. |
| 66 | +وقتی از API کوبرنتیز برای ایجاد شیء استفاده میکنید (مستقیم یا از طریق `kubectl`)، |
| 67 | +درخواست API باید این اطلاعات را بهصورت JSON در بدنهٔ درخواست داشته باشد. |
| 68 | +اغلب، این اطلاعات را در فایلی به نام _مانیفست_ به `kubectl` میدهید. |
| 69 | +بهطور قراردادی، مانیفستها با فرمت YAML نوشته میشوند (هرچند میتوانید از JSON نیز |
| 70 | +استفاده کنید). |
| 71 | +ابزاری مانند `kubectl` هنگام ارسال درخواست HTTP به API، اطلاعات موجود در مانیفست را |
| 72 | +به JSON یا یک قالبسازی پشتیبانیشدهٔ دیگر تبدیل میکند. |
| 73 | + |
| 74 | +در اینجا یک نمونه مانیفست آورده شده که فیلدهای الزامی و `spec` یک Deployment |
| 75 | +کوبرنتیز را نشان میدهد: |
| 76 | + |
| 77 | +{{% code_sample file="application/deployment.yaml" %}} |
| 78 | + |
| 79 | +یکی از روشهای ایجاد یک Deployment با استفاده از فایلی شبیه مثال بالا، استفاده از |
| 80 | +دستور [`kubectl apply`](/docs/reference/generated/kubectl/kubectl-commands#apply) در |
| 81 | +رابط خط فرمان `kubectl` و ارسال فایل `.yaml` بهعنوان آرگومان است. برای مثال: |
| 82 | + |
| 83 | +```shell |
| 84 | +kubectl apply -f https://k8s.io/examples/application/deployment.yaml |
| 85 | +``` |
| 86 | + |
| 87 | +خروجی مشابه این است: |
| 88 | + |
| 89 | +``` |
| 90 | +deployment.apps/nginx-deployment created |
| 91 | +``` |
| 92 | + |
| 93 | +### فیلدهای ضروری |
| 94 | + |
| 95 | +در مانیفست (فایل YAML یا JSON) مربوط به شیٔ کوبرنتیزی که میخواهید ایجاد کنید، لازم است مقادیر فیلدهای زیر را تعیین کنید: |
| 96 | + |
| 97 | +* `apiVersion` – نسخهٔ API کوبرنتیز که برای ایجاد این شیٔ استفاده میکنید |
| 98 | +* `kind` – نوع شیئی که میخواهید ایجاد کنید |
| 99 | +* `metadata` – دادههایی که به شناسایی منحصربهفرد شیء کمک میکنند، شامل رشتهٔ `name`، شناسهٔ یکتا (`UID`) و `namespace` اختیاری |
| 100 | +* `spec` – وضعیتی که برای شیء انتظار دارید |
| 101 | + |
| 102 | +قالب دقیق فیلد `spec` برای هر شیء کوبرنتیز متفاوت است و شامل فیلدهای تودرتوی مخصوص آن شیء میشود. |
| 103 | +[مرجع API کوبرنتیز](/docs/reference/kubernetes-api/) میتواند به شما کمک کند قالب `spec` برای تمام اشیایی را که میتوانید با کوبرنتیز ایجاد کنید پیدا کنید. |
| 104 | + |
| 105 | +برای نمونه، به فیلد [`spec`](/docs/reference/kubernetes-api/workload-resources/pod-v1/#PodSpec) در مرجع API مربوط به Pod نگاه کنید. |
| 106 | +برای هر Pod، فیلد `.spec` خود پاد و وضعیت مطلوب آن (مثل نام ایمیج کانتینر برای هر کانتینر در آن پاد) را مشخص میکند. نمونهٔ دیگری از مشخصات شیء، فیلد [`spec`](/docs/reference/kubernetes-api/workload-resources/stateful-set-v1/#StatefulSetSpec) برای API مربوط به StatefulSet است؛ در StatefulSet، فیلد `.spec` خود StatefulSet و وضعیت مطلوب آن را تعیین میکند. |
| 107 | +درون `.spec` یک StatefulSet، یک [قالب](/docs/concepts/workloads/pods/#pod-templates) برای اشیای Pod قرار دارد. این قالب پادهایی را توصیف میکند که کنترلر StatefulSet برای برآورده کردن مشخصات StatefulSet ایجاد خواهد کرد. |
| 108 | +انواع مختلف شیء همچنین میتوانند فیلدهای `.status` متفاوتی داشته باشند؛ صفحات مرجع API ساختار این فیلد `.status` و محتوای آن را برای هر نوع شیء توضیح میدهند. |
| 109 | + |
| 110 | +{{< note >}} |
| 111 | +برای اطلاعات بیشتر دربارهٔ نگارش فایلهای پیکربندی YAML به |
| 112 | +[بهترین شیوههای پیکربندی](/docs/concepts/configuration/overview/) مراجعه کنید. |
| 113 | +{{< /note >}} |
| 114 | + |
| 115 | +## اعتبارسنجی فیلد در سمت سرور |
| 116 | + |
| 117 | +از نسخهٔ Kubernetes v1.25، سرور API قابلیت |
| 118 | +[اعتبارسنجی فیلد](/docs/reference/using-api/api-concepts/#field-validation) |
| 119 | +در سمت سرور را ارائه میدهد که فیلدهای ناشناخته یا تکراری در یک شیء را شناسایی میکند. |
| 120 | +این قابلیت تمام کارکردهای `kubectl --validate` را در سمت سرور فراهم میکند. |
| 121 | + |
| 122 | +ابزار `kubectl` برای تعیین سطح اعتبارسنجی فیلد از فلگ `--validate` استفاده میکند. |
| 123 | +این فلگ مقادیر `ignore`، `warn` و `strict` را میپذیرد؛ همچنین مقادیر `true` |
| 124 | +(معادل `strict`) و `false` (معادل `ignore`) را قبول میکند. |
| 125 | +تنظیم پیشفرض در `kubectl`، گزینهٔ `--validate=true` است. |
| 126 | + |
| 127 | +`Strict` |
| 128 | +: اعتبارسنجی سختگیرانهٔ فیلد؛ در صورت خطا درخواست با شکست مواجه میشود |
| 129 | + |
| 130 | +`Warn` |
| 131 | +: اعتبارسنجی فیلد انجام میشود، اما خطاها بهصورت هشدار گزارش میشوند و باعث خطا در درخواست نمیشوند |
| 132 | + |
| 133 | +`Ignore` |
| 134 | +: هیچ اعتبارسنجی فیلدی در سمت سرور انجام نمیشود |
| 135 | + |
| 136 | +اگر `kubectl` نتواند به سروری متصل شود که از اعتبارسنجی فیلد پشتیبانی میکند، |
| 137 | +به اعتبارسنجی سمت کاربر (client-side) برمیگردد. Kubernetes 1.27 و نسخههای پس از آن |
| 138 | +همواره اعتبارسنجی فیلد را ارائه میدهند؛ نسخههای قدیمیتر ممکن است این قابلیت را |
| 139 | +نداشته باشند. اگر خوشهٔ شما قدیمیتر از v1.27 است، مستندات نسخهٔ خود را بررسی کنید. |
| 140 | + |
| 141 | +## {{% heading "whatsnext" %}} |
| 142 | + |
| 143 | +اگر در Kubernetes تازهکار هستید، دربارهٔ موضوعات زیر بیشتر بخوانید: |
| 144 | + |
| 145 | +* [Pods](/docs/concepts/workloads/pods/) که پایهایترین اشیای کوبرنتیز هستند. |
| 146 | +* اشیای [Deployment](/docs/concepts/workloads/controllers/deployment/). |
| 147 | +* [کنترلرها](/docs/concepts/architecture/controller/) در کوبرنتیز. |
| 148 | +* [kubectl](/docs/reference/kubectl/) و [دستورات kubectl](/docs/reference/generated/kubectl/kubectl-commands). |
| 149 | + |
| 150 | +[مدیریت اشیای کوبرنتیز](/docs/concepts/overview/working-with-objects/object-management/) |
| 151 | +نشان میدهد چگونه با `kubectl` اشیا را مدیریت کنید. |
| 152 | +اگر `kubectl` را در اختیار ندارید، ممکن است لازم باشد آن را |
| 153 | +[نصب کنید](/docs/tasks/tools/#kubectl). |
| 154 | + |
| 155 | +برای آشنایی کلی با API کوبرنتیز، به این صفحه مراجعه کنید: |
| 156 | + |
| 157 | +* [مروری بر API کوبرنتیز](/docs/reference/using-api/) |
| 158 | + |
| 159 | +برای آشنایی عمیقتر با اشیا در کوبرنتیز، سایر صفحات همین بخش را مطالعه کنید: |
| 160 | +<!-- Docsy automatically includes a list of pages in the section --> |
0 commit comments