Skip to content

Commit e68807c

Browse files
committed
Init Persian localization - Part 19
1 parent 7a5f557 commit e68807c

File tree

10 files changed

+1463
-0
lines changed

10 files changed

+1463
-0
lines changed
Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
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 -->
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
---
2+
title: حاشیه‌نویسی‌ها
3+
content_type: concept
4+
weight: 60
5+
---
6+
7+
<!-- overview -->
8+
می‌توانید از حاشیه‌نویس‌های کوبرنتیز برای پیوست کردن فرا‌دادهٔ دلخواه و غیرشناسه‌ای به {{< glossary_tooltip text="اشیاء" term_id="object" >}} استفاده کنید. ابزارها و کتابخانه‌ها می‌توانند به‌عنوان کلاینت این فرا‌داده را بازیابی کنند.
9+
10+
<!-- body -->
11+
## پیوست کردن فرا‌داده به اشیاء
12+
13+
برای پیوست کردن فرا‌داده به اشیای کوبرنتیز می‌توانید از برچسب‌ها (labels) یا حاشیه‌نویس‌ها (annotations) استفاده کنید.
14+
برچسب‌ها برای انتخاب اشیا و یافتن مجموعه‌هایی از اشیا که شرایط خاصی را دارند به‌کار می‌روند.
15+
در مقابل، حاشیه‌نویس‌ها برای شناسایی و انتخاب اشیا استفاده نمی‌شوند.
16+
فرا‌داده در یک حاشیه‌نویس می‌تواند کوچک یا بزرگ، ساخت‌یافته یا غیرساخت‌یافته باشد و حتی شامل نویسه‌هایی باشد که در برچسب‌ها مجاز نیستند.
17+
همچنین می‌توانید در فرا‌دادهٔ یک شیء به‌طور هم‌زمان از برچسب‌ها و حاشیه‌نویس‌ها استفاده کنید.
18+
19+
حاشیه‌نویس‌ها نیز مانند برچسب‌ها، نگاشت‌های کلید/مقدار هستند:
20+
21+
```json
22+
"metadata": {
23+
"annotations": {
24+
"key1" : "value1",
25+
"key2" : "value2"
26+
}
27+
}
28+
```
29+
30+
{{<note>}}
31+
کلیدها و مقدارهای این نگاشت باید رشته (string) باشند؛ به بیان دیگر، نمی‌توانید از انواع عددی، بولی، فهرست یا هر نوع دیگری برای کلید یا مقدار استفاده کنید.
32+
{{</note>}}
33+
34+
در ادامه چند نمونه از اطلاعاتی که می‌توان در حاشیه‌نویس‌ها ذخیره کرد آورده شده است:
35+
36+
* فیلدهایی که توسط لایهٔ پیکربندی اعلانی مدیریت می‌شوند. افزودن این فیلدها به‌صورت حاشیه‌نویس، آن‌ها را از مقادیر پیش‌فرض تنظیم‌شده توسط کلاینت یا سرور و همچنین از فیلدهای تولیدشدهٔ خودکار یا فیلدهای تنظیم‌شده توسط سامانه‌های خوداندازه یا خودمقیاس جدا می‌کند.
37+
38+
* اطلاعات ساخت (build)، انتشار (release) یا ایمیج مانند برچسب‌های زمانی (timestamp)، شناسهٔ انتشار (release ID)، شاخهٔ Git، شمارهٔ Pull Request، هش‌های ایمیج و نشانی رجیستری.
39+
40+
* اشاره‌گرهایی به مخزن‌های لاگ، پایش (monitoring)، تحلیل (analytics) یا ممیزی (audit).
41+
42+
* اطلاعات کتابخانهٔ کلاینت یا ابزار که می‌تواند برای اشکال‌زدایی مفید باشد؛ برای مثال نام، نسخه و اطلاعات build.
43+
44+
* اطلاعات منشأ کاربر یا ابزار/سیستم، مانند URLهای اشیای مرتبط در دیگر اجزای اکوسیستم.
45+
46+
* فرا‌دادهٔ سبک ابزارهای rollout؛ برای مثال پیکربندی یا نقاط بازیابی (checkpoint).
47+
48+
* شماره تلفن یا پیجر افراد مسئول، یا مراجع دایرکتوری که نشان می‌دهند این اطلاعات در کجا یافت می‌شود، مثل وب‌سایت تیم.
49+
50+
* دستورالعمل‌های کاربر نهایی برای پیاده‌سازی‌ها به‌منظور تغییر رفتار یا فعال‌سازی قابلیت‌های غیراستاندارد.
51+
52+
به‌جای استفاده از حاشیه‌نویس‌ها، می‌توانید این نوع اطلاعات را در یک پایگاه داده یا دایرکتوری بیرونی ذخیره کنید، اما این کار تولید کتابخانه‌ها و ابزارهای مشترک برای استقرار، مدیریت، وارسی (introspection) و کارهای مشابه را بسیار دشوارتر می‌کند.
53+
54+
## نحو و مجموعه نویسه
55+
56+
_حاشیه‌نویس‌ها_ نگاشت‌های کلید/مقدار هستند. کلید معتبر یک حاشیه‌نویس دو بخش دارد: یک پیشوند اختیاری و یک نام که با اسلش (`/`) از هم جدا می‌شوند. بخش نام الزامی است و باید حداکثر ۶۳ نویسه باشد؛ این بخش باید با یک نویسهٔ الفانامریک (`[a-z0-9A-Z]`) آغاز و پایان یابد و می‌تواند در میان خود خط تیره (`-`)، زیرخط (`_`)، نقطه (`.`) و نویسه‌های الفانامریک داشته باشد. پیشوند اختیاری است؛ در صورت وجود، باید یک زیر‌دامنهٔ DNS باشد: رشته‌ای از برچسب‌های DNS که با نقطه (`.`) از هم جدا شده‌اند، در مجموع بیش از ۲۵۳ نویسه نباشد و در پایان با یک اسلش (`/`) بیاید.
57+
58+
اگر پیشوند ذکر نشود، فرض بر این است که کلید حاشیه‌نویس خصوصیِ کاربر است. اجزای خودکار سامانه (برای مثال `kube-scheduler`، `kube-controller-manager`، `kube-apiserver`، `kubectl` یا اتوماسیون‌های شخص ثالث) که به اشیای کاربر نهایی حاشیه‌نویس اضافه می‌کنند، باید حتماً پیشوند مشخص کنند.
59+
60+
پیشوندهای `kubernetes.io/` و `k8s.io/` برای اجزای اصلی کوبرنتیز رزرو شده‌اند.
61+
62+
به‌عنوان مثال، در ادامه مانیفستی برای یک Pod آمده است که حاشیه‌نویس `imageregistry: https://hub.docker.com/` را دارد:
63+
64+
```yaml
65+
apiVersion: v1
66+
kind: Pod
67+
metadata:
68+
name: annotations-demo
69+
annotations:
70+
imageregistry: "https://hub.docker.com/"
71+
spec:
72+
containers:
73+
- name: nginx
74+
image: nginx:1.14.2
75+
ports:
76+
- containerPort: 80
77+
```
78+
79+
## {{% heading "whatsnext" %}}
80+
81+
- درباره [برچسب‌ها و انتخابگرها](/docs/concepts/overview/working-with-objects/labels/) بیشتر بیاموزید.
82+
- فهرست [برچسب‌ها، حاشیه‌نویس‌ها و تِینت‌های شناخته‌شده](/docs/reference/labels-annotations-taints/) را بیابید.

0 commit comments

Comments
 (0)