Как сделать так, чтобы модуль Kubernetes знал о новых изменениях файлов?

#docker #kubernetes #volume #kubernetes-pod #persistent-volumes

#docker #kubernetes #объем #kubernetes-pod #постоянные тома

Вопрос:

Есть ли способ сделать модули Kubernetes осведомленными о новых изменениях файлов?

Допустим, у меня есть модуль Kubernetes (K8), запущенный с 4 созданными репликами, также у меня есть K8 PV, созданный и подключенный к внешней файловой системе, где мы можем изменять файлы. Давайте рассмотрим, что модуль K8 запускает сервер tomcat с именем приложения test_app, который находится в следующем каталоге внутри контейнера tomcat / webapps / test_app / Внутри каталога test_app, у меня есть несколько подкаталогов, как показано ниже test_app /xml test_app / properties test_app / jsp

Все эти подкаталоги присоединены к тому, и он подключается к внешней файловой системе. Любой, у кого есть доступ к внешней файловой системе, будет обновлять файлы xml / properties / jsp. Когда эти файлы изменяются во внешней файловой системе, это отражается в подкаталогах test_app / xml, test_app / properties, test_app / jsp, а также у нас есть прикрепленный PV. Но эти изменения не будут отражены в веб-приложении, если мы не перезапустим сервер tomcat. Чтобы перезапустить сервер tomcat, нам нужно перезапустить модуль.

Итак, всякий раз, когда кто-то вносит какие-либо изменения в файлы, существующие во внешней файловой системе, как мне сообщить K8 о том, что есть некоторые новые изменения, которые требуют перезапуска модулей? возможно ли это вообще в Kubernetes прямо сейчас?

Комментарии:

1. Не могли бы вы быть более конкретными? Вы хотите внести изменения в модули, изменив некоторые переменные, изображение и т. Д., Или вы спрашиваете, нужно ли вам что-нибудь делать, если вы что-то измените в своем PV? В большинстве случаев изменения модуля требуют перезапуска, но если вы добавите новый файл в PV, модуль должен сразу увидеть этот файл. Или, может быть, вашему модулю нужно что-то сделать с этим новым файлом?

2. @PjoterS Я отредактировал свой вопрос с более подробной информацией

Ответ №1:

Если вы имеете в виду изменения файлов, что означает изменения в вашем приложении, лучше всего использовать образ контейнера с кодом вашего приложения и вставлять новый образ контейнера, когда вам нужно развернуть новый код. Вы можете сделать это, изменив развертывание Kubernetes, чтобы указать на последний хэш дайджеста.

Например, в файле развертывания YAML:

image: myimage@sha256:digest0

становится

image: myimage@sha256:digest1

и тогда kubectl apply был бы один из способов сделать это.

Подробнее об использовании изображений контейнеров в Kubernetes можно прочитать здесь.