# Container Runtime Interface (CRI)

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

---

<!-- overview -->

Интерфейс CRI позволяет kubelet работать с различными исполняемыми средами контейнеров без необходимости перекомпиляции компонентов кластера.

<a class='glossary-tooltip' title='Иcполняемая среда контейнеров — это программное обеспечение, предназначенное для запуска контейнеров.' data-bs-toggle='tooltip' data-bs-placement='top' href='/ru/docs/setup/production-environment/container-runtimes' target='_blank' aria-label='Исполняемая среда контейнеров'>Исполняемая среда контейнеров</a> должна работать на всех узлах кластера, чтобы <a class='glossary-tooltip' title='Агент, работающий на каждом узле в кластере. Он следит за тем, чтобы контейнеры были запущены в поде.' data-bs-toggle='tooltip' data-bs-placement='top' href='/ru/docs/reference/command-line-tools-reference/kubelet' target='_blank' aria-label='kubelet'>kubelet</a> мог запускать <a class='glossary-tooltip' title='Самый маленький и простой объект в Kubernetes. Под — это набор запущенных контейнеров в кластере.' data-bs-toggle='tooltip' data-bs-placement='top' href='/ru/docs/concepts/workloads/pods/pod-overview/' target='_blank' aria-label='Pod&#39;ы'>Pod&#39;ы</a> и их контейнеры.

<p><p>Интерфейс Kubernetes Container Runtime Interface (CRI) container Runtime Interface (CRI) — это основной протокол для связи между kubelet'ом и исполняемой средой контейнеров.</p></p>
<p>Интерфейс Kubernetes Container Runtime Interface (CRI) задает основной <a href="https://grpc.io">gRPC-протокол</a>, на базе которого осуществляется коммуникация между <a href="/ru/docs/concepts/overview/components/#node-components">компонентами кластера</a>: <a class='glossary-tooltip' title='Агент, работающий на каждом узле в кластере. Он следит за тем, чтобы контейнеры были запущены в поде.' data-bs-toggle='tooltip' data-bs-placement='top' href='/ru/docs/reference/command-line-tools-reference/kubelet' target='_blank' aria-label='kubelet&#39;ом'>kubelet&#39;ом</a> и <a class='glossary-tooltip' title='Иcполняемая среда контейнеров — это программное обеспечение, предназначенное для запуска контейнеров.' data-bs-toggle='tooltip' data-bs-placement='top' href='/ru/docs/setup/production-environment/container-runtimes' target='_blank' aria-label='исполняемой средой'>исполняемой средой</a>.</p>

<!-- body -->

## API {#api}








  <div class="feature-state-notice feature-stable">
      <span class="feature-state-name">СТАТУС ФИЧИ:</span>
      <code>Kubernetes v1.23 [stable]</code>
    </div>
  



Kubelet выступает в роли клиента при подключении к исполняемой среде через gRPC. Конечные точки ImageService и RuntimeService должны быть доступны в исполняемой среде контейнеров; в kubelet их можно настроить независимо с помощью [флагов командной строки](/docs/reference/command-line-tools-reference/kubelet) `--image-service-endpoint` и `--container-runtime-endpoint`.

В Kubernetes v1.36 kubelet предпочитает использовать CRI `v1`. Если исполняемая среда контейнера не поддерживает `v1` CRI, kubelet пытается перейти на более старую поддерживаемую версию. В версии v1.36 kubelet также может работать с CRI `v1alpha2`, но эта версия считается устаревшей. Если согласовать поддерживаемую версию CRI не удается, узел не регистрируется.

## Обновление

При обновлении Kubernetes kubelet автоматически выбирает последнюю версию CRI при перезапуске компонента. Если это не удается, происходит откат, как описано выше. Если повторный вызов gRPC произошел из-за обновления исполняемой среды контейнера, последняя также должна поддерживать первоначально выбранную версию, иначе повторный вызов будет неудачным. Для этого требуется перезапуск kubelet'а.

## Что дальше

- Дополнительная информация о [протоколе CRI](https://github.com/kubernetes/cri-api/blob/c75ef5b/pkg/apis/runtime/v1/api.proto)
