Cri-tools#
Cri-tools - набор инструментов, используется в DropApp для взаимодействия с контейнерным временем выполнения, которое соответствуют стандарту Container Runtime Interface (CRI). Он содержит утилиты для запуска и остановки контейнеров, создания и удаления образов контейнеров, а также для получения информации о контейнерах и их статусе. CRI — это интерфейс, который описывает стандартную спецификацию для взаимодействия между DropApp и контейнерным временем выполнения. Это позволяет расширять возможности DropApp и использовать различное время выполнения контейнеров, доступное на рынке с различными функциями и возможностями.
CLI интерфейса времени выполнения контейнера (CRI)#
crictl это интерфейс командной строки для сред выполнения контейнеров, совместимых с CRI. Это позволяет разработчикам среды выполнения CRI отлаживать свою среду выполнения без необходимости настраивать компоненты DropApp.
Список команд, их синтаксис и краткое описание приведены в таблице ниже.
Таблица. Список команд crictl
Синтаксис |
Описание |
|---|---|
|
Прикрепить к запущенному контейнеру |
|
Создать новый контейнер |
|
Запустить команду в работающем контейнере |
|
Отобразить информацию о версии среды выполнения |
|
Вывести список образов |
|
Отобразить состояние одного или нескольких контейнеров |
|
Вернуть статус одного или нескольких образов |
|
Вернуть информацию о файловой системе образа |
|
Отобразить состояния одного или нескольких pods |
|
Получить журналы контейнера |
|
Перенаправить локальный порт на pod |
|
Вывести список контейнеров |
|
Извлечь образ из реестра |
|
Запустить новый контейнер внутри тестовой среды |
|
Запустить новый pod |
|
Удалить один или несколько контейнеров |
|
Удалить один или несколько образов |
|
Удалить один или несколько pods |
|
Вывести список pods |
|
Запустить один или несколько созданных контейнеров |
|
Отобразить информацию о среде выполнения контейнера |
|
Остановить один или несколько запущенных контейнеров |
|
Остановить один или несколько запущенных pod |
|
Обновить один или несколько запущенных контейнеров |
|
Получить и установить параметры конфигурации crictl |
|
Показать статистику использования ресурсов контейнера(ов) |
|
Показать статистику использования ресурсов pods |
|
Вывести код завершения оболочки bash |
|
Вывести контрольную точку одного или нескольких запущенных контейнеров |
|
Вывести список команд или справку для одной команды |
Сценарии использования crictl состоят в применении команд, обозначенных в таблице и имеют следующий синтаксис:
crictl [global options] command [command options] [arguments...]
Например, команда crictl config --set debug=true устанавливает режим отладки при подаче последующих crictl команд.
Crictl по умолчанию подключается в Unix к unix:///var/run/dockershim.sock или unix:///run/containerd/containerd.sock или unix:///run/crio/crio.sock или unix:///var/run/cri-dockerd.sock
Конечная точка может быть установлена тремя способами:
установите глобальные флаги опций
--runtime-endpoint( -r)и--image-endpoint( -i);установите переменные окружения
CONTAINER_RUNTIME_ENDPOINT_IMAGE_SERVICE_ENDPOINT;установите конечную точку в файле конфигурации
--config=/etc/crictl.yaml.
Если конечная точка среды выполнения не установлена, crictl по умолчанию будет пытаться подключиться с помощью cri-o.
Если конечная точка образа не задана, по умолчанию будет использоваться конечная точка времени выполнения:
cat /etc/crictl.yaml
runtime-endpoint: unix:///var/run/dockershim.sock
image-endpoint: unix:///var/run/dockershim.sock
timeout: 2
debug: true
pull-image-on-create: false
Сценарий использования crictl#
Примечание
Указанные далее хеши не существуют и приведены в качестве примера.
Чтобы использовать crictl:
Загрузите crictl из репозитория, предоставленного разработчиком используя curl:
VERSION="v1.26.0" # check latest version in /releases page curl -L https://<example>/cri-tools/releases/download/$VERSION/crictl-${VERSION}-linux-amd64.tar.gz --output crictl-${VERSION}-linux-amd64.tar.gz sudo tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bin rm -f crictl-$VERSION-linux-amd64.tar.gzПримечание
Выберите архив соответствующий текущему типу процессора в среде развертывания, в приведенном примере указан архив соответствующий архитектуре процессоров AMD.
Запустите pod с конфигурационным файлом:
cat pod-config.json { "metadata": { "name": "nginx-sandbox", "namespace": "default", "attempt": 1, "uid": "<UID>" }, "log_directory": "/tmp", "linux": { } } crictl runp pod-config.json f00dd000dc00000ed000fbadd0db000b0000000c0d0d0c00ff000ce0c0a00fУбедитесь, что pods находится в состоянии
Ready:crictl pods POD ID CREATED STATE NAME NAMESPACE ATTEMPT f84dd361f8dc5 17 seconds ago Ready nginx-sandbox default 1Это команда
crictl, которая показывает список всех установленных pods (pods - это наборы программного обеспечения) в контейнере Docker. Командаcrictlиспользует опциюpods, чтобы получить список всех установленных наборов программного обеспечения в контейнере Docker.Опция
podsуказывает имя хоста и порт контейнера Docker, где были установлены pods. Командаcrictlвыводит список всех установленных pods в указанном контейнере.Например, если контейнер Docker запущен на хосте
hostnameи порте контейнераport, то командаcrictlвыведет следующий список установленных pods:default;
nginx-sandbox.
Запустите рабочую среду pod с обработчиком времени выполнения:
cat pod-config.json { "metadata": { "name": "nginx-runsc-sandbox", "namespace": "default", "attempt": 1, "uid": "<UID>" }, "log_directory": "/tmp", "linux": { } } crictl runp --runtime=runsc pod-config.json c000000cb0caa00a000000e0c00a0e0d0d0000d0000afef000f000000000000c crictl inspectp c000000cb0caa00a000000e0c00a0e0d0d0000d0000afef000f000000000000c ... "runtime": { "runtimeType": "io.containerd.runtime.v1.linux", "runtimeEngine": "/usr/local/sbin/runsc", "runtimeRoot": "/run/containerd/runsc" }, ...В приведенном примере показан запуск рабочей среды pod с
runscобработчиком.Извлеките образ
busybox:crictl pull busybox Image is up to date for busybox@sha256:000c000bc0c0fd0a000d00dc0f0bcf0fff000b0df000dea0f00000e0f00d00Перечислите образы и убедитесь, что выбранный образ
busyboxзагружен:crictl images IMAGE TAG IMAGE ID SIZE busybox latest 8c811b4aec35f 1.15MB k8s.gcr.io/pause 3.1 da86e6ba6ca19 742kBСоздайте контейнер с файлом конфигурации:
cat pod-config.json { "metadata": { "name": "nginx-sandbox", "namespace": "default", "attempt": 1, "uid": "<UID>" }, "log_directory": "/tmp", "linux": { } } cat container-config.json { "metadata": { "name": "busybox" }, "image":{ "image": "busybox" }, "command": [ "top" ], "log_path":"busybox.0.log", "linux": { } } crictl create f00dd000dc00000ed000fbadd0db000b0000000c0d0d0c00ff000ce0c0a00f container-config.json pod-config.json 0e000dd00a00d000c0f00001fbb0b0000c0000000e00fb00f000f0000a000d00Перечислите контейнеры и убедитесь, что созданный контейнер находится в статусе
Created:crictl ps -a CONTAINER ID IMAGE CREATED STATE NAME ATTEMPT 3e025dd50a72d busybox 32 seconds ago Created busybox 0Запустите стартовый контейнер:
crictl start 0e000dd00a00d000c0f00001fbb0b0000c0000000e00fb00f000f0000a000d00 0e000dd00a00d000c0f00001fbb0b0000c0000000e00fb00f000f0000a000d00Убедитесь, что контейнер находится в состоянии
Running:crictl ps CONTAINER ID IMAGE CREATED STATE NAME ATTEMPT 3e025dd50a72d busybox About a minute ago Running busybox 0Выполните команду в контейнере:
crictl exec -i -t 0e000dd00a00d000c0f00001fbb0b0000c0000000e00fb00f000f0000a000d00 ls bin dev etc home proc root sys tmp usr varСоздайте и запустите контейнер одной командой:
cat pod-config.json { "metadata": { "name": "nginx-sandbox", "namespace": "default", "attempt": 1, "uid": "<UID>" }, "log_directory": "/tmp", "linux": { } } cat container-config.json { "metadata": { "name": "busybox" }, "image":{ "image": "busybox" }, "command": [ "top" ], "log_path":"busybox.0.log", "linux": { } } crictl run container-config.json pod-config.json b00b0f00e000000eb00d00e00000eee0000000d000e00deac000000a0b0f0cf0Выведите список контейнеров и убедитесь, что busybox находится в состоянии
Running:crictl ps CONTAINER IMAGE CREATED STATE NAME ATTEMPT POD ID b25b4f26e3429 busybox:latest 14 seconds ago Running busybox 0 158d7a6665ff3Выше представлен вывод команды crictl ps, которая показывает информацию о контейнерах, запущенных на kubernetes. В данном случае, информация выводится о контейнере busybox, который запущен на основе образа busybox:latest.
В выводе указаны следующие поля:
CONTAINER: уникальный идентификатор контейнера, который может быть использован для управления им;
IMAGE: имя образа, из которого был запущен контейнер;
CREATED: время создания контейнера;
STATE: текущее состояние контейнера (Running - запущен);
NAME: имя контейнера;
ATTEMPT: количество попыток запуска контейнера;
POD ID: идентификатор Pod, в котором запущен контейнер.
Команда crictl используется для управления контейнерами на кластерах. Она позволяет выполнять различные операции, такие как запуск, остановка, удаление контейнеров, а также получать информацию о них.