Change:
This is a Feature Request <!-- Please only use this template for submitting feature/enhancement requests --<!-- See for guidance on writing an actionable issue description. --What would you like to be <!-- Describe as precisely as possible how this feature/enhancement should work from the user perspective. What should be changed, etc. --Update Japanese translation Why is this needed Comments <!-- Any additional related comments that might help. Drawings/mockups would be extremely helpful (if required). --ref. /language ja
This issue is currently awaiting triage. SIG Docs takes a lead on issue triage for this website, but any Kubernetes member can accept issues by applying the label. The label can be by org members by writing in a comment. <detailsInstructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
I want to work on this. Have you already started working on it? It seems that some pages linked from here are not translated yet: dockershim-removal template For now, I'm going to start working on dockershim related contents. Feel free to notify me if this conflicts with your work.
I'll assign myself since you haven't assigned youself to this issue. Please tell me if this conflicts with you work. /assign

Discussion:
* コンテナランタイムがcgroup v2をサポートしていること。例えば、 * [containerd](https://containerd.io/) v1.4以降 * [cri-o](https://cri-o.io/) v1.20以降 <del> * kubeletとコンテナランタイムが[systemd cgroupドライバー](/docs/setup/production-environment/container-runtimes#systemd-cgroup-driver)を使うように設定されていること </del> <ins> * kubeletとコンテナランタイムが[systemd cgroupドライバー](/ja/docs/setup/production-environment/container-runtimes#systemd-cgroup-driver)を使うように設定されていること </ins> ### Linuxディストリビューションのcgroup v2サポート

- [cgroups](https://man7.org/linux/man-pages/man7/cgroups.7.html)についてもっと学習しましょう。 - [コンテナランタイム](/ja/docs/concepts/architecture/cri)についてもっと学習しましょう。 <del> - [cgroupドライバー](/docs/setup/production-environment/container-runtimes#cgroup-drivers)についてもっと学習しましょう。 </del> <ins> - [cgroupドライバー](/ja/docs/setup/production-environment/container-runtimes#cgroup-drivers)についてもっと学習しましょう。 </ins>

### CRIの設定 {#cri-configuration} <del> CRIランタイムのセットアップに関するさらなる詳細は、[CRIのインストール](/docs/setup/cri/)を参照してください。 </del> <ins> CRIランタイムのセットアップに関するさらなる詳細は、[コンテナランタイム](/ja/docs/setup/production-environment/container-runtimes/)を参照してください。 </ins> #### {{< glossary_tooltip term_id="containerd" >}}

--- <del> title: CRIのインストール </del> <ins> title: コンテナランタイム </ins> content_type: concept <del> weight: 10 </del> <ins> weight: 20 </ins> --- <!-- overview --> <del> {{< feature-state for_k8s_version="v1.6" state="stable" >}} Podのコンテナを実行するために、Kubernetesはコンテナランタイムを使用します。 様々なランタイムのインストール手順は次のとおりです。 </del> <ins> {{% dockershim-removal %}} クラスター内の各ノードがPodを実行できるようにするため、{{< glossary_tooltip text="コンテナランタイム" term_id="container-runtime" >}}をインストールする必要があります。 このページでは、ノードをセットアップするための概要と関連する作業について説明します。 </ins> <del> <!-- body --> </del> <ins> Kubernetes {{< skew currentVersion >}}においては、{{< glossary_tooltip term_id="cri" text="Container Runtime Interface">}} (CRI)に準拠したランタイムを使用する必要があります。 </ins> <del> {{< caution >}} コンテナ実行時にruncがシステムファイルディスクリプターを扱える脆弱性が見つかりました。 悪意のあるコンテナがこの脆弱性を利用してruncのバイナリを上書きし、 コンテナホストシステム上で任意のコマンドを実行する可能性があります。 </del> <ins> 詳しくは[サポートするCRIのバージョン](#cri-versions)をご覧ください。 </ins> <del> この問題の更なる情報は[CVE-2019-5736](https://access.redhat.com/security/cve/cve-2019-5736)を参照してください。 {{< /caution >}} </del> <ins> このページではいくつかの一般的なコンテナランタイムをKubernetesで使用する方法の概要を説明します。 </ins> <del> ### 適用性 </del> <ins> - [containerd](#containerd) - [CRI-O](#cri-o) - [Docker Engine](#docker) - [Mirantis Container Runtime](#mcr) </ins> {{< note >}} <del> このドキュメントはLinuxにCRIをインストールするユーザーのために書かれています。 他のオペレーティングシステムの場合、プラットフォーム固有のドキュメントを見つけてください。 {{< /note >}} このガイドでは全てのコマンドを `root` で実行します。 例として、コマンドに `sudo` を付けたり、 `root` になってそのユーザーでコマンドを実行します。 ### Cgroupドライバー systemdがLinuxのディストリビューションのinitシステムとして選択されている場合、 initプロセスが作成され、rootコントロールグループ(`cgroup`)を使い、cgroupマネージャーとして行動します。 systemdはcgroupと密接に統合されており、プロセスごとにcgroupを割り当てます。 `cgroupfs` を使うように、あなたのコンテナランライムとkubeletを設定することができます。 systemdと一緒に `cgroupfs` を使用するということは、2つの異なるcgroupマネージャーがあることを意味します。 </del> <ins> v1.24以前のKubernetesリリースでは、 _dockershim_ という名前のコンポーネントを使用したDocker Engineとの直接の統合が含まれていました。 この特別な直接統合は、もはやKubernetesの一部ではありません(この削除はv1.20リリースの一部として[発表](/blog/2020/12/08/kubernetes-1-20-release-announcement/#dockershim-deprecation)されています)。 dockershimの廃止がどのような影響を与えるかについては、[dockershim削除の影響範囲を確認する](/ja/docs/tasks/administer-cluster/migrating-from-dockershim/check-if-dockershim-removal-affects-you/) をご覧ください。 dockershimからの移行について知りたい場合、[dockershimからの移行](/ja/docs/tasks/administer-cluster/migrating-from-dockershim/)を参照してください。 </ins> <del> コントロールグループはプロセスに割り当てられるリソースを制御するために使用されます。 単一のcgroupマネージャーは、割り当てられているリソースのビューを単純化し、 デフォルトでは使用可能なリソースと使用中のリソースについてより一貫性のあるビューになります。 2つのマネージャーがある場合、それらのリソースについて2つのビューが得られます。 kubeletとDockerに `cgroupfs` を使用し、ノード上で実行されている残りのプロセスに `systemd` を使用するように設定されたノードが、 リソース圧迫下で不安定になる場合があります。 コンテナランタイムとkubeletがcgroupドライバーとしてsystemdを使用するように設定を変更することでシステムは安定します。 以下のDocker設定の `native.cgroupdriver=systemd` オプションに注意してください。 </del> <ins> v{{< skew currentVersion >}}以外のバージョンのKubernetesを実行している場合、そのバージョンのドキュメントを確認してください。 {{< /note >}} </ins> <del> {{< caution >}} すでにクラスターに組み込まれているノードのcgroupドライバーを変更することは非常におすすめしません。 kubeletが一方のcgroupドライバーを使用してPodを作成した場合、コンテナランタイムを別のもう一方のcgroupドライバーに変更すると、そのような既存のPodのPodサンドボックスを再作成しようとするとエラーが発生する可能性があります。 kubeletを再起動しても問題は解決しないでしょう。 ワークロードからノードを縮退させ、クラスターから削除して再び組み込むことを推奨します。 {{< /caution >}} </del> <ins> <!-- body --> </ins> <del> ## Docker </del> <ins> ## インストールと設定の必須要件 </ins> <del> それぞれのマシンに対してDockerをインストールします。 バージョン19.03.11が推奨されていますが、1.13.1、17.03、17.06、17.09、18.06、18.09についても動作が確認されています。 Kubernetesのリリースノートにある、Dockerの動作確認済み最新バージョンについてもご確認ください。 </del> <ins> 以下の手順では、全コンテナランタイムに共通の設定をLinux上のKubernetesノードに適用します。 </ins> <del> システムへDockerをインストールするには、次のコマンドを実行します。 </del> <ins> 特定の設定が不要であることが分かっている場合、手順をスキップして頂いて構いません。 </ins> <del> {{< tabs name="tab-cri-docker-installation" >}} {{% tab name="Ubuntu 16.04+" %}} </del> <ins> 詳細については、[Network Plugin Requirements](/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/#network-plugin-requirements)または、特定のコンテナランタイムのドキュメントを参照してください。 </ins> <del> ```shell # (Install Docker CE) ## リポジトリをセットアップ ### HTTPS越しのリポジトリの使用をaptに許可するために、パッケージをインストール apt-get update && apt-get install -y  apt-transport-https ca-certificates curl software-properties-common gnupg2 ``` </del> <ins> ### IPv4フォワーディングを有効化し、iptablesからブリッジされたトラフィックを見えるようにする </ins> <del> ```shell # Docker公式のGPG鍵を追加: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - ``` </del> <ins> 以下のコマンドを実行します。 </ins> <del> ```shell # Dockerのaptレポジトリを追加: add-apt-repository  "deb [arch=amd64] https://download.docker.com/linux/ubuntu  $(lsb_release -cs)  stable" ``` </del> <ins> ```bash cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF </ins> <del> ```shell # Docker CEのインストール apt-get update && apt-get install -y  containerd.io=1.2.13-2  docker-ce=5:19.03.11~3-0~ubuntu-$(lsb_release -cs)  docker-ce-cli=5:19.03.11~3-0~ubuntu-$(lsb_release -cs) ``` </del> <ins> sudo modprobe overlay sudo modprobe br_netfilter </ins> <del> ```shell # デーモンをセットアップ cat > /etc/docker/daemon.json <<EOF { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } </del> <ins> # この構成に必要なカーネルパラメーター、再起動しても値は永続します cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables  = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward                 = 1 </ins> EOF <del> ``` ```shell mkdir -p /etc/systemd/system/docker.service.d </del> <ins> # 再起動せずにカーネルパラメーターを適用 sudo sysctl --system </ins> ``` <del> ```shell # dockerを再起動 systemctl daemon-reload systemctl restart docker ``` {{% /tab %}} {{% tab name="CentOS/RHEL 7.4+" %}} </del> <ins> 以下のコマンドを実行して`br_netfilter`と`overlay`モジュールが読み込まれていることを確認してください。 </ins> <del> ```shell # (Docker CEのインストール) ## リポジトリをセットアップ ### 必要なパッケージのインストール yum install -y yum-utils device-mapper-persistent-data lvm2 </del> <ins> ```bash lsmod | grep br_netfilter lsmod | grep overlay </ins> ``` <del> ```shell ## Dockerリポジトリの追加 yum-config-manager --add-repo  https://download.docker.com/linux/centos/docker-ce.repo ``` </del> <ins> 以下のコマンドを実行して、`net.bridge.bridge-nf-call-iptables`、`net.bridge.bridge-nf-call-ip6tables`、`net.ipv4.ip_forward`カーネルパラメーターが1に設定されていることを確認します。 </ins> <del> ```shell ## Docker CEのインストール yum update -y && yum install -y  containerd.io-1.2.13  docker-ce-19.03.11  docker-ce-cli-19.03.11 </del> <ins> ```bash sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward </ins> ``` <del> ```shell ## /etc/docker ディレクトリを作成 mkdir /etc/docker ``` </del> <ins> ## cgroupドライバー {#cgroup-drivers} </ins> <del> ```shell # デーモンをセットアップ cat > /etc/docker/daemon.json <<EOF { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ] } EOF ``` </del> <ins> Linuxでは、プロセスに割り当てられるリソースを制約するために{{< glossary_tooltip text="cgroup" term_id="cgroup" >}}が使用されます。 </ins> <del> ```shell mkdir -p /etc/systemd/system/docker.service.d ``` </del> <ins> {{< glossary_tooltip text="kubelet" term_id="kubelet" >}}と基盤となるコンテナランタイムは、[コンテナのリソース管理](/ja/docs/concepts/configuration/manage-resources-containers/)を実施し、CPU/メモリーの要求や制限などのリソースを設定するため、cgroupとインターフェースする必要があります。 cgroupとインターフェースするために、kubeletおよびコンテナランタイムは*cgroupドライバー*を使用する必要があります。 この際、kubeletとコンテナランタイムが同一のcgroupドライバーを使用し、同一の設定を適用することが不可欠となります。 </ins> <del> ```shell # dockerを再起動 systemctl daemon-reload systemctl restart docker ``` {{% /tab %}} {{< /tabs >}} </del> <ins> 利用可能なcgroupドライバーは以下の2つです。 </ins> <del> ブート時にDockerサービスを開始させたい場合は、以下のコマンドを入力してください: </del> <ins> * [`cgroupfs`](#cgroupfs-cgroup-driver) * [`systemd`](#systemd-cgroup-driver) </ins> <del> ```shell sudo systemctl enable docker ``` </del> <ins> ### cgroupfsドライバー {#cgroupfs-cgroup-driver} </ins> <del> 詳細については、[Dockerの公式インストールガイド](https://docs.docker.com/engine/installation/)を参照してください。 </del> <ins> `cgroupfs`ドライバーは、kubeletのデフォルトのcgroupドライバーです。 `cgroupfs`ドライバーを使用すると、kubeletとコンテナランタイムはcgroupファイルシステムと直接インターフェイスし、cgroupを設定します。 </ins> <del> ## CRI-O </del> <ins> [systemd](https://www.freedesktop.org/wiki/Software/systemd/)がinitシステムである場合、`cgroupfs`ドライバーは推奨**されません**。 なぜなら、systemdはシステム上のcgroupマネージャーが単一であると想定しているからです。 また、[cgroup v2](/ja/docs/concepts/architecture/cgroups)を使用している場合は、`cgroupfs`の代わりに`systemd` cgroupドライバーを使用してください。 </ins> <del> このセクションでは、CRIランタイムとして`CRI-O`を利用するために必要な手順について説明します。 </del> <ins> ### systemd cgroupドライバー {#systemd-cgroup-driver} </ins> <del> システムへCRI-Oをインストールするためには以下のコマンドを利用します: </del> <ins> Linuxディストリビューションのinitシステムに[systemd](https://www.freedesktop.org/wiki/Software/systemd/)が選択されている場合、 initプロセスはルートcgroupを生成・消費し、cgroupマネージャーとして動作します。 </ins> <del> {{< note >}} CRI-OのメジャーとマイナーバージョンはKubernetesのメジャーとマイナーバージョンと一致しなければなりません。 詳細は[CRI-O互換性表](https://github.com/cri-o/cri-o)を参照してください。 {{< /note >}} </del> <ins> systemdはcgroupと密接に連携しており、systemdユニットごとにcgroupを割り当てます。 その結果、initシステムに`systemd`を使用した状態で`cgroupfs`ドライバーを使用すると、 システムには2つの異なるcgroupマネージャーが存在することになります。 </ins> <del> ### 事前準備 </del> <ins> 2つのcgroupマネージャーが存在することで、システムで利用可能なリソースおよび使用中のリソースに、2つの異なる見え方が与えられることになります。 特定の場合において、kubeletとコンテナランタイムに`cgroupfs`を、残りのプロセスに`systemd`を使用するように設定されたノードが高負荷時に不安定になることがあります。 </ins> <del> ```shell modprobe overlay modprobe br_netfilter </del> <ins> このような不安定性を緩和するためのアプローチは、systemdがinitシステムに採用されている場合にkubeletとコンテナランタイムのcgroupドライバーとして`systemd`を使用することです。 </ins> <del> # 必要なカーネルパラメータの設定をします。これらの設定値は再起動後も永続化されます。 cat > /etc/sysctl.d/99-kubernetes-cri.conf <<EOF net.bridge.bridge-nf-call-iptables  = 1 net.ipv4.ip_forward                 = 1 net.bridge.bridge-nf-call-ip6tables = 1 EOF </del> <ins> cgroupドライバーに`systemd`を設定するには、以下のように[`KubeletConfiguration`](/docs/tasks/administer-cluster/kubelet-config-file/)の`cgroupDriver`オプションを編集して`systemd`を設定します。 </ins> <del> sysctl --system </del> <ins> ```yaml apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration ... cgroupDriver: systemd </ins> ``` <del> {{< tabs name="tab-cri-cri-o-installation" >}} {{% tab name="Debian" %}} </del> <ins> kubelet用のcgroupドライバーとして`systemd`を設定する場合、コンテナランタイムのcgroupドライバーにも`systemd`を設定する必要があります。 具体的な手順については、以下のリンクなどの、お使いのコンテナランタイムのドキュメントを参照してください。 </ins> <del> CRI-Oを以下のOSにインストールするには、環境変数$OSを以下の表の適切なフィールドに設定します。 </del> <ins> *  [containerd](#containerd-systemd) *  [CRI-O](#cri-o) </ins> <del> | Operating system | $OS               | | ---------------- | ----------------- | | Debian Unstable  | `Debian_Unstable` | | Debian Testing   | `Debian_Testing`  | </del> <ins> {{< caution >}} クラスターに参加したノードのcgroupドライバーを変更するのはデリケートな操作です。 kubeletが特定のcgroupドライバーのセマンティクスを使用してPodを作成していた場合、 コンテナランタイムを別のcgroupドライバーに変更すると、そのような既存のPodに対してPodサンドボックスを再作成しようとしたときにエラーが発生することがあります。 kubeletを再起動してもこのようなエラーは解決しない可能性があります。 </ins> <del> <br /> そして、`$VERSION`にKubernetesのバージョンに合わせたCRI-Oのバージョンを設定します。例えば、CRI-O 1.18をインストールしたい場合は、`VERSION=1.18` を設定します。インストールを特定のリリースに固定することができます。バージョン 1.18.3をインストールするには、`VERSION=1.18:1.18.3` を設定します。 <br /> </del> <ins> もしあなたが適切な自動化の手段を持っているのであれば、更新された設定を使用してノードを別のノードに置き換えるか、自動化を使用して再インストールを行ってください。 {{< /caution >}} </ins> <del> 以下を実行します。 ```shell echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.list </del> <ins> ### kubeadmで管理されたクラスターでの`systemd`ドライバーへの移行 </ins> <del> curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$VERSION/$OS/Release.key | apt-key add - curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | apt-key add - </del> <ins> 既存のkubeadm管理クラスターで`systemd` cgroupドライバーに移行したい場合は、[cgroupドライバーの設定](/ja/docs/tasks/administer-cluster/kubeadm/configure-cgroup-driver/)に従ってください。 </ins> <del> apt-get update apt-get install cri-o cri-o-runc ``` </del> <ins> ## サポートするCRIのバージョン {#cri-versions} </ins> <del> {{% /tab %}} </del> <ins> コンテナランタイムは、Container Runtime Interfaceのv1alpha2以上をサポートする必要があります。 </ins> <del> {{% tab name="Ubuntu" %}} </del> <ins> Kubernetes {{< skew currentVersion >}}は、デフォルトでCRI APIのv1を使用します。 コンテナランタイムがv1 APIをサポートしていない場合、kubeletは代わりに(非推奨の)v1alpha2 APIにフォールバックします。 </ins> <del> CRI-Oを以下のOSにインストールするには、環境変数$OSを以下の表の適切なフィールドに設定します。 </del> <ins> ## コンテナランタイム {#container-runtimes} </ins> <del> | Operating system | $OS               | | ---------------- | ----------------- | | Ubuntu 20.04     | `xUbuntu_20.04`   | | Ubuntu 19.10     | `xUbuntu_19.10`   | | Ubuntu 19.04     | `xUbuntu_19.04`   | | Ubuntu 18.04     | `xUbuntu_18.04`   | </del> <ins> {{% thirdparty-content %}} </ins> <del> <br /> 次に、`$VERSION`をKubernetesのバージョンと一致するCRI-Oのバージョンに設定します。例えば、CRI-O 1.18をインストールしたい場合は、`VERSION=1.18` を設定します。インストールを特定のリリースに固定することができます。バージョン 1.18.3 をインストールするには、`VERSION=1.18:1.18.3` を設定します。 <br /> </del> <ins> ### containerd </ins> <del> 以下を実行します。 ```shell echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.list </del> <ins> このセクションでは、CRIランタイムとしてcontainerdを使用するために必要な手順の概要を説明します。 </ins> <del> curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$VERSION/$OS/Release.key | apt-key add - curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | apt-key add - </del> <ins> 以下のコマンドを使用して、システムにcontainerdをインストールします: </ins> <del> apt-get update apt-get install cri-o cri-o-runc ``` {{% /tab %}} </del> <ins> まずは[containerdの使用を開始する](https://github.com/containerd/containerd/blob/main/docs/getting-started.md)の指示に従ってください。有効な`config.toml`設定ファイルを作成したら、このステップに戻ります。 </ins> <del> {{% tab name="CentOS" %}} </del> <ins> {{< tabs name="Finding your config.toml file" >}} {{% tab name="Linux" %}} このファイルはパス`/etc/containerd/config.toml`にあります。 {{% /tab %}} {{% tab name="Windows" %}} このファイルは`C:Program Filescontainerdconfig.toml`にあります。 {{% /tab %}} {{< /tabs >}} </ins> <del> CRI-Oを以下のOSにインストールするには、環境変数$OSを以下の表の適切なフィールドに設定します。 </del> <ins> Linuxでは、containerd用のデフォルトのCRIソケットは`/run/containerd/containerd.sock`です。 Windowsでは、デフォルトのCRIエンドポイントは`npipe://./pipe/containerd-containerd`です。 </ins> <del> | Operating system | $OS               | | ---------------- | ----------------- | | Centos 8         | `CentOS_8`        | | Centos 8 Stream  | `CentOS_8_Stream` | | Centos 7         | `CentOS_7`        | </del> <ins> #### `systemd` cgroupドライバーを構成する </ins> <del> <br /> 次に、`$VERSION`をKubernetesのバージョンと一致するCRI-Oのバージョンに設定します。例えば、CRI-O 1.18 をインストールしたい場合は、`VERSION=1.18` を設定します。インストールを特定のリリースに固定することができます。バージョン 1.18.3 をインストールするには、`VERSION=1.18:1.18.3` を設定します。 <br /> </del> <ins> `/etc/containerd/config.toml`内で`runc`が`systemd` cgroupドライバーを使うようにするには、次のように設定します。 </ins> <del> 以下を実行します。 ```shell curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/devel:kubic:libcontainers:stable.repo curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$VERSION/$OS/devel:kubic:libcontainers:stable:cri-o:$VERSION.repo yum install cri-o </del> <ins> ``` [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] ... [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] SystemdCgroup = true </ins> ``` <del> {{% /tab %}} {{% tab name="openSUSE Tumbleweed" %}} </del> <ins> [cgroup v2](/ja/docs/concepts/architecture/cgroups)を使用する場合は`systemd` cgroupドライバーの利用を推奨します。 </ins> <del> ```shell sudo zypper install cri-o ``` {{% /tab %}} {{% tab name="Fedora" %}} </del> <ins> {{< note >}} パッケージ(RPMや`.deb`など)からcontainerdをインストールした場合、 CRI統合プラグインがデフォルトで無効になっていることがあります。 Kubernetesでcontainerdを使用するには、CRIサポートを有効にする必要があります。 `/etc/containerd/config.toml`内の`disabled_plugins`リストに`cri`が含まれていないことを確認してください。 このファイルを変更した場合、`containerd`も再起動してください。 クラスターの初回構築後、またはCNIをインストールした後にコンテナのクラッシュループが発生した場合、 パッケージと共に提供されるcontainerdの設定に互換性のないパラメーターが含まれている可能性があります。 [get-started.md](https://github.com/containerd/containerd/blob/main/docs/getting-started.md#advanced-topics)にあるように、 `containerd config default > /etc/containerd/config.toml`でcontainerdの設定をリセットした上で、 上記の設定パラメーターを使用することを検討してください。 {{< /note >}} </ins> <del> $VERSIONには、Kubernetesのバージョンと一致するCRI-Oのバージョンを設定します。例えば、CRI-O 1.18をインストールしたい場合は、$VERSION=1.18を設定します。 以下のコマンドで、利用可能なバージョンを見つけることができます。 ```shell dnf module list cri-o ``` CRI-OはFedoraの特定のリリースにピン留めすることをサポートしていません。 </del> <ins> この変更を適用した場合、必ずcontainerdを再起動してください。 </ins> <del> 以下を実行します。 </del> ```shell <del> dnf module enable cri-o:$VERSION dnf install cri-o </del> <ins> sudo systemctl restart containerd </ins> ``` <del> {{% /tab %}} {{< /tabs >}} </del> <ins> kubeadmを使用している場合、手動で[kubelet cgroupドライバーの設定](/ja/docs/tasks/administer-cluster/kubeadm/configure-cgroup-driver/#configuring-the-kubelet-cgroup-driver)を行ってください。 #### サンドボックス(pause)イメージの上書き {#override-pause-image-containerd} </ins> <del> ### CRI-Oの起動 </del> <ins> [containerdの設定](https://github.com/containerd/containerd/blob/main/docs/cri/config.md)で以下の設定をすることで、サンドボックスのイメージを上書きすることができます。 </ins> <del> ```shell systemctl daemon-reload systemctl start crio </del> <ins> ```toml [plugins."io.containerd.grpc.v1.cri"] sandbox_image = "registry.k8s.io/pause:3.2" </ins> ``` <del> 詳細については、[CRI-Oインストールガイド](https://github.com/kubernetes-sigs/cri-o#getting-started)を参照してください。 </del> <ins> この場合も、設定ファイルの更新後に`systemctl restart containerd`を実行して`containerd`も再起動する必要があるでしょう。 </ins> <del> ## Containerd </del> <ins> ### CRI-O </ins> <del> このセクションでは、CRIランタイムとして`containerd`を利用するために必要な手順について説明します。 </del> <ins> 本セクションでは、コンテナランタイムとしてCRI-Oをインストールするために必要な手順を説明します。 </ins> <del> システムへContainerdをインストールするためには次のコマンドを実行します。 </del> <ins> CRI-Oをインストールするには、[CRI-Oのインストール手順](https://github.com/cri-o/cri-o/blob/main/install.md#readme)に従ってください。 </ins> <del> ### 必要な設定の追加 </del> <ins> #### cgroupドライバー </ins> <del> ```shell cat > /etc/modules-load.d/containerd.conf <<EOF overlay br_netfilter EOF modprobe overlay modprobe br_netfilter </del> <ins> CRI-Oはデフォルトでsystemd cgroupドライバーを使用し、おそらく問題なく動作します。 `cgroupfs` cgroupドライバーに切り替えるには、`/etc/crio/crio.conf` を編集するか、 `/etc/crio/crio.conf.d/02-cgroup-manager.conf`にドロップイン設定ファイルを置いて、以下のような設定を記述してください。 </ins> <del> # 必要なカーネルパラメータの設定をします。これらの設定値は再起動後も永続化されます。 cat > /etc/sysctl.d/99-kubernetes-cri.conf <<EOF net.bridge.bridge-nf-call-iptables  = 1 net.ipv4.ip_forward                 = 1 net.bridge.bridge-nf-call-ip6tables = 1 EOF sysctl --system </del> <ins> ```toml [crio.runtime] conmon_cgroup = "pod" cgroup_manager = "cgroupfs" </ins> ``` <del> ### containerdのインストール </del> <ins> 上記で`conmon_cgroup`も変更されていることに注意してください。 CRI-Oで`cgroupfs`を使用する場合、ここには`pod`という値を設定する必要があります。 一般に、kubeletのcgroupドライバーの設定(通常はkubeadmによって行われます)とCRI-Oの設定は一致させる必要があります。 </ins> <del> {{< tabs name="tab-cri-containerd-installation" >}} {{% tab name="Ubuntu 16.04" %}} </del> <ins> CRI-Oの場合、CRIソケットはデフォルトで`/var/run/crio/crio.sock`となります。 </ins> <del> ```shell # (containerdのインストール) ## リポジトリの設定 ### HTTPS越しのリポジトリの使用をaptに許可するために、パッケージをインストール apt-get update && apt-get install -y apt-transport-https ca-certificates curl software-properties-common ``` </del> <ins> #### サンドボックス(pause)イメージの上書き {#override-pause-image-cri-o} </ins> <del> ```shell ## Docker公式のGPG鍵を追加 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - ``` </del> <ins> [CRI-Oの設定](https://github.com/cri-o/cri-o/blob/main/docs/crio.conf.5.md)において、以下の値を設定することができます。 </ins> <del> ```shell ## Dockerのaptリポジトリの追加 add-apt-repository  "deb [arch=amd64] https://download.docker.com/linux/ubuntu  $(lsb_release -cs)  stable" </del> <ins> ```toml [crio.image] pause_image="registry.k8s.io/pause:3.6" </ins> ``` <del> ```shell ## containerdのインストール apt-get update && apt-get install -y containerd.io ``` </del> <ins> このオプションはライブ設定リロードによる変更の適用に対応しています。 `systemctl reload crio`または`crio`プロセスに`SIGHUP`を送信することで変更を適用できます。 </ins> <del> ```shell # containerdの設定 mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml ``` </del> <ins> ### Docker Engine {#docker} </ins> <del> ```shell # containerdの再起動 systemctl restart containerd ``` {{% /tab %}} {{% tab name="CentOS/RHEL 7.4+" %}} </del> <ins> {{< note >}} この手順では、Docker EngineとKubernetesを統合するために[`cri-dockerd`](https://github.com/Mirantis/cri-dockerd)アダプターを使用することを想定しています。 {{< /note >}} </ins> <del> ```shell # (containerdのインストール) ## リポジトリの設定 ### 必要なパッケージのインストール yum install -y yum-utils device-mapper-persistent-data lvm2 ``` </del> <ins> 1. 各ノードに、使用しているLinuxディストリビューション用のDockerを[Docker Engineのインストール](https://docs.docker.com/engine/install/#server)に従ってインストールします。 </ins> <del> ```shell ## Dockerのリポジトリの追加 yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo ``` </del> <ins> 2. [`cri-dockerd`](https://github.com/Mirantis/cri-dockerd)をリポジトリ内の指示に従ってインストールします。 </ins> <del> ```shell ## containerdのインストール yum update -y && yum install -y containerd.io ``` </del> <ins> `cri-dockerd`の場合、CRIソケットはデフォルトで`/run/cri-dockerd.sock`になります。 </ins> <del> ```shell ## containerdの設定 mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml ``` </del> <ins> ### Mirantis Container Runtime {#mcr} </ins> <del> ```shell # containerdの再起動 systemctl restart containerd ``` {{% /tab %}} {{< /tabs >}} </del> <ins> [Mirantis Container Runtime](https://docs.mirantis.com/mcr/20.10/overview.html)(MCR)は、 以前はDocker Enterprise Editionとして知られていた、商業的に利用可能なコンテナランタイムです。 MCRに含まれるオープンソースの[`cri-dockerd`](https://github.com/Mirantis/cri-dockerd)コンポーネントを使用することで、 Mirantis Container RuntimeをKubernetesで使用することができます。 </ins> <del> ### systemd </del> <ins> Mirantis Container Runtimeのインストール方法について知るには、[MCRデプロイガイド](https://docs.mirantis.com/mcr/20.10/install.html)を参照してください。 </ins> <del> `systemd`のcgroupドライバーを使うには、`/etc/containerd/config.toml`内で`plugins.cri.systemd_cgroup = true`を設定してください。 kubeadmを使う場合は[kubeletのためのcgroupドライバー](/ja/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#マスターノードのkubeletによって使用されるcgroupドライバーの設定)を手動で設定してください。 </del> <ins> CRIソケットのパスを見つけるには、systemdの`cri-docker.socket`という名前のユニットを確認してください。 </ins> <del> ## その他のCRIランタイム: frakti </del> <ins> #### サンドボックス(pause)イメージを上書きする {#override-pause-image-cri-dockerd-mcr} </ins> <del> 詳細については[Fraktiのクイックスタートガイド](https://github.com/kubernetes/frakti#quickstart)を参照してください。 </del> <ins> `cri-dockerd`アダプターは、Podインフラコンテナ("pause image")として使用するコンテナイメージを指定するためのコマンドライン引数を受け付けます。 使用するコマンドライン引数は `--pod-infra-container-image`です。 ## {{% heading "whatsnext" %}} コンテナランタイムに加えて、クラスターには動作する[ネットワークプラグイン](/ja/docs/concepts/cluster-administration/networking/#how-to-implement-the-kubernetes-network-model)が必要です。 </ins>

## {{% heading "prerequisites" %}} <del> Kubernetesの[コンテナランタイムの要件](/docs/setup/production-environment/container-runtimes)を熟知している必要があります。 </del> <ins> Kubernetesの[コンテナランタイムの要件](/ja/docs/setup/production-environment/container-runtimes)を熟知している必要があります。 </ins> <!-- steps --> ## コンテナランタイムのcgroupドライバーの設定 <del> [Container runtimes](/docs/setup/production-environment/container-runtimes)ページでは、kubeadmベースのセットアップでは`cgroupfs`ドライバーではなく、`systemd`ドライバーが推奨されると説明されています。 </del> <ins> [コンテナランタイム](/ja/docs/setup/production-environment/container-runtimes)ページでは、kubeadmベースのセットアップでは`cgroupfs`ドライバーではなく、`systemd`ドライバーが推奨されると説明されています。 </ins> このページでは、デフォルトの`systemd`ドライバーを使用して多くの異なるコンテナランタイムをセットアップする方法についての詳細も説明されています。 <del> ## kubelet cgroupドライバーの設定 </del> <ins> ## kubelet cgroupドライバーの設定 {#configuring-the-kubelet-cgroup-driver} </ins> kubeadmでは、`kubeadm init`の際に`KubeletConfiguration`構造体を渡すことができます。

<!-- overview --> <del> このページでは、クラスター内のノードが使用している[コンテナランタイム](/docs/setup/production-environment/container-runtimes/)を確認する手順を概説しています。 </del> <ins> このページでは、クラスター内のノードが使用している[コンテナランタイム](/ja/docs/setup/production-environment/container-runtimes/)を確認する手順を概説しています。 </ins> クラスターの実行方法によっては、ノード用のコンテナランタイムが事前に設定されている場合と、設定する必要がある場合があります。 マネージドKubernetesサービスを使用している場合、ノードに設定されているコンテナランタイムを確認するためのベンダー固有の方法があるかもしれません。

node-3       Ready    v1.19.6   containerd://1.4.1 ``` <del> コンテナランタイムについては、[コンテナランタイム](/docs/setup/production-environment/container-runtimes/)のページで詳細を確認することができます。 </del> <ins> コンテナランタイムについては、[コンテナランタイム](/ja/docs/setup/production-environment/container-runtimes/)のページで詳細を確認することができます。 </ins>