Когда спецификация вашего контейнера говорит:
image: learningk8s_website
imagePullPolicy: Never
Во второй раз, когда вы kubectl apply
это сделаете, Kubernetes определит, что он точно такой же, как у спецификации развертывания, которая у вас уже есть, и ничего не делает. Даже если он сгенерировал новые Pod, сервер, скорее всего, заметит, что у него уже есть изображение learningk8s_website:latest
и он не получит новый; действительно, вы явно говорите Kubernetes не делать этого.
Обычной практикой здесь является включение в имя изображения некоторого уникального идентификатора, такого как отметка даты или хэш коммита.
IMAGE=$REGISTRY/name/learningk8s_website:$(git rev-parse --short HEAD)
docker build -t "$IMAGE" .
docker push "$IMAGE"
Затем необходимо внести соответствующие изменения в спецификацию развертывания и kubectl apply
. Это заставит Kubernetes заметить, что в спецификации модуля есть некоторые изменения, создать новые модули с новым изображением и уничтожить старые модули (в этом порядке). Вы можете найти шаблонизатор, такой как Helm , который будет полезен, чтобы упростить внедрение этого значения в YAML.