Міграція вузлів Docker Engine з dockershim на cri-dockerd
Ця сторінка показує вам, як перевести ваші вузли з Docker Engine на використання cri-dockerd
замість dockershim. Ви повинні дотримуватися цих кроків у таких сценаріях:
- Ви хочете перейти від dockershim і все ще використовувати Docker Engine для запуску контейнерів у Kubernetes.
- Ви хочете оновити до Kubernetes v1.31 і ваш наявний кластер покладається на dockershim, у такому випадку вам необхідно перейти з dockershim, де
cri-dockerd
є одним з варіантів.
Щоб дізнатися більше про видалення dockershim, прочитайте сторінку ЧаПи.
Що таке cri-dockerd?
У Kubernetes 1.23 та раніше ви могли використовувати Docker Engine з Kubernetes, покладаючись на вбудований компонент Kubernetes, що називався dockershim. Компонент dockershim було вилучено у випуску Kubernetes 1.24; проте доступний сторонній замінник, cri-dockerd
. Адаптер cri-dockerd
дозволяє використовувати Docker Engine через інтерфейс середовища виконання контейнерів.
Примітка:
Якщо ви вже використовуєтеcri-dockerd
, вас не торкнеться видалення dockershim. Перш ніж почати, перевірте, чи використовує ваші вузли dockershim.Якщо ви хочете мігрувати на cri-dockerd
, щоб продовжувати використовувати Docker Engine як своє середовище виконання контейнерів, вам слід виконати наступне для кожного вузла:
- Встановіть
cri-dockerd
. - Відключіть та вимкніть вузол.
- Налаштуйте kubelet для використання
cri-dockerd
. - Перезапустіть kubelet.
- Перевірте, що вузол справний.
Спочатку протестуйте міграцію на не критичних вузлах.
Ви повинні виконати наступні кроки для кожного вузла, який ви хочете перевести на cri-dockerd
.
Перш ніж ви розпочнете
cri-dockerd
встановлений і запущений на кожному вузлі.- Мережевий втулок.
Відключіть та вимкніть вузол
Відключіть вузол, щоб зупинити нові запуски капсул на ньому:
kubectl cordon <NODE_NAME>
Замініть
<NODE_NAME>
на імʼя вузла.Вимкніть вузол, щоб безпечно виселити працюючі Podʼи:
kubectl drain <NODE_NAME> \ --ignore-daemonsets
Налаштуйте kubelet для використання cri-dockerd
Ці кроки застосовуються до кластерів, створених за допомогою інструменту kubeadm. Якщо ви використовуєте інший інструмент, вам слід модифікувати kubelet, використовуючи інструкції з налаштування для цього інструменту.
- Відкрийте
/var/lib/kubelet/kubeadm-flags.env
на кожному ураженому вузлі. - Змініть прапорець
--container-runtime-endpoint
наunix:///var/run/cri-dockerd.sock
. - Змініть прапорець
--container-runtime
наremote
(недоступно в Kubernetes v1.27 та пізніше).
Інструмент kubeadm зберігає сокет вузла як анотацію обʼєкта Node
в панелі управління. Щоб змінити цей сокет для кожного ураженого вузла:
Відредагуйте YAML-представлення обʼєкта
Node
:KUBECONFIG=/шлях/до/admin.conf kubectl edit no <NODE_NAME>
Замініть наступне:
/шлях/до/admin.conf
: шлях до файлу конфігурації kubectl,admin.conf
.<NODE_NAME>
: імʼя вузла, яке ви хочете змінити.
Змініть
kubeadm.alpha.kubernetes.io/cri-socket
з/var/run/dockershim.sock
наunix:///var/run/cri-dockerd.sock
.Збережіть зміни. Обʼєкт
Node
оновлюється при збереженні.
Перезапустіть kubelet
systemctl restart kubelet
Перевірте, що вузол справний
Щоб перевірити, чи використовує вузол точку доступу cri-dockerd
, слідувати інструкціям Дізнайтеся, яке середовище виконання контейнерів використовується. Прапорець --container-runtime-endpoint
для kubelet повинен бути unix:///var/run/cri-dockerd.sock
.
Введення вузла в експлуатацію
Введіть вузол в експлуатацію, щоб Podʼи могли запускатися на ньому:
kubectl uncordon <NODE_NAME>
Що далі
Елементи на цій сторінці відносяться до сторонніх продуктів чи проєктів, які надають функціонал, необхідний для Kubernetes. Автори проєкту Kubernetes не несуть відповідальності за ці проєкти. Ознайомтесь з настановами на вебсайті CNCF для отримання докладної інформації.
Ознайомтесь з посібником з контенту перед тим, як пропонувати додавання посилання на стороні компоненти.