Merge pull request #32713 from ashish-jaiswar/newbranch

[hi] update content/hi/docs/setup/production-environment/container-runtimes.md
pull/31609/merge
Kubernetes Prow Robot 2022-04-09 07:18:04 -07:00 committed by GitHub
commit 37fa13ca78
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 81 additions and 80 deletions

View File

@ -13,11 +13,18 @@ weight: 20
<!-- body -->
यह पृष्ठ लिनक्स पर कुबेरनेट्स के साथ कई सामान्य कंटेनर रनटाइम का उपयोग करने के विवरण सूचीबद्ध करता है:
कुबेरनेट्स {{< skew currentVersion >}} के लिए आवश्यक है कि आप एक रनटाइम का उपयोग करें जो
{{< glossary_tooltip term_id="cri" text="कंटेनर रनटाइम इंटरफ़ेस">}} (CRI)
के अनुरूप है।
अधिक जानकारी के लिए [CRI version support](#cri-versions) देखें।
यह पृष्ठ Linux पर कुबेरनेट्स के साथ कई सामान्य कंटेनर रनटाइम का उपयोग करने के विवरण सूचीबद्ध करता है:
- [containerd](#containerd)
- [CRI-O](#cri-o)
- [Docker](#docker)
- [Docker Engine](#docker)
- [Mirantis Container Runtime](#mcr)
{{< note >}}
अन्य ऑपरेटिंग सिस्टम के लिए, अपने प्लेटफ़ॉर्म के अनुसार विशिष्ट प्रलेखन देखें।
@ -27,11 +34,8 @@ weight: 20
प्रक्रियाओं के लिए आवंटित संसाधनों को सीमित करने के लिए कण्ट्रोल ग्रुप का उपयोग किया जाता है।
जब Linux वातावरण के लिए init सिस्टम, [systemd]
(https://www.freedesktop.org/wiki/Software/systemd/)
जब Linux वातावरण के लिए init सिस्टम, [systemd (https://www.freedesktop.org/wiki/Software/systemd/)
को चुना जाता है, तब init प्रक्रिया रुट(root) control group (`cgroup`) उत्पन्न करती है और उपभोग करती है तथा cgroup मैनेजर की तरह काम करता है।
Systemd और cgroups एकीकृत हैं और प्रत्येक systemd यूनिट को एक cgroup आवंटित होता है। अपने कन्टैनर रनटाइम और kubelet को `cgroupfs` प्रयोग करने के लिए कॉन्फ़िगर करना संभव है। systemd के साथ `cgroupfs` प्रयोग करने के कारण दो अलग cgroup मैनेजर होंगे।
एक एकल cgroup प्रबंधक इस दृष्टिकोण को सरल बनाता है कि कौन से संसाधन आवंटित किए जा रहे हैं और डिफ़ॉल्ट रूप से उपलब्ध और उपयोग में आने वाले संसाधनों के बारे में अधिक सुसंगत दृश्य होगा।
@ -40,49 +44,66 @@ Systemd और cgroups एकीकृत हैं और प्रत्ये
सेटिंग्स को इस तरह बदलना कि आपका कंटेनर रनटाइम और kubelet `systemd` का उपयोग करें क्योंकि cgroup ड्राइवर सिस्टम को स्थिर करता है। डॉकर के लिए इसे कॉन्फ़िगर करने के लिए, `native.cgroupdriver=systemd` सेट करें।
{{< /caution >}}
क्लस्टर में शामिल होने वाले नोड के cgroup ड्राइवर को बदलना एक संवेदनशील ऑपरेशन है। यदि kubelet ने एक सीग्रुप ड्राइवर के शब्दार्थ का उपयोग करके पॉड्स बनाए हैं, तो कंटेनर रनटाइम को दूसरे सीग्रुप ड्राइवर में बदलने से मौजूदा पॉड्स के पॉड सैंडबॉक्स को फिर से बनाते समय त्रुटियां हो सकती हैं। kubelet को पुनरारंभ करने से ऐसी त्रुटियों का समाधान नहीं हो सकता है।
यदि आपके पास स्वचालन है जो इसे व्यवहार्य बनाता है, तो अद्यतन किए गए कॉन्फ़िगरेशन का उपयोग करके नोड को दूसरे के साथ बदलें, या स्वचालन का उपयोग करके इसे पुनर्स्थापित करें।
क्लस्टर में शामिल होने वाले नोड के cgroup ड्राइवर को बदलना एक संवेदनशील ऑपरेशन है। यदि kubelet ने एक सीग्रुप ड्राइवर के सिमेंटिक्स (semantics) का उपयोग करके पॉड्स बनाए हैं, तो कंटेनर रनटाइम को दूसरे सीग्रुप ड्राइवर में बदलने से मौजूदा पॉड्स के पॉड सैंडबॉक्स को फिर से बनाते समय त्रुटियां हो सकती हैं। kubelet को पुनरारंभ करने से ऐसी त्रुटियों का समाधान नहीं हो सकता है।
यदि आपके पास स्वचालन है जो इसे व्यवहार्य बनाता है, तो अद्यतन किए गए कॉन्फ़िगरेशन का उपयोग करके नोड को दूसरे के साथ बदलें, या स्वचालन का उपयोग करके इसे पुनर्स्थापित करें।
{{< /caution >}}
## Cgroup संस्करण 2 {#cgroup-v2}
## Cgroup v2
Cgroup v2, cgroup Linux API का अगला संस्करण है। Cgroup v1 से अलग, प्रत्येक कंट्रोलर के लिए एक अलग अनुक्रम के बजाय एक एकल पदानुक्रम है।
Cgroup v2, cgroup Linux API का अगला संस्करण है। Cgroup v1 से अलग, प्रत्येक कंट्रोलर के लिए एक अलग अनुक्रम के बजाय एक पदानुक्रम है।
नया संस्करण cgroup v1 पर कई सुधार प्रदान करता है, इनमें से कुछ सुधार हैं:
- API का उपयोग करने का क्लीनर और आसान तरीका
- API का उपयोग करने का स्पष्ट और आसान तरीका
- कंटेनरों के लिए सुरक्षित उप-वृक्ष प्रतिनिधिमंडल
- प्रेशर स्टॉल की जानकारी जैसी नई सुविधाएँ
भले ही कर्नेल हाइब्रिड कॉन्फ़िगरेशन का समर्थन करता हो, जहां कुछ नियंत्रक cgroup v1 द्वारा प्रबंधित किए जाते हैं और कुछ अन्य cgroup v2 द्वारा, Kubernetes सभी नियंत्रकों को प्रबंधित करने के लिए केवल उसी cgroup संस्करण का समर्थन करता है।
यदि सिस्टमड डिफ़ॉल्ट रूप से cgroup v2 का उपयोग नहीं करता है, तो आप कर्नेल कमांड लाइन में `systemd.unified_cgroup_hierarchy=1` जोड़कर सिस्टम को इसका उपयोग करने के लिए कॉन्फ़िगर कर सकते हैं।
यदि सिस्टमड (Systemd) डिफ़ॉल्ट रूप से cgroup v2 का उपयोग नहीं करता है, तो आप कर्नेल कमांड लाइन में `systemd.unified_cgroup_hierarchy=1` जोड़कर सिस्टम को इसका उपयोग करने के लिए कॉन्फ़िगर कर सकते हैं।
```shell
# dnf install -y grubby && \
# यह उदाहरण एक Linux OS के लिए है जो DNF पैकेज मैनेजर का उपयोग करता है
# आपका सिस्टम कमांड लाइन सेट करने के लिए एक अलग विधि का उपयोग कर सकता है
# लिनक्स कर्नेल का उपयोग करता है।
sudo dnf install -y grubby && \
sudo grubby \
--update-kernel=ALL \
--args="systemd.unified_cgroup_hierarchy=1"
```
कॉन्फ़िगरेशन को लागू करने के लिए, नोड को रीबूट करना आवश्यक है।
यदि आप कर्नेल के लिए कमांड लाइन बदलते हैं, तो आपको अपने से पहले नोड को रिबूट करना होगा
परिवर्तन प्रभावी होता है।
Cgroup v2 में स्विच करते समय उपयोगकर्ता अनुभव में कोई उल्लेखनीय अंतर नहीं होना चाहिए, जब तक कि उपयोगकर्ता सीग्रुप फाइल सिस्टम को सीधे नोड पर या कंटेनरों के भीतर से एक्सेस कर रहे हैं।
इसका उपयोग करने के लिए, Cgroup v2 को CRI रनटाइम द्वारा भी समर्थित होना चाहिए।
इसका उपयोग करने के लिए, Cgroup v2 को CRI रनटाइम द्वारा भी सपोर्टेड (supported) होना चाहिए।
### Kubeadm प्रबंधित क्लस्टर में `systemd` ड्राइवर में माइग्रेट करना
यदि आप मौजूदा kubeadm प्रबंधित क्लस्टर में `systemd` cgroup ड्राइवर में माइग्रेट करना चाहते हैं, तो [माइग्रेशन गाइड](/docs/tasks/administer-cluster/kubeadm/configure-cgroup-driver/) का पालन करें।
## CRI संस्करण समर्थन {#cri-versions}
आपके कंटेनर रनटाइम को कंटेनर रनटाइम इंटरफ़ेस के कम से कम v1alpha2 का समर्थन करना चाहिए।
कुबेरनेट्स {{< skew currentVersion >}} डिफ़ॉल्ट रूप से CRI API के v1 का उपयोग करता है।
यदि कंटेनर रनटाइम v1 API का समर्थन नहीं करता है, तो क्यूबलेट वापस आ जाता है
इसके बजाय (बहिष्कृत) v1alpha2 API का उपयोग करना।
## कंटेनर रनटाइम
{{% thirdparty-content %}}
### containerd
यह खंड कंटेनरड को सीआरआई रनटाइम के रूप में उपयोग करने के लिए आवश्यक कदम बताता है।
अपने सिस्टम पर containerd स्थापित करने के लिए निम्नलिखित कमांड का उपयोग करें:
पूर्वापेक्षाएँ स्थापित और कॉन्फ़िगर करें:
### कंटेनरडी {#containerd}
यह खंड कंटेनरडी को CRI रनटाइम के रूप में उपयोग करने के लिए आवश्यक कदम है।
अपने सिस्टम पर containerd इंस्टॉल करने के लिए निम्नलिखित कमांड का उपयोग करें:
पूर्वापेक्षाएँ इंस्टॉल और कॉन्फ़िगर करें:
```shell
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
@ -91,56 +112,56 @@ br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
# Setup required sysctl params, these persist across reboots.
# सेटअप आवश्यक sysctl params, ये रिबूट के दौरान बने रहते हैं।
cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
# Apply sysctl params without reboot
# रिबूट के बिना sysctl params लागू करें
sudo sysctl --system
```
Containerd इंस्टॉल करें:
कंटेनरडी इंस्टॉल करें:
{{< tabs name="tab-cri-containerd-installation" >}}
{{% tab name="Linux" %}}
1. आधिकारिक डॉकर रिपॉजिटरी से `containerd.io` पैकेज स्थापित करें।
अपने संबंधित लिनक्स वितरण के लिए डॉकर रिपॉजिटरी स्थापित करने और `containerd.io` पैकेज स्थापित करने के निर्देश यहां देखे जा सकते हैं
[Install Docker Engine](https://docs.docker.com/engine/install/#server).
1. आधिकारिक डॉकर रिपॉजिटरी से `containerd.io` पैकेज इंस्टॉल करें।
अपने संबंधित लिनक्स वितरण के लिए डॉकर रिपॉजिटरी इंस्टॉल करने और `containerd.io` पैकेज इंस्टॉल करने के निर्देश यहां देखे जा सकते हैं
[डॉकर इंजन इंस्टॉल करें](https://docs.docker.com/engine/install/#server).
2. कंटेनर को कॉन्फ़िगर करें:
2. कंटेनरडी कॉन्फ़िगर करें:
```shell
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
```
3. कंटेनर को पुनरारंभ करें:
3. कंटेनरडी को पुनरारंभ करें:
```shell
sudo systemctl restart containerd
```
{{% /tab %}}
{{% tab name="Windows (PowerShell)" %}}
{{% /tab %}}
{{% tab name="Windows (PowerShell)" %}}
Powershell सत्र प्रारंभ करें, `$Version` को वांछित संस्करण पर सेट करें (उदाहरण: `$Version=1.4.3`), और फिर निम्न आदेश चलाएँ:
Powershell सत्र प्रारंभ करें, `$Version` को वांछित संस्करण पर सेट करें (उदाहरण: `$Version=1.4.3`), और फिर निम्न आदेश चलाएँ:
1. कंटेनरड डाउनलोड करें:
1. कंटेनरड डाउनलोड करें:
```powershell
curl.exe -L https://github.com/containerd/containerd/releases/download/v$Version/containerd-$Version-windows-amd64.tar.gz -o containerd-windows-amd64.tar.gz
tar.exe xvf .\containerd-windows-amd64.tar.gz
tar.exe xvf .\containerd-windows-amd64.tar.gz
```
2. एक्सट्रेक्ट एंड कॉन्फ़िगर:
```powershell
Copy-Item -Path ".\bin\" -Destination "$Env:ProgramFiles\containerd" -Recurse -Force
Copy-Item -Path ".\bin\" -Destination "$Env:ProgramFiles\containerd" -Recurse -Force
cd $Env:ProgramFiles\containerd\
.\containerd.exe config default | Out-File config.toml -Encoding ascii
.\containerd.exe config default | Out-File config.toml -Encoding ascii
# कॉन्फ़िगरेशन की समीक्षा करें। सेटअप के आधार पर आप समायोजित करना चाह सकते हैं:
# - सैंडबॉक्स_इमेज (कुबेरनेट्स पॉज़ इमेज)
# - cni bin_dir और conf_dir स्थान
@ -149,7 +170,7 @@ Powershell सत्र प्रारंभ करें, `$Version` को
Add-MpPreference -ExclusionProcess "$Env:ProgramFiles\containerd\containerd.exe"
```
3. कंटेनर शुरू करें:
3. कंटेनरडी शुरू करें:
```powershell
.\containerd.exe --register-service
@ -160,19 +181,15 @@ Powershell सत्र प्रारंभ करें, `$Version` को
{{< /tabs >}}
#### systemd` cgroup ड्राइवर का उपयोग करें {#containerd-systemd}
`systemd` cgroup ड्राइवर {#containerd-systemd} का उपयोग करना
`runc` के साथ `/etc/containerd/config.toml` में `systemd` cgroup ड्राइवर का उपयोग करने के लिए, सेट करें
```
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
...
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = true
```
यदि आप इस परिवर्तन को लागू करते हैं, तो सुनिश्चित करें कि आप फिर से कंटेन्डर को पुनरारंभ करें:
यदि आप इस परिवर्तन को लागू करते हैं,तो सुनिश्चित करें कि आप फिर से कंटेनरडी को पुनरारंभ करें:
```shell
sudo systemctl restart containerd
```
@ -182,16 +199,16 @@ sudo systemctl restart containerd
### CRI-O
इस खंड में CRI-O को कंटेनर रनटाइम के रूप में स्थापित करने के लिए आवश्यक जानकारी है।
इस खंड में CRI-O को कंटेनर रनटाइम के रूप में इंस्टॉल करने के लिए आवश्यक जानकारी है।
अपने सिस्टम पर CRI-O स्थापित करने के लिए निम्नलिखित कमांड का उपयोग करें:
अपने सिस्टम पर CRI-O इंस्टॉल करने के लिए निम्नलिखित कमांड का उपयोग करें:
{{< note >}}
CRI-O के प्रमुख और छोटे संस्करणों को Kubernetes के प्रमुख और छोटे संस्करणों से मेल खाना चाहिए।
अधिक जानकारी के लिए [CRI-O compatibility matrix](https://github.com/cri-o/cri-o#compatibility-matrix-cri-o--kubernetes) देखें।
{{< /note >}}
पूर्वापेक्षाएँ स्थापित और कॉन्फ़िगर करें:
पूर्वापेक्षाएँ इंस्टॉल और कॉन्फ़िगर करें:
```shell
# बूटअप पर मॉड्यूल लोड करने के लिए .conf फाइल बनाएं
@ -225,7 +242,6 @@ sudo sysctl --system
उदाहरण के लिए, यदि आप CRI-O 1.20 इंस्टॉल करना चाहते हैं, तो `VERSION=1.20` सेट करें।
आप अपनी स्थापना को किसी विशिष्ट रिलीज़ पर पिन कर सकते हैं।
संस्करण 1.20.0 स्थापित करने के लिए, `VERSION=1.20:1.20.0` सेट करें।
<br />
कृपया यह करें
@ -261,7 +277,6 @@ sudo apt-get install cri-o cri-o-runc
उदाहरण के लिए, यदि आप CRI-O 1.20 इंस्टॉल करना चाहते हैं, तो `VERSION=1.20` सेट करें।
आप अपनी स्थापना को किसी विशिष्ट रिलीज़ पर पिन कर सपर पिन कर सकते हैं।
संस्करण 1.20.0 स्थापित करने के लिए, `VERSION=1.20:1.20.0` सेट करें।
<br />
कृपया यह करें
@ -322,7 +337,7 @@ sudo dnf module list cri-o
```
CRI-O फेडोरा पर विशिष्ट रिलीज के लिए पिनिंग का समर्थन नहीं करता है।
फिर इसे करें:
तब इसे करें:
```shell
sudo dnf module enable cri-o:$VERSION
sudo dnf install cri-o
@ -331,14 +346,14 @@ sudo dnf install cri-o
{{% /tab %}}
{{< /tabs >}}
इसे शुरू करें CRI-O:
CRI-O शुरू करें :
```shell
sudo systemctl daemon-reload
sudo systemctl enable crio --now
```
[CRI-O इंस्टॉलेशन गाइड](https://github.com/cri-o/cri-o/blob/master/install.md)
अधिक जानकारी के लिए [CRI-O इंस्टॉलेशन गाइड](https://github.com/cri-o/cri-o/blob/master/install.md) देखें।
#### cgroup ड्राइवर
@ -354,37 +369,23 @@ cgroup_manager = "cgroupfs"
कृपया बदले हुए `conmon_cgroup` पर भी ध्यान दें, जिसे `cgroupfs` के साथ CRI-O का उपयोग करते समय `पॉड` मान पर सेट करना होगा।
आमतौर पर क्यूबलेट के cgroup ड्राइवर कॉन्फ़िगरेशन (आमतौर पर kubeadm के माध्यम से किया जाता है) और CRI-O को सिंक में रखना आवश्यक है।
### Docker
### डॉकर इंजन {#docker}
1.अपने प्रत्येक नोड पर, अपने लिनक्स वितरण के लिए डॉकर को निम्नानुसार स्थापित करें
[Docker Engine स्थापित करें](https://docs.docker.com/engine/install/#server).
आप इसमें डॉकर का नवीनतम मान्य संस्करण पा सकते हैं [निर्भरता](https://git.k8s.io/kubernetes/build/dependencies.yaml) फ़ाइल.
डॉकर इंजन कंटेनर रनटाइम है जिसने यह सब शुरू किया। पूर्व में सिर्फ डॉकर के रूप में जाना जाता था,यह कंटेनर रनटाइम विभिन्न रूपों में उपलब्ध है। [डॉकर इंजन इंस्टॉल करें](https://docs.docker.com/engine/install/) आपके विकल्पों की व्याख्या करता है
इस रनटाइम को इंस्टॉल करने के लिए।
2.कंटेनर के समूह के प्रबंधन के लिए विशेष रूप से सिस्टमड का उपयोग करने के लिए डॉकर डेमॉन को कॉन्फ़िगर करें।
```shell
sudo mkdir /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
```
{{< note >}}
`overlay2` Linux कर्नेल संस्करण 4.0 या उच्चतर, या RHEL या CentOS संस्करण 3.10.0-514 और इसके बाद के संस्करण का उपयोग करने वाले सिस्टम के लिए पसंदीदा स्टोरेज ड्राइवर है।
{{< /note >}}
3. डॉकर को पुनरारंभ करें और बूट पर सक्षम करें:
```shell
sudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker
```
{{< note >}}
अधिक जानकारी के लिए देखें
- [डॉकर डेमॉन को कॉन्फ़िगर करें](https://docs.docker.com/config/daemon/)
- [सिस्टमड के साथ डॉकर को नियंत्रित करें](https://docs.docker.com/config/daemon/systemd/)
{{< /note >}}
डॉकर इंजन कुबेरनेट्स {{< skew currentVersion >}} के साथ सीधे संगत है, जो कि बहिष्कृत `dockershim` घटक का उपयोग करता है। अधिक जानकारी के लिए
और संदर्भ, [Dockershim deprecation FAQ](/dockershim) देखें।
आप तृतीय-पक्ष एडेप्टर भी पा सकते हैं जो आपको कुबेरनेट्स के साथ डॉकर इंजन का उपयोग करने देता है, समर्थित {{< glossary_tooltip term_id="cri" text="Container Runtime Interface">}} के माध्यम से
(CRI)।
निम्नलिखित CRI एडेप्टर डॉकर इंजन के साथ काम करने के लिए डिज़ाइन किए गए हैं:
- [`cri-dockerd`](https://github.com/Mirantis/cri-dockerd) Mirantis से
### मिरांटिस कंटेनर रनटाइम {#mcr}
[Mirantis Container Runtime](https://docs.mirantis.com/mcr/20.10/overview.html) (MCR) एक व्यावसायिक रूप से है उपलब्ध कंटेनर रनटाइम जिसे पहले डॉकर एंटरप्राइज एडिशन के नाम से जाना जाता था।
आप खुले स्रोत का उपयोग करके कुबेरनेट्स के साथ मिरांटिस कंटेनर रनटाइम का उपयोग कर सकते हैं [`cri-dockerd`](https://github.com/Mirantis/cri-dockerd) घटक, MCR के साथ शामिल है।