Kubernetes: изменение кода не появляется, есть ли способ синхронизации? - PullRequest
0 голосов
/ 04 января 2019

В Dockerfile Я упомянул объем как:

COPY src/ /var/www/html/ но почему-то мои изменения кода не выглядят так, как раньше, только в Docker. Если я не удаляю стручки, он не появляется. Как это синхронизировать?

Я использую миникуб.

webserver.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: webserver
  labels:
    app: apache
spec:
  replicas: 3
  selector:
    matchLabels:
      app: apache
  template:
    metadata:
      labels:
        app: apache
    spec:
      containers:
      - name: php-apache
        image: learningk8s_website
        imagePullPolicy: Never
        ports:
        - containerPort: 80

1 Ответ

0 голосов
/ 04 января 2019

Когда спецификация вашего контейнера говорит:

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.

...