KNative 服务是否不允许 initContainers 字段?
Does KNative serving not allow initContainers field?
我正在尝试使用 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
谢谢!
Knative 服务中没有 Init 容器 API spec 这让我相信它不受支持。
为了给 Arghya 的回答增添一点色彩,Knative 现在特意排除了 init 容器,因为它们会在冷启动期间引起大量(无限制的)额外延迟。此外,Knative 的目标之一是简化大部分 Kubernetes API,因此像 init 容器这样的解决方案也可以作为用户容器的启动部分被实现。
这里限制的一个原因是添加到 API 比从中删除要容易得多,所以最初的 API 是最小的,看看哪些限制是非常繁重的。
我正在尝试使用 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
谢谢!
Knative 服务中没有 Init 容器 API spec 这让我相信它不受支持。
为了给 Arghya 的回答增添一点色彩,Knative 现在特意排除了 init 容器,因为它们会在冷启动期间引起大量(无限制的)额外延迟。此外,Knative 的目标之一是简化大部分 Kubernetes API,因此像 init 容器这样的解决方案也可以作为用户容器的启动部分被实现。
这里限制的一个原因是添加到 API 比从中删除要容易得多,所以最初的 API 是最小的,看看哪些限制是非常繁重的。