Обновление драйвера Kubernetes CSI
Мы разрабатываем драйвер CSI для k8s. В настоящее время для обновления драйвера мы удаляем установленные модули операторов, компакт-диски и роли и воссоздаем их из образов новой версии. Какой способ обновления предлагается? Или рекомендуется удалить / установить? Я не смог найти подходящей информации
У нас также есть поддержка установки из OpenShift. Есть ли разница в обновлении с OpenShift?
2 ответа
Вам следует начать с этой документации:
Эта страница описывает разработчикам драйверов CSI, как развернуть их драйвер в кластере Kubernetes.
Особенно:
Развертывание драйвера CSI в Kubernetes подробно описано в разделе Рекомендуемый механизм развертывания драйверов CSI в Kubernetes.
Также вы найдете там всю необходимую информацию с примером.
В вашем вопросе отсутствуют некоторые подробности относительно вашего варианта использования, но я настоятельно рекомендую начать с руководства, которое я вам представил.
Пожалуйста, дайте мне знать, если это поможет.
Драйверы CSI могут различаться, но я считаю, что лучший подход - выполнить последовательное обновление DaemonSet вашего плагина. Это произойдет автоматически, как только вы примените новую конфигурацию DaemonSet, например, новый образ докера. Для получения дополнительной информации см. https://kubernetes.io/docs/tasks/manage-daemon/update-daemon-set/.
Например:
kubectl get -n YOUR-NAMESPACE daemonset YOUR-DAEMONSET --export -o yaml > plugin.yaml
vi plugin.yaml # Update your image tag(s)
kubectl apply -n YOUR-NAMESPACE -f plugin.yaml
Короткий способ обновить только изображение:
kubectl set image ds/YOUR-DAEMONSET-NAME YOUR-CONTAINER-NAME=YOUR-IMAGE-URL:YOUR-TAG -n YOUR-NAMESPACE
Примечание. Я обнаружил, что мне также необходимо перезапустить (убить) модуль с помощью внешнего инициатора. Возможно, есть более элегантный способ справиться с этим, но он работает в крайнем случае.
kubectl delete pod -n YOUR-NAMESPACE YOUR-EXTERNAL-PROVISIONER-POD