# نصب kubeadm

LLMS index: [llms.txt](/llms.txt)

---

<!-- overview -->

<img src="/images/kubeadm-stacked-color.png" align="right" width="150px"></img>
این صفحه نحوه نصب جعبه ابزار `kubeadm` را نشان می‌دهد.
برای کسب اطلاعات در مورد نحوه ایجاد یک کلاستر با kubeadm پس از انجام این فرآیند نصب، به صفحه [ایجاد یک کلاستر با kubeadm](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/) مراجعه کنید.







<div class="version-list">
    <p>
        این راهنمای نصب برای کوبرنتیز v1.36 است. اگر می‌خواهید از نسخه دیگری از کوبرنتیز استفاده کنید، لطفاً به صفحات زیر مراجعه کنید:
    </p>
    <ul>
        
            
        
            
            <li>
                <a href="https://v1-35.docs.kubernetes.io/fa/docs/setup/production-environment/tools/kubeadm/install-kubeadm/">نصب kubeadm (Kubernetes v1.35)</a>
            </li>
            
        
            
            <li>
                <a href="https://v1-34.docs.kubernetes.io/fa/docs/setup/production-environment/tools/kubeadm/install-kubeadm/">نصب kubeadm (Kubernetes v1.34)</a>
            </li>
            
        
            
            <li>
                <a href="https://v1-33.docs.kubernetes.io/fa/docs/setup/production-environment/tools/kubeadm/install-kubeadm/">نصب kubeadm (Kubernetes v1.33)</a>
            </li>
            
        
            
            <li>
                <a href="https://v1-32.docs.kubernetes.io/fa/docs/setup/production-environment/tools/kubeadm/install-kubeadm/">نصب kubeadm (Kubernetes v1.32)</a>
            </li>
            
        
    </ul>
</div>


## پیش از شروع

