Повторно прикрепите заявку на обновление тома - PullRequest
0 голосов
/ 17 октября 2018

Я использую постоянное требование тома для хранения данных в контейнере:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: test-pvc
  labels:
    type: amazonEBS
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi

Объявление в спецификации:

spec:
  volumes:
  - name: test-data-vol
    persistentVolumeClaim:
      claimName: test-pvc
  containers:
  - name: test
    image: my.docker.registry/test:1.0
    volumeMounts:
    - mountPath: /var/data
      name: test-data-vol

При первом запуске этот том был правильно подключен,Но когда я попытался обновить образ контейнера:

-    image: my.docker.registry/test:1.0
+    image: my.docker.registry/test:1.1

Этот том не удалось подключить к новому модулю:

# kubectl get pods
test-7655b79cb6-cgn5r       0/1     ContainerCreating   0          3m
test-bf6498559-42vvb        1/1     Running             0          11m

# kubectl describe test-7655b79cb6-cgn5r
Events:
  Type     Reason                 Age   From                                                  Message
  ----     ------                 ----  ----                                                  -------
  Normal   Scheduled              3m5s  default-scheduler                                     Successfully assigned test-7655b79cb6-cgn5r to ip-*-*-*-*.us-west-2.compute.internal
  Warning  FailedAttachVolume     3m5s  attachdetach-controller                               Multi-Attach error for volume "pvc-2312eb4c-c270-11e8-8d4e-065333a7774e" Volume is already exclusively attached to one node and can't be attached to another
  Normal   SuccessfulMountVolume  3m4s  kubelet, ip-*-*-*-*.us-west-2.compute.internal  MountVolume.SetUp succeeded for volume "default-token-x82km"
  Warning  FailedMount            62s   kubelet, ip-*-*-*-*.us-west-2.compute.internal  Unable to mount volumes for pod "test-7655b79cb6-cgn5r(fab0862c-d1cf-11e8-8d4e-065333a7774e)": timeout expired waiting for volumes to attach/mount for pod "test-7655b79cb6-cgn5r". list of unattached/unmounted volumes=[test-data-vol]

Кажется, что Kubernetes не может повторно присоединить этот том из одногоконтейнер в другой.Как правильно с этим справиться?Мне нужно, чтобы эти данные на томе использовались новой версией развертывания при остановке старой версии.

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Проблема заключается в том, что тома EBS имеют значение ReadWriteOnce и могут быть подключены только к одному модулю, поэтому при обновлении по очереди старый модуль содержит том.Чтобы это работало, вы должны либо использовать StatefulSet, либо использовать любой из типов ReadWriteMany PV.

A Kubernetes Deployment иногда лучше использовать для модулей без состояния.

Вы всегда можете использовать метод грубой силы, который принудительно удаляет модуль, который удерживает объем.Убедитесь, что для Reclaim Policy установлено значение Retain.

0 голосов
/ 17 октября 2018

Не уверен, RollingUpdate может решить проблему.Поскольку «Rolling Update» - это безопасный способ обновления изображений контейнеров, в соответствии с docs .Я предполагаю, что K8s также может обрабатывать PV / PVC.

...