Change:
This is a Feature Request What would you like to be We need to update content/ja/docs/concepts/containers/runtime- according to the English text, because it is outdated. Why is this needed content/ja/docs/concepts/containers/runtime- is outdated. Comments /language ja /assign
/triage accepted

Discussion:
<!-- overview --> <del> {{< feature-state for_k8s_version="v1.14" state="beta" >}} </del> <ins> {{< feature-state for_k8s_version="v1.20" state="stable" >}} </ins> このページではRuntimeClassリソースと、runtimeセクションのメカニズムについて説明します。

## セットアップ <del> RuntimeClass機能のフィーチャーゲートが有効になっていることを確認してください(デフォルトで有効です)。フィーチャーゲートを有効にする方法については、[フィーチャーゲート](/ja/docs/reference/command-line-tools-reference/feature-gates/)を参照してください。 その`RuntimeClass`のフィーチャーゲートはApiServerとkubeletのどちらも有効になっていなければなりません。 </del> 1. ノード上でCRI実装を設定する。(ランタイムに依存) 2. 対応するRuntimeClassリソースを作成する。

設定が異なるノードをサポートするには、[スケジューリング](#scheduling)を参照してください。 {{< /note >}} <del> RuntimeClassの設定は、RuntimeClassによって参照される`ハンドラー`名を持ちます。そのハンドラーは正式なDNS-1123に準拠する形式のラベルでなくてはなりません(英数字 + `-`の文字で構成されます)。 </del> <ins> RuntimeClassの設定は、RuntimeClassによって参照される`ハンドラー`名を持ちます。そのハンドラーは有効な[DNSラベル名](/ja/docs/concepts/overview/working-with-objects/names/#dns-label-names)でなくてはなりません。 </ins> ### 2. 対応するRuntimeClassリソースを作成する

そのRuntimeClassリソースは現時点で2つの重要なフィールドを持ちます。それはRuntimeClassの名前(`metadata.name`)とハンドラー(`handler`)です。そのオブジェクトの定義は下記のようになります。 ```yaml <del> apiVersion: node.k8s.io/v1beta1  # RuntimeClassはnode.k8s.ioというAPIグループで定義されます。 </del> <ins> # RuntimeClassはnode.k8s.ioというAPIグループで定義されます。 apiVersion: node.k8s.io/v1 </ins> kind: RuntimeClass metadata: <del> name: myclass  # RuntimeClass名 </del> <ins> # RuntimeClass名 </ins> # RuntimeClassはネームスペースなしのリソースです。 <del> handler: myconfiguration  # 対応するCRI設定 </del> <ins> name: myclass # 対応するCRI設定 handler: myconfiguration </ins> ``` RuntimeClassオブジェクトの名前は[DNSサブドメイン名](/ja/docs/concepts/overview/working-with-objects/names#dns-subdomain-names)に従う必要があります。

## 使用例 <del> 一度RuntimeClassがクラスターに対して設定されると、それを使用するのは非常に簡単です。PodSpecの`runtimeClassName`を指定してください。 </del> <ins> RuntimeClassがクラスターに対して設定されると、PodSpecで`runtimeClassName`を指定して使用できます。 </ins> 例えば ```yaml

# ... ``` <del> これは、Kubeletに対してPodを稼働させるためのRuntimeClassを使うように指示します。もし設定されたRuntimeClassが存在しない場合や、CRIが対応するハンドラーを実行できない場合、そのPodは`Failed`という[フェーズ](/ja/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase)になります。 エラーメッセージに関しては対応する[イベント](/docs/tasks/debug-application-cluster/debug-application-introspection/)を参照して下さい。 </del> <ins> これは、kubeletに対してPodを稼働させるためのRuntimeClassを使うように指示します。もし設定されたRuntimeClassが存在しない場合や、CRIが対応するハンドラーを実行できない場合、そのPodは`Failed`という[フェーズ](/ja/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase)になります。 エラーメッセージに関しては対応する[イベント](/docs/tasks/debug/debug-application/debug-running-pod/)を参照して下さい。 </ins> もし`runtimeClassName`が指定されていない場合、デフォルトのRuntimeHandlerが使用され、これはRuntimeClassの機能が無効であるときのふるまいと同じものとなります。 <del> ### CRIの設定 </del> <ins> ### CRIの設定 {#cri-configuration} </ins> CRIランタイムのセットアップに関するさらなる詳細は、[CRIのインストール](/docs/setup/cri/)を参照してください。 <del> #### dockershim Kubernetesのビルトインのdockershim CRIは、ランタイムハンドラーをサポートしていません。 </del> #### {{< glossary_tooltip term_id="containerd" >}} ランタイムハンドラーは、`/etc/containerd/config.toml`にあるcontainerdの設定ファイルにより設定されます。

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.${HANDLER_NAME}] ``` <del> containerdの設定に関する詳細なドキュメントは下記を参照してください。 https://github.com/containerd/containerd/blob/main/docs/cri/config.md </del> <ins> 詳細はcontainerdの[設定に関するドキュメント](https://github.com/containerd/containerd/blob/main/docs/cri/config.md)を参照してください。 </ins> #### {{< glossary_tooltip term_id="cri-o" >}}

runtime_path = "${PATH_TO_BINARY}" ``` <del> 詳細はCRI-Oの[設定に関するドキュメント](https://raw.githubusercontent.com/cri-o/cri-o/9f11d1d/docs/crio.conf.5.md)を参照してください。 </del> <ins> 詳細はCRI-Oの[設定に関するドキュメント](https://github.com/cri-o/cri-o/blob/master/docs/crio.conf.5.md)を参照してください。 </ins> ## スケジューリング {#scheduling} {{< feature-state for_k8s_version="v1.16" state="beta" >}} <del> Kubernetes 1.16では、RuntimeClassは`scheduling`フィールドを使ったクラスター内での異なる設定をサポートしています。 このフィールドによって、設定されたRuntimeClassをサポートするノードに対してPodがスケジュールされることを保証できます。 スケジューリングをサポートするためにはRuntimeClass [アドミッションコントローラー](/docs/reference/access-authn-authz/admission-controllers/#runtimeclass)を有効にしなければなりません。(1.16ではデフォルトです) </del> <ins> RuntimeClassの`scheduling`フィールドを指定することで、設定されたRuntimeClassをサポートするノードにPodがスケジューリングされるように制限することができます。 `scheduling`が設定されていない場合、このRuntimeClassはすべてのノードでサポートされていると仮定されます。 </ins> 特定のRuntimeClassをサポートしているノードへPodが配置されることを保証するために、各ノードは`runtimeclass.scheduling.nodeSelector`フィールドによって選択される共通のラベルを持つべきです。 RuntimeClassのnodeSelectorはアドミッション機能によりPodのnodeSelectorに統合され、効率よくノードを選択します。

### Podオーバーヘッド <del> {{< feature-state for_k8s_version="v1.18" state="beta" >}} </del> <ins> {{< feature-state for_k8s_version="v1.24" state="stable" >}} </ins> Podが稼働する時に関連する _オーバーヘッド_ リソースを指定できます。オーバーヘッドを宣言すると、クラスター(スケジューラーを含む)がPodとリソースに関する決定を行うときにオーバーヘッドを考慮することができます。 <del> Podオーバーヘッドを使うためには、PodOverhead[フィーチャーゲート](/ja/docs/reference/command-line-tools-reference/feature-gates/)を有効にしなければなりません。(デフォルトではonです) </del> PodのオーバーヘッドはRuntimeClass内の`overhead`フィールドによって定義されます。 このフィールドを使用することで、RuntimeClassを使用して稼働するPodのオーバーヘッドを指定することができ、Kubernetes内部で使用されるオーバーヘッドを確保することができます。