0

我正在尝试使用 KNative 部署带有容器和 initContainer 的服务。
如果这很重要,我安装 Istio 时没有注入 sidecar。
这是我得到的错误:

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

谢谢!

4

2 回答 2

3

Knative 服务 API规范中没有初始化容器,这让我相信它不受支持。

于 2020-01-15T08:52:50.430 回答
1

为了给 Arghya 的答案增添一点色彩,Knative 现在故意排除 init 容器,因为它们会在冷启动期间引起大量(无限制)的额外延迟。此外,Knative 的目标之一是简化大部分 Kubernetes API,因此像 init 容器这样也可以作为用户容器的启动部分实现的解决方案被阻止了。

此处限制的一个原因是,添加到 API 比从 API 中删除要容易得多,因此最初的 API 是最小的,可以看出哪些约束是非常繁重的。

于 2020-01-18T04:57:25.893 回答