Заміна середовища виконання контейнерів на вузлі з 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 хоста в файлі /var/lib/kubelet/instance-config.yaml на кожному вузлі. Ви можете створити цей файл /var/lib/kubelet/instance-config.yaml на вузлі.
Файл /var/lib/kubelet/instance-config.yaml дозволяє налаштувати параметр containerRuntimeEndpoint.
Ви можете встановити значення цього параметра на шлях до вибраного вами сокета CRI (наприклад, unix:///run/containerd/containerd.sock).
Перезапустіть 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 для отримання докладної інформації.
Ознайомтесь з посібником з контенту перед тим, як пропонувати додавання посилання на стороні компоненти.