Сохранить файл в Kubernetes pod во время развертывания - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь добавить файл на диск модуля во время инициализации модуля, но безуспешно. Ниже мой файл развертывания, который я использую для развертывания модуля. Файл загружается на постоянный том, но модуль не переходит в состояние готовности. Через несколько секунд капсулы выходят из строя и перестраиваются. Что снова запускает весь процесс.

Любая помощь будет оценена.

apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: mapserver
spec:
  selector:
    matchLabels:
      app: mapserver
  template:
    metadata:
      labels:
        app: mapserver
    spec:
      volumes:
      - name: storage
        persistentVolumeClaim:
          claimName: mapserver-pv-claim
      containers:
      - name: maptiles
        image: klokantech/tileserver-gl
        command: ["/bin/sh"]
        args:
        - -c
        - |
           echo "[INFO] Startingcontainer"; if [ $(DOWNLOAD_MBTILES) = "true" ]; then
             echo "[INFO] Download MBTILES_PLANET_URL";
             rm /data/*
             cd /data/
             curl -k -sSL -X GET -u user:ww $(MBTILES_PLANET_URL) -O
             echo "[INFO] Download finished";
           fi;
         env:
         - name: MBTILES_PLANET_URL
           value: 'https://abc-dev/nexus/repository/xyz-raw/2017-07-03_europe_netherlands.mbtiles'
         - name: DOWNLOAD_MBTILES
           value: 'true'
        livenessProbe:
          failureThreshold: 120
          httpGet:
            path: /health
            port: 80
            scheme: HTTP
          initialDelaySeconds: 10
          periodSeconds: 30
          successThreshold: 1
          timeoutSeconds: 5
        ports:
        - containerPort: 80
          name: http
          protocol: TCP
        readinessProbe:
          failureThreshold: 120
          httpGet:
            path: /health
            port: 80
            scheme: HTTP
          initialDelaySeconds: 10
          periodSeconds: 30
          successThreshold: 1
          timeoutSeconds: 5
        resources:
          limits:
            cpu: 300m
            memory: 3Gi
          requests:
            cpu: 100m
            memory: 1Gi
        volumeMounts:
        - mountPath: "/data"
          name: storage

1 Ответ

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

я пытаюсь добавить файл на диск модуля во время инициализации модуля, но безуспешно.

В этом случае вы можете использовать InitContainers вместо.

Судя по вашему манифесту, ваша основная команда выполняется (копирует файл и затем завершается), завершая контейнер (и сопровождающий модуль) в процессе.Затем развертывание перезапускает вышедший модуль и повторяет цикл.Если вместо этого вы используете InitContainers (с тем же определением и тем же PV, что и сейчас для основного контейнера), вам следует предварительно заполнить данные, используя InitContaienrs, который выполняется до конца, а затем продолжить использовать его в вашем обычном контейнере (который должениметь неотключаемый основной процесс в качестве своей команды / точки входа).

Примечание: если вы не хотите использовать InitContainers или просто в качестве быстрого теста, вы можете добавить обычную несуществующую команду послеваше заявление о копировании, а также проверьте, нужно ли вам запускать контейнер с tty, в зависимости от вашего варианта использования и способов поддержания контейнера в рабочем состоянии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...