Kubelet Checkpoint API

СТАН ФУНКЦІОНАЛУ: Kubernetes v1.30 [beta]

Контрольна точка контейнера — це функціонал для створення копії контейнера зі станом запущеного контейнера. Після того, як у вас є копія контейнера з його станом, ви можете перенести його на інший компʼютер для налагодження або подібних цілей.

Якщо перемістити дані такої копії контейнера на компʼютер, здатний їх відновити, відновлений контейнер продовжить працювати точно з того самого місця, де він був зупинений. Також можна переглянути збережені дані, за умови, що є відповідні інструменти для цього.

Створення копії контейнера зі станом може мати наслідки для безпеки. Зазвичай така копія містить усі сторінки памʼяті всіх процесів у контейнері. Це означає, що все, що колись було в памʼяті, тепер доступне на локальному диску. Це включає всі приватні дані та можливі ключі, які використовувались для шифрування. Реалізації CRI повинні створювати архів копії зі збереженням стану таким чином, щоб до нього міг мати доступ лише користувач root. Важливо памʼятати, що якщо архів копії зі збереженням стану передається в іншу систему, усі сторінки памʼяті будуть доступні власнику архіву копії.

Операції

post створення копії зі збереженням стану вказаного контейнера

Дайте команду kubelet створити копію зі збереженням стану конкретного контейнера з вказаного Pod.

Для отримання додаткової інформації щодо керування доступом до інтерфейсу контролю kubelet дивіться довідку з автентифікації/авторизації kubelet.

Kubelet запитає контрольну точку у відповідного CRI. У запиті до контрольної точки kubelet вкаже імʼя архіву контрольної точки у вигляді checkpoint-<podFullName>-<containerName>-<timestamp>.tar, а також попросить зберігати архів контрольних точок у теці checkpoints в його кореневій теці (як визначено параметром --root-dir). Типово це буде /var/lib/kubelet/checkpoints.

Архів копії зі збереженням стану має формат tar і може бути переглянутий за допомогою реалізації tar. Вміст архіву залежить від реалізації CRI (інтерфейс запуску контейнерів на вузлі).

HTTP-запит

POST /checkpoint/{namespace}/{pod}/{container}

Параметри

  • namespace (в шляху): string, обовʼязково

    Namespace
  • pod (в шляху): string, обовʼязково

    Pod
  • container (в шляху): string, обовʼязково

    Контейнер
  • timeout (в запиті): integer

    Тайм-аут у секундах для очікування завершення створення копії зі збереженням стану. Якщо вказано нуль або тайм-аут не вказано, буде використане стандартне значення тайм-ауту для CRI. Час створення копії зі збереженням стану залежить безпосередньо від використаної памʼяті контейнера. Чим більше памʼяті використовує контейнер, тим більше часу потрібно для створення відповідної копії зі збереженням стану.

Відповідь

200: OK

401: Unauthorized

404: Not Found (якщо функціональні можливості ContainerCheckpoint відключено)

404: Not Found (якщо вказаний namespace, pod або container не може бути знайдено)

500: Internal Server Error (якщо реалізація CRI стикається з помилкою під час створення копії зі збереженням стану (див. повідомлення про помилку для деталей))

500: Internal Server Error (якщо реалізація CRI не реалізує API створення контейнера (див. повідомлення про помилку для деталей))

Змінено August 10, 2024 at 8:09 PM PST: Local links were prefixed with "uk" (7d9a96f799)