* یک میزبان لینوکس سازگار. پروژه کوبرنتیز دستورالعمل‌های عمومی برای توزیع‌های لینوکس مبتنی بر Debian و Red Hat و توزیع‌های بدون مدیر بسته ارائه می‌دهد.
* ۲ گیگابایت یا بیشتر رم برای هر دستگاه (هر چه کمتر باشد، فضای کمی برای برنامه‌های شما باقی می‌ماند).
* ۲ پردازنده مرکزی یا بیشتر برای ماشین‌های کنترلی.
* اتصال کامل شبکه بین تمام ماشین‌های موجود در کلاستر (شبکه عمومی یا خصوصی اشکالی ندارد).
* نام میزبان، نشانی(آدرس) MAC و شناسه محصول منحصر به فرد برای هر گره(node). برای جزئیات بیشتر به [اینجا](#verify-mac-address) مراجعه کنید.
* پورت‌های خاصی روی دستگاه‌های شما باز هستند. برای جزئیات بیشتر به [اینجا](#check-required-ports) مراجعه کنید.


<div class="alert alert-info" role="note"><h4 class="alert-heading">توجه:</h4>نصب <code>kubeadm</code> از طریق فایل های باینری انجام می‌شود که از پیوند پویا استفاده می‌کنند و فرض می‌کنند که سیستم هدف شما <code>glibc</code> را ارائه می‌دهد.
این یک فرض منطقی در بسیاری از توزیع‌های لینوکس (از جمله دبیان، اوبونتو، فدورا، CentOS و غیره) است.
اما همیشه در مورد توزیع‌های سفارشی و سبک که به طور پیش‌فرض <code>glibc</code> را شامل نمی‌شوند، مانند Alpine Linux، صدق نمی‌کند.
انتظار می‌رود که توزیع یا شامل <code>glibc</code> یا یک <a href="https://wiki.alpinelinux.org/wiki/Running_glibc_programs">لایه سازگاری</a> باشد که نمادهای مورد انتظار را ارائه می‌دهد.</div>


<!-- steps -->

## نسخه سیستم عامل خود را بررسی کنید

<div class="alert alert-secondary callout third-party-content" role="note"><strong>توجه:</strong>&puncsp;این بخش به پروژه‌های شخص ثالث که قابلیت‌های مورد نیاز کوبرنتیز را ارائه می‌دهند لینک می‌دهد. نویسندگان پروژه کوبرنتیز مسئول این پروژه‌ها نیستند که به ترتیب حروف الفبا لیست شده‌اند. برای افزودن پروژه به این لیست، قبل از ارسال تغییر <a href="/docs/contribute/style/content-guide/#third-party-content">راهنمای محتوا</a> را بخوانید. <a href="#third-party-content-disclaimer">اطلاعات بیشتر.</a></div>


<ul class="nav nav-tabs" id="tabs-operating-system-version-check" role="tablist"><li class="nav-item"><a data-bs-toggle="tab" class="nav-link active" href="#tabs-operating-system-version-check-0" role="tab" aria-controls="tabs-operating-system-version-check-0" aria-selected="true">Linux</a></li>
	  
		<li class="nav-item"><a data-bs-toggle="tab" class="nav-link" href="#tabs-operating-system-version-check-1" role="tab" aria-controls="tabs-operating-system-version-check-1">Windows</a></li></ul>

<div class="tab-content" id="tabs-operating-system-version-check-content"><div class="tab-body tab-pane fadeshow active"
        id="tabs-operating-system-version-check-0" role="tabpanel" aria-labelledby="tabs-operating-system-version-check-0-tab" tabindex="operating-system-version-check"><ul>
<li>پروژه kubeadm از هسته‌های LTS پشتیبانی می‌کند. برای مشاهده به <a href="https://www.kernel.org/category/releases.html">لیست هسته‌(kernel)های LTS</a> مراجعه کنید.</li>
<li>شما می‌توانید با استفاده از دستور <code>uname -r</code> نسخه هسته(kernel) را دریافت کنید.</li>
</ul>
<p>برای اطلاعات بیشتر، به <a href="/docs/reference/node/kernel-version-requirements/">الزامات هسته(kernel) لینوکس</a> مراجعه کنید.</p>
</div><div class="tab-body tab-pane fade"
        id="tabs-operating-system-version-check-1" role="tabpanel" aria-labelledby="tabs-operating-system-version-check-1-tab" tabindex="operating-system-version-check"><ul>
<li>پروژه kubeadm از نسخه‌های اخیر هسته(kernel) پشتیبانی می‌کند. برای مشاهده فهرستی از هسته(kernel) های اخیر، به <a href="https://learn.microsoft.com/en-us/windows/release-health/windows-server-release-info">اطلاعات انتشار ویندوز سرور</a> مراجعه کنید.</li>
<li>شما می‌توانید نسخه هسته(kernel) (که به آن نسخه سیستم عامل نیز گفته می‌شود) را با استفاده از دستور <code>systeminfo</code> مشاهده کنید.</li>
</ul>
<p>برای اطلاعات بیشتر، به <a href="/docs/concepts/windows/intro/#windows-os-version-support">سازگاری نسخه سیستم عامل ویندوز</a> مراجعه کنید.</p>
</div></div>


یک کلاستر کوبرنتیز که توسط kubeadm ایجاد می‌شود، به نرم‌افزاری بستگی دارد که از ویژگی‌های هسته(kernel) استفاده می‌کند.
این نرم‌افزار شامل، اما نه محدود به
<a class='glossary-tooltip' title='محیط اجرای کانتینر، نرم‌افزاری است که مسئول اجرای کانتینرها است.' data-bs-toggle='tooltip' data-bs-placement='top' href='/fa/docs/setup/production-environment/container-runtimes' target='_blank' aria-label='container runtime'>container runtime</a>،
<a class='glossary-tooltip' title='عاملی که روی هر گره(node) در کلاستر اجرا می‌شود. این عامل اطمینان می‌دهد کانتینرها در یک پاد در حال اجرا باشند.' data-bs-toggle='tooltip' data-bs-placement='top' href='/fa/docs/reference/command-line-tools-reference/kubelet' target='_blank' aria-label='kubelet'>kubelet</a>، و یک افزونه <a class='glossary-tooltip' title='افزونه‌های رابط شبکه کانتینر (CNI) نوعی افزونه شبکه هستند که به مشخصات appc/CNI پایبند هستند.' data-bs-toggle='tooltip' data-bs-placement='top' href='/fa/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/' target='_blank' aria-label='Container Network Interface'>Container Network Interface</a> می‌شود.

برای کمک به شما در جلوگیری از خطاهای غیرمنتظره ناشی از عدم پشتیبانی از نسخه هسته، kubeadm بررسی پیش از اجرای `SystemVerification` را اجرا می‌کند. اگر نسخه هسته(kernel) پشتیبانی نشود، این بررسی با شکست مواجه می‌شود.

اگر می‌دانید که هسته(kernel) شما ویژگی‌های مورد نیاز را ارائه می‌دهد، حتی اگر kubeadm از نسخه آن پشتیبانی نکند، می‌توانید از بررسی صرف نظر کنید.

## بررسی کنید که نشانی(آدرس) MAC و product_uuid برای هر گره(node) منحصر به فرد باشند {#verify-mac-address}

* شما می‌توانید نشانی(آدرس) MAC رابط‌های شبکه را با استفاده از دستور `ip link` یا `ifconfig -a` دریافت کنید.
* شناسه محصول (product_uuid) را می‌توان با استفاده از دستور `sudo cat /sys/class/dmi/id/product_uuid` بررسی کرد.

بسیار محتمل است که دستگاه‌های سخت‌افزاری نشانی(آدرس) های منحصر به فردی داشته باشند، اگرچه برخی از ماشین‌های مجازی ممکن است مقادیر یکسانی داشته باشند. کوبرنتیز از این مقادیر برای شناسایی منحصر به فرد گره‌ها در کلاستر استفاده می‌کند. اگر این مقادیر برای هر گره(node) منحصر به فرد نباشند، فرآیند نصب ممکن است [با شکست مواجه شود](https://github.com/kubernetes/kubeadm/issues/31).

## بررسی آداپتورهای شبکه

اگر بیش از یک adapters شبکه دارید و اجزای کوبرنتیز شما از طریق مسیر پیش‌فرض قابل دسترسی نیستند، توصیه می‌کنیم مسیر(های) IP را اضافه کنید تا نشانی(آدرس) های کلاستر کوبرنتیز از طریق adapters مناسب عبور کنند.
## بررسی پورت‌های مورد نیاز {#check-required-ports}

این [پورت‌های مورد نیاز](/docs/reference/networking/ports-and-protocols/)
برای اینکه اجزای Kubernetes بتوانند با یکدیگر ارتباط برقرار کنند، باید باز باشند.
می‌توانید از ابزارهایی مانند [netcat](https://netcat.sourceforge.net) برای بررسی باز بودن یک پورت استفاده کنید. به عنوان مثال:

```shell
nc 127.0.0.1 6443 -zv -w 2
```

افزونه شبکه پاد که استفاده می‌کنید ممکن است نیاز به باز بودن پورت‌های خاصی داشته باشد. از آنجایی که این موضوع در هر افزونه شبکه پاد متفاوت است، لطفاً برای اطلاع از پورت(های) مورد نیاز افزونه‌ها، به مستندات آنها مراجعه کنید.

## پیکربندی Swap {#swap-configuration}

رفتار پیش‌فرض یک kubelet این است که در صورت شناسایی حافظه swap در یک گره، شروع به کار نکند. این بدان معناست که swap باید یا غیرفعال شود یا توسط kubelet تحمل شود.

* برای تحمل swap، `failSwapOn: false` را به پیکربندی kubelet یا به عنوان یک آرگومان خط فرمان اضافه کنید.
توجه: حتی اگر `failSwapOn: false` ارائه شود، بارهای کاری به طور پیش‌فرض به swap دسترسی نخواهند داشت.
این را می‌توان با تنظیم `swapBehavior`، دوباره در فایل(فایل) پیکربندی kubelet، تغییر داد. برای استفاده از swap، `swapBehavior` را به غیر از تنظیم پیش‌فرض `NoSwap` تنظیم کنید.
برای جزئیات بیشتر به [مدیریت حافظه swap](/docs/concepts/cluster-administration/swap-memory-management) مراجعه کنید.
* برای غیرفعال کردن swap، می‌توان از دستور `sudo swapoff -a` برای غیرفعال کردن موقت swap استفاده کرد.

برای اینکه این تغییر در راه‌اندازی‌های مجدد پایدار بماند، مطمئن شوید که swap در فایل‌های پیکربندی مانند `/etc/fstab`، `systemd.swap` غیرفعال شده است، بسته به اینکه چگونه روی سیستم شما پیکربندی شده است.


## نصب یک محیط اجرای کانتینر {#installing-runtime}

برای اجرای کانتینرها در پادها، کوبرنتیز از یک <a class='glossary-tooltip' title='محیط اجرای کانتینر، نرم‌افزاری است که مسئول اجرای کانتینرها است.' data-bs-toggle='tooltip' data-bs-placement='top' href='/fa/docs/setup/production-environment/container-runtimes' target='_blank' aria-label='container runtime'>container runtime</a> استفاده می‌کند.

به طور پیش‌فرض، کوبرنتیز از <a class='glossary-tooltip' title='پروتکلی برای ارتباط بین kubelet و محیط اجرای کانتینر محلی.' data-bs-toggle='tooltip' data-bs-placement='top' href='/fa/docs/concepts/architecture/cri' target='_blank' aria-label='Container Runtime Interface'>Container Runtime Interface</a> (CRI)
برای ارتباط با محیط اجرای کانتینر انتخابی شما استفاده می‌کند.

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

برای اطلاعات بیشتر به [محیط های اجرای کانتینر](/docs/setup/production-environment/container-runtimes/) مراجعه کنید.


<div class="alert alert-info" role="note"><h4 class="alert-heading">توجه:</h4>موتور Docker، <a href="/docs/concepts/architecture/cri/">CRI</a> را پیاده‌سازی نمی‌کند که برای محیط اجرای کانتینر جهت کار با کوبرنتیز الزامی است. به همین دلیل، یک سرویس اضافی <a href="https://mirantis.github.io/cri-dockerd/">cri-dockerd</a> باید نصب شود. cri-dockerd پروژه‌ای مبتنی بر پشتیبانی داخلی قدیمی موتور داکر است که در نسخه ۱.۲۴ از kubelet حذف شد.</div>


جداول زیر شامل نقاط پایانی شناخته شده برای سیستم عامل‌های پشتیبانی شده است:

<ul class="nav nav-tabs" id="tabs-container-runtime" role="tablist"><li class="nav-item"><a data-bs-toggle="tab" class="nav-link active" href="#tabs-container-runtime-0" role="tab" aria-controls="tabs-container-runtime-0" aria-selected="true">Linux</a></li>
	  
		<li class="nav-item"><a data-bs-toggle="tab" class="nav-link" href="#tabs-container-runtime-1" role="tab" aria-controls="tabs-container-runtime-1">Windows</a></li></ul>

<div class="tab-content" id="tabs-container-runtime-content"><div class="tab-body tab-pane fadeshow active"
        id="tabs-container-runtime-0" role="tabpanel" aria-labelledby="tabs-container-runtime-0-tab" tabindex="container-runtime"><table><caption style="display: none;">Linux container runtimes</caption>
	<thead>
			<tr>
					<th>Runtime</th>
					<th>Path to Unix domain socket</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>containerd</td>
					<td><code>unix:///var/run/containerd/containerd.sock</code></td>
			</tr>
			<tr>
					<td>CRI-O</td>
					<td><code>unix:///var/run/crio/crio.sock</code></td>
			</tr>
			<tr>
					<td>Docker Engine (using cri-dockerd)</td>
					<td><code>unix:///var/run/cri-dockerd.sock</code></td>
			</tr>
	</tbody>
</table>
</div><div class="tab-body tab-pane fade"
        id="tabs-container-runtime-1" role="tabpanel" aria-labelledby="tabs-container-runtime-1-tab" tabindex="container-runtime"><table><caption style="display: none;">Windows container runtimes</caption>
	<thead>
			<tr>
					<th>Runtime</th>
					<th>Path to Windows named pipe</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>containerd</td>
					<td><code>npipe:////./pipe/containerd-containerd</code></td>
			</tr>
			<tr>
					<td>Docker Engine (using cri-dockerd)</td>
					<td><code>npipe:////./pipe/cri-dockerd</code></td>
			</tr>
	</tbody>
</table>
</div></div>


## نصب kubeadm، kubelet و kubectl

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

* `kubeadm`: دستور راه اندازی کلاستر.

* `kubelet`: مؤلفه‌ای که روی تمام ماشین‌های موجود در کلاستر شما اجرا می‌شود و کارهایی مانند راه‌اندازی پادها و کانتینرها را انجام می‌دهد.

* `kubectl`: ابزار خط فرمان برای ارتباط با کلاستر شما.

‘kubelet’ , kubeadm یا `kubectl` را برای شما نصب یا مدیریت **نخواهد** کرد، بنابراین باید مطمئن شوید که آنها با نسخه control plane کوبرنتیز که می‌خواهید kubeadm برای شما نصب کند، مطابقت دارند. اگر این کار را نکنید، خطر بروز انحراف نسخه وجود دارد که می‌تواند منجر به رفتار غیرمنتظره و باگ‌دار شود. با این حال، انحراف یک نسخه جزئی بین kubelet و control plane پشتیبانی می‌شود، اما نسخه kubelet هرگز نمی‌تواند از نسخه سرور API فراتر رود. به عنوان مثال، kubelet که نسخه ۱.۷.۰ را اجرا می‌کند باید کاملاً با یک سرور API نسخه ۱.۸.۰ سازگار باشد، اما برعکس آن امکان‌پذیر نیست.

برای اطلاعات بیشتر در مورد نصب `kubectl`، به [نصب و راه‌اندازی kubectl](/docs/tasks/tools/) مراجعه کنید.

<div class="alert alert-danger" role="note"><h4 class="alert-heading">هشدار:</h4>این دستورالعمل‌ها تمام بسته‌های کوبرنتیز را از هرگونه ارتقاء سیستم مستثنی می‌کنند.
دلیل این امر این است که kubeadm و کوبرنتیز نیاز به <a href="/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/">فرایند ویژه ارتقاء</a> دارند.</div>


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

* کوبرنتیز [نسخه و سیاست انحراف نسخه](/docs/setup/release/version-skew-policy/)
* ابزار Kubeadm-specific [سیاست انحراف نسخه](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#version-skew-policy)

<div class="alert alert-secondary callout note" role="note">
  <strong>توجه:</strong> مخازن بسته قدیمی (<code>apt.kubernetes.io</code> و <code>yum.kubernetes.io</code>)
<a href="/blog/2023/08/31/legacy-package-repository-deprecation/">از 13 سپتامبر 2023 منسوخ و متوقف شده‌اند</a>.
<strong>استفاده از <a href="/blog/2023/08/15/pkgs-k8s-io-introduction/">مخازن بسته جدید میزبانی شده در <code>pkgs.k8s.io</code></a>
به شدت توصیه می‌شود و برای نصب نسخه‌های کوبرنتیز منتشر شده پس از 13 سپتامبر 2023 الزامی است.</strong>
مخازن قدیمی منسوخ‌شده و محتویات آن‌ها ممکن است در هر زمان در آینده و بدون
اطلاعیه قبلی حذف شوند. مخازن بسته جدید دانلودهایی برای نسخه‌های کوبرنتیز از v1.24.0 به بعد ارائه می‌دهند.
</div>



<div class="alert alert-info" role="note"><h4 class="alert-heading">توجه:</h4>برای هر نسخه فرعی کوبرنتیز یک مخزن بسته اختصاصی وجود دارد. اگر می‌خواهید نسخه فرعی دیگری غیر از v1.36 نصب کنید، لطفاً به راهنمای نصب نسخه فرعی مورد نظر خود مراجعه کنید.</div>


<ul class="nav nav-tabs" id="tabs-k8s-install" role="tablist"><li class="nav-item"><a data-bs-toggle="tab" class="nav-link active" href="#tabs-k8s-install-0" role="tab" aria-controls="tabs-k8s-install-0" aria-selected="true">Debian-based distributions</a></li>
	  
		<li class="nav-item"><a data-bs-toggle="tab" class="nav-link" href="#tabs-k8s-install-1" role="tab" aria-controls="tabs-k8s-install-1">Red Hat-based distributions</a></li>
		<li class="nav-item"><a data-bs-toggle="tab" class="nav-link" href="#tabs-k8s-install-2" role="tab" aria-controls="tabs-k8s-install-2">Without a package manager</a></li></ul>

<div class="tab-content" id="tabs-k8s-install-content"><div class="tab-body tab-pane fadeshow active"
        id="tabs-k8s-install-0" role="tabpanel" aria-labelledby="tabs-k8s-install-0-tab" tabindex="k8s-install"><p>این دستورالعمل‌ها برای کوبرنتیز v1.36 هستند.</p>
<ol>
<li>
<p>فهرست بسته‌های <code>apt</code> را به‌روزرسانی کنید و بسته‌های مورد نیاز برای استفاده از مخزن کوبرنتیز <code>apt</code> را نصب کنید:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">sudo apt-get update
</span></span><span class="line"><span class="cl"><span class="c1"># apt-transport-https may be a dummy package; if so, you can skip that package</span>
</span></span><span class="line"><span class="cl">sudo apt-get install -y apt-transport-https ca-certificates curl gpg
</span></span></code></pre></div></li>
<li>
<p>کلید امضای عمومی مخازن بسته کوبرنتیز را دانلود کنید.
کلید امضای یکسانی برای همه مخازن استفاده می‌شود، بنابراین می‌توانید نسخه موجود در URL را نادیده بگیرید:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl"><span class="c1"># اگر پوشه(folder) `/etc/apt/keyrings` وجود ندارد، باید قبل از دستور curl ایجاد شود، نکته زیر را بخوانید.</span>
</span></span><span class="line"><span class="cl"><span class="c1"># sudo mkdir -p -m 755 /etc/apt/keyrings</span>
</span></span><span class="line"><span class="cl">curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.36/deb/Release.key <span class="p">|</span> sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
</span></span></code></pre></div></li>
</ol>
<div class="alert alert-info" role="note"><h4 class="alert-heading">توجه:</h4>در نسخه‌های قدیمی‌تر از دبیان ۱۲ و اوبونتو ۲۲.۰۴، پوشه <code>/etc/apt/keyrings</code> به طور پیش‌فرض وجود ندارد و باید قبل از دستور curl ایجاد شود.</div>
<ol start="3">
<li>
<p>مخزن کوبرنتیز <code>apt</code> مناسب را اضافه کنید. لطفاً توجه داشته باشید که این مخزن فقط بسته‌هایی برای کوبرنتیز 1.36 دارد؛ برای سایر نسخه‌های فرعی کوبرنتیز، باید نسخه فرعی کوبرنتیز را در URL تغییر دهید تا با نسخه فرعی مورد نظر شما مطابقت داشته باشد. (همچنین باید بررسی کنید که مستندات مربوط به نسخه کوبرنتیز که قصد نصب آن را دارید، مطالعه می‌کنید.)</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl"><span class="c1"># This overwrites any existing configuration in /etc/apt/sources.list.d/kubernetes.list</span>
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s1">&#39;deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.36/deb/ /&#39;</span> <span class="p">|</span> sudo tee /etc/apt/sources.list.d/kubernetes.list
</span></span></code></pre></div></li>
<li>
<p>فهرست بسته‌های <code>apt</code> را به‌روزرسانی کنید، kubelet، kubeadm و kubectl را نصب کنید و نسخه آنها را پین کنید:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">sudo apt-get update
</span></span><span class="line"><span class="cl">sudo apt-get install -y kubelet kubeadm kubectl
</span></span><span class="line"><span class="cl">sudo apt-mark hold kubelet kubeadm kubectl
</span></span></code></pre></div></li>
<li>
<p>(اختیاری) سرویس kubelet را قبل از اجرای kubeadm فعال کنید:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">sudo systemctl <span class="nb">enable</span> --now kubelet
</span></span></code></pre></div></li>
</ol>
</div><div class="tab-body tab-pane fade"
        id="tabs-k8s-install-1" role="tabpanel" aria-labelledby="tabs-k8s-install-1-tab" tabindex="k8s-install"><ol>
<li>
<p>SELinux را روی حالت «مجاز» تنظیم کنید:</p>
<p>این دستورالعمل‌ها برای کوبرنتیز 1.36 هستند.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl"><span class="c1"># Set SELinux in permissive mode (effectively disabling it)</span>
</span></span><span class="line"><span class="cl">sudo setenforce <span class="m">0</span>
</span></span><span class="line"><span class="cl">sudo sed -i <span class="s1">&#39;s/^SELINUX=enforcing$/SELINUX=permissive/&#39;</span> /etc/selinux/config
</span></span></code></pre></div></li>
</ol>
<div class="alert alert-caution" role="note"><h4 class="alert-heading">احتیاط:</h4><ul>
<li>تنظیم SELinux در حالت مجاز با اجرای <code>setenforce 0</code> و <code>sed ...</code>
عملاً آن را غیرفعال می‌کند. این کار برای دسترسی کانتینرها به فایل سیستم میزبان لازم است؛ برای مثال، برخی از افزونه‌های شبکه کلاستر‌ای به آن نیاز دارند. شما باید این کار را تا زمانی که پشتیبانی SELinux در kubelet بهبود یابد، انجام دهید.</li>
<li>اگر نحوه پیکربندی SELinux را می‌دانید، می‌توانید آن را فعال نگه دارید، اما ممکن است به تنظیماتی نیاز داشته باشد که توسط kubeadm پشتیبانی نمی‌شوند.</li>
</ul>
</div>
<ol start="2">
<li>
<p>مخزن کوبرنتیز <code>yum</code> را اضافه کنید. پارامتر <code>exclude</code> در تعریف مخزن تضمین می‌کند که بسته‌های مربوط به کوبرنتیز با اجرای <code>yum update</code> ارتقا پیدا نکنند، زیرا برای ارتقاء کوبرنتیز باید رویه خاصی دنبال شود. لطفاً توجه داشته باشید که این مخزن فقط بسته‌هایی برای کوبرنتیز دارد 1.36؛ برای سایر نسخه‌های فرعی کوبرنتیز، باید نسخه فرعی کوبرنتیز را در URL تغییر دهید تا با نسخه فرعی مورد نظر شما مطابقت داشته باشد (همچنین باید بررسی کنید که مستندات مربوط به نسخه کوبرنتیز که قصد نصب آن را دارید، مطالعه می‌کنید).</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl"><span class="c1"># This overwrites any existing configuration in /etc/yum.repos.d/kubernetes.repo</span>
</span></span><span class="line"><span class="cl">cat <span class="s">&lt;&lt;EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
</span></span></span><span class="line"><span class="cl"><span class="s">[kubernetes]
</span></span></span><span class="line"><span class="cl"><span class="s">name=Kubernetes
</span></span></span><span class="line"><span class="cl"><span class="s">baseurl=https://pkgs.k8s.io/core:/stable:/v1.36/rpm/
</span></span></span><span class="line"><span class="cl"><span class="s">enabled=1
</span></span></span><span class="line"><span class="cl"><span class="s">gpgcheck=1
</span></span></span><span class="line"><span class="cl"><span class="s">gpgkey=https://pkgs.k8s.io/core:/stable:/v1.36/rpm/repodata/repomd.xml.key
</span></span></span><span class="line"><span class="cl"><span class="s">exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
</span></span></span><span class="line"><span class="cl"><span class="s">EOF</span>
</span></span></code></pre></div></li>
<li>
<p>kubelet، kubeadm و kubectl را نصب کنید:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">sudo yum install -y kubelet kubeadm kubectl --disableexcludes<span class="o">=</span>kubernetes
</span></span></code></pre></div></li>
<li>
<p>(اختیاری) سرویس kubelet را قبل از اجرای kubeadm فعال کنید:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">sudo systemctl <span class="nb">enable</span> --now kubelet
</span></span></code></pre></div></li>
</ol>
</div><div class="tab-body tab-pane fade"
        id="tabs-k8s-install-2" role="tabpanel" aria-labelledby="tabs-k8s-install-2-tab" tabindex="k8s-install"><p>افزونه‌های CNI را نصب کنید (برای اکثر شبکه‌های پاد مورد نیاز است):</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nv">CNI_PLUGINS_VERSION</span><span class="o">=</span><span class="s2">&#34;v1.3.0&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nv">ARCH</span><span class="o">=</span><span class="s2">&#34;amd64&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nv">DEST</span><span class="o">=</span><span class="s2">&#34;/opt/cni/bin&#34;</span>
</span></span><span class="line"><span class="cl">sudo mkdir -p <span class="s2">&#34;</span><span class="nv">$DEST</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl">curl -L <span class="s2">&#34;https://github.com/containernetworking/plugins/releases/download/</span><span class="si">${</span><span class="nv">CNI_PLUGINS_VERSION</span><span class="si">}</span><span class="s2">/cni-plugins-linux-</span><span class="si">${</span><span class="nv">ARCH</span><span class="si">}</span><span class="s2">-</span><span class="si">${</span><span class="nv">CNI_PLUGINS_VERSION</span><span class="si">}</span><span class="s2">.tgz&#34;</span> <span class="p">|</span> sudo tar -C <span class="s2">&#34;</span><span class="nv">$DEST</span><span class="s2">&#34;</span> -xz
</span></span></code></pre></div><p>پوشه را برای دانلود فایل‌‌های دستور(command) ایجاد کنید:</p>
<div class="alert alert-info" role="note"><h4 class="alert-heading">توجه:</h4><p>متغیر <code>DOWNLOAD_DIR</code> باید روی یک پوشه قابل نوشتن تنظیم شود.</p>
<p>اگر از Flatcar کانتینر لینوکس استفاده می‌کنید، <code>DOWNLOAD_DIR=&quot;/opt/bin&quot;</code> را تنظیم کنید.</p>
</div>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nv">DOWNLOAD_DIR</span><span class="o">=</span><span class="s2">&#34;/usr/local/bin&#34;</span>
</span></span><span class="line"><span class="cl">sudo mkdir -p <span class="s2">&#34;</span><span class="nv">$DOWNLOAD_DIR</span><span class="s2">&#34;</span>
</span></span></code></pre></div><p>در صورت تمایل، crictl را نصب کنید (برای تعامل با رابط محیط اجرای کانتینر (CRI) مورد نیاز است، و برای kubeadm اختیاری است):</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nv">CRICTL_VERSION</span><span class="o">=</span><span class="s2">&#34;v1.31.0&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nv">ARCH</span><span class="o">=</span><span class="s2">&#34;amd64&#34;</span>
</span></span><span class="line"><span class="cl">curl -L <span class="s2">&#34;https://github.com/kubernetes-sigs/cri-tools/releases/download/</span><span class="si">${</span><span class="nv">CRICTL_VERSION</span><span class="si">}</span><span class="s2">/crictl-</span><span class="si">${</span><span class="nv">CRICTL_VERSION</span><span class="si">}</span><span class="s2">-linux-</span><span class="si">${</span><span class="nv">ARCH</span><span class="si">}</span><span class="s2">.tar.gz&#34;</span> <span class="p">|</span> sudo tar -C <span class="nv">$DOWNLOAD_DIR</span> -xz
</span></span></code></pre></div><p><code>kubeadm</code>، <code>kubelet</code> را نصب کنید و یک سرویس systemd <code>kubelet</code> اضافه کنید:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nv">RELEASE</span><span class="o">=</span><span class="s2">&#34;</span><span class="k">$(</span>curl -sSL https://dl.k8s.io/release/stable.txt<span class="k">)</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nv">ARCH</span><span class="o">=</span><span class="s2">&#34;amd64&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> <span class="nv">$DOWNLOAD_DIR</span>
</span></span><span class="line"><span class="cl">sudo curl -L --remote-name-all https://dl.k8s.io/release/<span class="si">${</span><span class="nv">RELEASE</span><span class="si">}</span>/bin/linux/<span class="si">${</span><span class="nv">ARCH</span><span class="si">}</span>/<span class="o">{</span>kubeadm,kubelet<span class="o">}</span>
</span></span><span class="line"><span class="cl">sudo chmod +x <span class="o">{</span>kubeadm,kubelet<span class="o">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nv">RELEASE_VERSION</span><span class="o">=</span><span class="s2">&#34;v0.16.2&#34;</span>
</span></span><span class="line"><span class="cl">curl -sSL <span class="s2">&#34;https://raw.githubusercontent.com/kubernetes/release/</span><span class="si">${</span><span class="nv">RELEASE_VERSION</span><span class="si">}</span><span class="s2">/cmd/krel/templates/latest/kubelet/kubelet.service&#34;</span> <span class="p">|</span> sed <span class="s2">&#34;s:/usr/bin:</span><span class="si">${</span><span class="nv">DOWNLOAD_DIR</span><span class="si">}</span><span class="s2">:g&#34;</span> <span class="p">|</span> sudo tee /usr/lib/systemd/system/kubelet.service
</span></span><span class="line"><span class="cl">sudo mkdir -p /usr/lib/systemd/system/kubelet.service.d
</span></span><span class="line"><span class="cl">curl -sSL <span class="s2">&#34;https://raw.githubusercontent.com/kubernetes/release/</span><span class="si">${</span><span class="nv">RELEASE_VERSION</span><span class="si">}</span><span class="s2">/cmd/krel/templates/latest/kubeadm/10-kubeadm.conf&#34;</span> <span class="p">|</span> sed <span class="s2">&#34;s:/usr/bin:</span><span class="si">${</span><span class="nv">DOWNLOAD_DIR</span><span class="si">}</span><span class="s2">:g&#34;</span> <span class="p">|</span> sudo tee /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
</span></span></code></pre></div><div class="alert alert-info" role="note"><h4 class="alert-heading">توجه:</h4>لطفاً برای توزیع‌های لینوکس که به طور پیش‌فرض شامل <code>glibc</code> نیستند، به یادداشت موجود در بخش <a href="#before-you-begin">پیش نیازها</a> مراجعه کنید.</div>
<p>با دنبال کردن دستورالعمل‌های موجود در <a href="/docs/tasks/tools/#kubectl">صفحه نصب ابزارها</a>، <code>kubectl</code> را نصب کنید.</p>
<p>در صورت تمایل، قبل از اجرای kubeadm، سرویس kubelet را فعال کنید:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo systemctl <span class="nb">enable</span> --now kubelet
</span></span></code></pre></div><div class="alert alert-info" role="note"><h4 class="alert-heading">توجه:</h4>توزیع لینوکس Flatcar Container پوشه <code>/usr</code> را به عنوان یک فایل سیستم فقط خواندنی mount می‌کند.
قبل از راه اندازی کلاستر خود، باید مراحل بیشتری را برای پیکربندی یک پوشه قابل نوشتن انجام دهید.
برای یادگیری نحوه راه‌اندازی یک پوشه قابل نوشتن، به <a href="/fa/docs/setup/production-environment/tools/kubeadm/troubleshooting-kubeadm/#usr-mounted-read-only">راهنمای عیب‌یابی Kubeadm</a> مراجعه کنید.</div>
</div></div>


Kubelet حالا هر چند ثانیه یک بار ری‌استارت می‌شود، چون در یک حلقه‌ی توقف منتظر می‌ماند تا kubeadm به آن بگوید چه کاری انجام دهد.

## پیکربندی درایور cgroup

پیکربندی درایور cgroup هم محیط اجرای کانتینر و هم kubelet دارای یک ویژگی به نام ["cgroup driver"](/docs/setup/production-environment/container-runtimes/#cgroup-drivers) هستند که برای مدیریت cgroupها در دستگاه‌های لینوکس مهم است.

<div class="alert alert-danger" role="note"><h4 class="alert-heading">هشدار:</h4><p>تطبیق محیط اجرای کانتینر و درایورهای cgroup kubelet مورد نیاز است یا در غیر این صورت فرآیند kubelet با شکست مواجه خواهد شد.</p>
<p>برای جزئیات بیشتر به <a href="/docs/tasks/administer-cluster/kubeadm/configure-cgroup-driver/">پیکربندی درایور cgroup</a> مراجعه کنید.</p>
</div>


## عیب‌یابی

اگر با kubeadm به مشکل برخوردید، لطفاً به [مستندات عیب‌یابی](/docs/setup/production-environment/tools/kubeadm/troubleshooting-kubeadm/) ما مراجعه کنید.

## گام‌های بعدی

* [استفاده از kubeadm برای ایجاد یک کلاستر](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/)
