Разве обслуживание KNative не позволяет поле initContainers? - PullRequest
0 голосов
/ 15 января 2020

Я пытаюсь развернуть сервис с контейнером и initContainer, используя KNative.
Я установил Istio без внедрения коляски, если это имеет значение.
Это ошибка, которую я получаю:

Internal error occurred: admission webhook "webhook.serving.knative.dev" denied the request: validation failed: must not set the field(s): spec.template.spec.initContainers
volumes not mounted: [some_script]: spec.template.spec.containers[0].volumeMounts

Мой YAML-файл:

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: my-service
spec:
  template:
    spec:
      containers:
      - image: image
        imagePullPolicy: IfNotPresent
        name: my-container
        ports:
        - containerPort: 1234
        volumeMounts:
        - mountPath: ........
          name: .....
          .......
      initContainers:
      - args:
        - -c
        - /some_dir/some_script.sh
        command:
        - /bin/sh
        image: alpine
        imagePullPolicy: IfNotPresent
        name: my-init-container
        volumeMounts:
        - mountPath: /some_dir
          name: some_dir
        - mountPath: /some_dir/some_script.sh
          name: some_script
          subPath: some_script.sh
      - configMap:
          defaultMode: 511
          name: some_script.sh
        name: some_script

Спасибо!

Ответы [ 2 ]

2 голосов
/ 15 января 2020

Инициативные контейнеры отсутствуют в обслуживающем API Knative spe c, что заставляет меня поверить, что оно не поддерживается.

1 голос
/ 18 января 2020

Чтобы добавить немного цвета к ответу Аргьи, Knative намеренно исключает контейнеры инициализации прямо сейчас, потому что они могут вызывать большое (неограниченное) количество дополнительных задержек при холодном запуске. Кроме того, одна из целей Knative состояла в том, чтобы упростить большую часть API Kubernetes, поэтому такие решения, как init-контейнеры, которые также могут быть реализованы как части запуска пользовательского контейнера, были заблокированы. заключается в том, что гораздо проще добавить API позже, чем удалить его, поэтому первоначальный API был минимальным, чтобы увидеть, какие ограничения были существенно обременительными.

...