Заміна середовища виконання контейнерів на вузлі з Docker Engine на containerd
Це завдання визначає кроки, необхідні для оновлення вашого середовища виконання контейнерів на containerd з Docker. Воно буде корисним для операторів кластерів, які працюють з Kubernetes 1.23 або старішими версіями. Воно також охоплює приклад сценарію міграції з dockershim на containerd. З цієї сторінки можна вибрати альтернативні середовища виконання контейнерів.
Перш ніж ви розпочнете
Встановіть containerd. Для отримання додаткової інформації дивіться документацію з встановлення containerd і для конкретних передумов виконуйте кроки описані в посібнику containerd.
Виведення вузла з експлуатації
kubectl drain <node-to-drain> --ignore-daemonsets
Замініть <node-to-drain>
на імʼя вузла, який ви збираєтеся виводити з експлуатації.
Зупиніть службу Docker
systemctl stop kubelet
systemctl disable docker.service --now
Встановлення Containerd
Дотримуйтесь настанов посібника для отримання детальних кроків з встановлення containerd.
Встановіть пакунок
containerd.io
з офіційних репозиторіїв Docker. Інструкції щодо налаштування репозиторію Docker для вашого конкретного дистрибутиву Linux і встановлення пакункаcontainerd.io
можна знайти у Починаючи з containerd.Налаштуйте containerd:
sudo mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml
Перезапустіть containerd:
sudo systemctl restart containerd
Розпочніть сеанс PowerShell, встановіть значення $Version
на бажану версію (наприклад, $Version="1.4.3"
), а потім виконайте наступні команди:
Завантажте containerd:
curl.exe -L https://github.com/containerd/containerd/releases/download/v$Version/containerd-$Version-windows-amd64.tar.gz -o containerd-windows-amd64.tar.gz tar.exe xvf .\containerd-windows-amd64.tar.gz
Розпакуйте та налаштуйте:
Copy-Item -Path ".\bin\" -Destination "$Env:ProgramFiles\containerd" -Recurse -Force cd $Env:ProgramFiles\containerd\ .\containerd.exe config default | Out-File config.toml -Encoding ascii # Перегляньте конфігурацію. Залежно від налаштувань можливо, ви захочете внести корективи: # - образ sandbox_image (образ pause Kubernetes) # - розташування cni bin_dir та conf_dir Get-Content config.toml # (Необовʼязково, але дуже рекомендується) Виключіть containerd зі сканування Windows Defender Add-MpPreference -ExclusionProcess "$Env:ProgramFiles\containerd\containerd.exe"
Запустіть containerd:
.\containerd.exe --register-service Start-Service containerd
Налаштування kubelet для використання containerd як його середовища виконання контейнерів
Відредагуйте файл /var/lib/kubelet/kubeadm-flags.env
та додайте середовище виконання контейнерів до прапорців; --container-runtime-endpoint=unix:///run/containerd/containerd.sock
.
Користувачі, які використовують kubeadm, повинні знати, що інструмент kubeadm
зберігає сокет CRI для кожного хосту як анотацію в обʼєкті Node для цього хосту. Щоб змінити його, ви можете виконати наступну команду на машині, на якій є файл kubeadm
/etc/kubernetes/admin.conf
.
kubectl edit no <імʼя-вузла>
Це запустить текстовий редактор, де ви можете редагувати обʼєкт Node. Для вибору текстового редактора ви можете встановити змінну середовища KUBE_EDITOR
.
Змініть значення
kubeadm.alpha.kubernetes.io/cri-socket
з/var/run/dockershim.sock
на шлях сокета CRI за вашим вибором (наприклад,unix:///run/containerd/containerd.sock
).Зауважте, що нові шляхи сокета CRI в ідеалі повині мати префікс
unix://
.Збережіть зміни в текстовому редакторі, що оновить обʼєкт Node.
Перезапустіть kubelet
systemctl start kubelet
Перевірте, що вузол справний
Запустіть kubectl get nodes -o wide
, і containerd зʼявиться як середовище виконання для вузла, який ми щойно змінили.
Видаліть Docker Engine
Якщо вузол виглядає справним, видаліть Docker.
sudo yum remove docker-ce docker-ce-cli
sudo apt-get purge docker-ce docker-ce-cli
sudo dnf remove docker-ce docker-ce-cli
sudo apt-get purge docker-ce docker-ce-cli
Попередні команди не видаляють образи, контейнери, томи або налаштовані файли конфігурації на вашому хості. Щоб їх видалити, слідуйте інструкціям Docker щодо Видалення Docker Engine.
Увага:
Інструкції Docker щодо видалення Docker Engine створюють ризик видалення containerd. Будьте обережні при виконанні команд.Введення вузла в експлуатацію
kubectl uncordon <node-to-uncordon>
Замініть <node-to-uncordon>
на імʼя вузла, який ви раніше вивели з експлуатації.
Елементи на цій сторінці відносяться до сторонніх продуктів чи проєктів, які надають функціонал, необхідний для Kubernetes. Автори проєкту Kubernetes не несуть відповідальності за ці проєкти. Ознайомтесь з настановами на вебсайті CNCF для отримання докладної інформації.
Ознайомтесь з посібником з контенту перед тим, як пропонувати додавання посилання на стороні компоненти.