配置 Defaults ConfigMap¶
config-defaults ConfigMap,也称为 Defaults ConfigMap,包含决定 Knative 如何设置资源默认值的设置。
此 ConfigMap 位于 knative-serving 命名空间中。
您可以通过运行以下命令来查看当前的 config-defaults ConfigMap:
kubectl get configmap -n knative-serving config-defaults -oyaml
示例 config-defaults ConfigMap¶
apiVersion: v1
kind: ConfigMap
metadata:
name: config-defaults
namespace: knative-serving
data:
revision-timeout-seconds: "300"
max-revision-timeout-seconds: "600"
revision-response-start-timeout-seconds: "300"
revision-idle-timeout-seconds: "0" # infinite
revision-cpu-request: "400m"
revision-memory-request: "100M"
revision-ephemeral-storage-request: "500M"
revision-cpu-limit: "1000m"
revision-memory-limit: "200M"
revision-ephemeral-storage-limit: "750M"
container-name-template: "user-container"
container-concurrency: "0"
container-concurrency-max-limit: "1000"
allow-container-concurrency-zero: "true"
enable-service-links: "false"
请参见下文了解每个属性的说明。
属性¶
Revision 超时秒数¶
Revision 超时值决定了当未指定每个请求的超时时间时,将用于 revision 的默认秒数。
- 全局键:
revision-timeout-seconds - 每个 revision spec 键:
timeoutSeconds - 可能的值: 整数
- 默认值:
"300"(5 分钟)
示例
apiVersion: v1
kind: ConfigMap
metadata:
name: config-defaults
namespace: knative-serving
data:
revision-timeout-seconds: "300"
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
spec:
timeoutSeconds: 300
containers:
- image: ghcr.io/knative/helloworld-go:latest
Revision 最大超时秒数¶
max-revision-timeout-seconds 值决定了可用于 revision-timeout-seconds 的最大秒数。此值必须大于或等于 revision-timeout-seconds。如果省略,则使用系统默认值 (600 秒)。
如果增加此值,应同时增加 activator 的 terminationGracePeriodSeconds,以防止正在进行的请求中断。
- 全局键:
max-revision-timeout-seconds - 每个 revision 注解键: N/A
- 可能的值: 整数
- 默认值:
"600"(10 分钟)
示例
apiVersion: v1
kind: ConfigMap
metadata:
name: config-defaults
namespace: knative-serving
data:
max-revision-timeout-seconds: "600"
Revision 响应开始超时秒数¶
Revision 响应开始超时值决定了请求路由层等待发送到容器的请求开始发送任何网络流量的最大秒数。如果省略,则使用系统默认值 (300 秒)。
- 全局键:
revision-response-start-timeout-seconds - 每个 revision spec 键:
responseStartTimeoutSeconds - 可能的值: 整数
- 默认值:
"300"(5 分钟)
示例
apiVersion: v1
kind: ConfigMap
metadata:
name: config-defaults
namespace: knative-serving
data:
revision-response-start-timeout-seconds: "300"
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
spec:
responseStartTimeoutSeconds: 300
containers:
- image: ghcr.io/knative/helloworld-go:latest
Revision 空闲超时秒数¶
Revision 空闲超时值决定了在未接收到用户应用程序的任何字节的情况下,请求允许保持打开的最大秒数。如果省略,则使用系统默认值 (无限)。
- 全局键:
revision-idle-timeout-seconds - 每个 revision spec 键:
idleTimeoutSeconds - 可能的值: 整数
- 默认值:
"0"(无限)
示例
apiVersion: v1
kind: ConfigMap
metadata:
name: config-defaults
namespace: knative-serving
data:
revision-idle-timeout-seconds: "0"
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
spec:
idleTimeoutSeconds: 0
containers:
- image: ghcr.io/knative/helloworld-go:latest
Revision CPU 请求¶
revision-cpu-request 值决定了默认分配给 revision 的 CPU。如果省略此值,则使用系统默认值。此键在 Knative 中默认不启用。
- 全局键:
revision-cpu-request - 每个 revision 注解键:
cpu - 可能的值: 整数
- 默认值:
"400m"(0.4 个 CPU,或 400 毫 CPU)
示例
apiVersion: v1
kind: ConfigMap
metadata:
name: config-defaults
namespace: knative-serving
data:
revision-cpu-request: "400m"
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
spec:
containers:
- image: ghcr.io/knative/helloworld-go:latest
resources:
requests:
cpu: "400m"
Revision 内存请求¶
revision-memory-request 值决定了默认分配给 revision 的内存。如果省略此值,则使用系统默认值。此键在 Knative 中默认不启用。
- 全局键:
revision-memory-request - 每个 revision 注解键:
memory - 可能的值: 整数
- 默认值:
"100M"(100 兆字节内存)
示例
apiVersion: v1
kind: ConfigMap
metadata:
name: config-defaults
namespace: knative-serving
data:
revision-memory-request: "100M"
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
spec:
containers:
- image: ghcr.io/knative/helloworld-go:latest
resources:
requests:
memory: "100M"
Revision Ephemeral Storage 请求¶
revision-ephemeral-storage-request 值决定了默认分配给 revision 的临时存储。如果省略此值,则使用系统默认值。此键在 Knative 中默认不启用。
- 全局键:
revision-ephemeral-storage-request - 每个 revision 注解键:
ephemeral-storage - 可能的值: 整数
- 默认值:
"500M"(500 兆字节存储)
示例
apiVersion: v1
kind: ConfigMap
metadata:
name: config-defaults
namespace: knative-serving
data:
revision-ephemeral-storage-request: "500M"
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
spec:
containers:
- image: ghcr.io/knative/helloworld-go:latest
resources:
requests:
ephemeral-storage: "500M"
Revision CPU 限制¶
revision-cpu-limit 值决定了 revision 的默认 CPU 分配限制。如果省略此值,则使用系统默认值。此键在 Knative 中默认不启用。
- 全局键:
revision-cpu-limit - 每个 revision 注解键:
cpu - 可能的值: 整数
- 默认值:
"1000m"(1 个 CPU,或 1000 毫 CPU)
示例
apiVersion: v1
kind: ConfigMap
metadata:
name: config-defaults
namespace: knative-serving
data:
revision-cpu-limit: "1000m"
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
spec:
containers:
- image: ghcr.io/knative/helloworld-go:latest
resources:
limits:
cpu: "1000m"
Revision 内存限制¶
revision-memory-limit 值决定了 revision 的默认内存分配限制。如果省略此值,则使用系统默认值。此键在 Knative 中默认不启用。
- 全局键:
revision-memory-limit - 每个 revision 注解键:
memory - 可能的值: 整数
- 默认值:
"200M"(200 兆字节内存)
示例
apiVersion: v1
kind: ConfigMap
metadata:
name: config-defaults
namespace: knative-serving
data:
revision-memory-limit: "200M"
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
spec:
containers:
- image: ghcr.io/knative/helloworld-go:latest
resources:
limits:
memory: "200M"
Revision Ephemeral Storage 限制¶
revision-ephemeral-storage-limit 值决定了为 revision 分配的默认临时存储限制。如果省略此值,则使用系统默认值。此键在 Knative 中默认不启用。
- 全局键:
revision-ephemeral-storage-limit - 每个 revision 注解键:
ephemeral-storage - 可能的值: 整数
- 默认值:
"750M"(750 兆字节存储)
示例
apiVersion: v1
kind: ConfigMap
metadata:
name: config-defaults
namespace: knative-serving
data:
revision-ephemeral-storage-limit: "750M"
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
spec:
containers:
- image: ghcr.io/knative/helloworld-go:latest
resources:
limits:
ephemeral-storage: "750M"
容器名称模板¶
container-name-template 值提供了一个模板,用于在未指定容器名称时设置默认容器名称。此字段支持 Go 模板,并由外部 Service 或 Configuration 的 ObjectMeta 提供,因此 {{.Name}} 等值也是有效的。
- 全局键:
container-name-template - 每个 revision 注解键:
name - 可能的值: string
- 默认值:
"user-container"
示例
apiVersion: v1
kind: ConfigMap
metadata:
name: config-defaults
namespace: knative-serving
data:
container-name-template: "user-container"
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
spec:
containers:
- name: user-container
image: ghcr.io/knative/helloworld-go:latest
容器并发数¶
container-concurrency 值指定了容器一次可以处理的最大请求数。超过此阈值的请求将被排队。设置为零值会禁用此节流,并允许通过任意数量的请求,只要 pod 能接收即可。
- 全局键:
container-concurrency - 按修订版规范键:
containerConcurrency - 可能的值: 整数
- 默认值:
"0"
示例
apiVersion: v1
kind: ConfigMap
metadata:
name: config-defaults
namespace: knative-serving
data:
container-concurrency: "0"
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
spec:
containerConcurrency: 0
容器并发数最大限制¶
container-concurrency-max-limit 设置禁用了单个 revision 的任意大并发值或自动缩放目标。container-concurrency 的默认设置必须等于或小于此值。container-concurrency-max-limit 设置的值必须大于 1。
注意
即使设置了此值,用户仍然可以选择将 containerConcurrency 值设置为零 (无限制),除非 allow-container-concurrency-zero 设置为 "false"。
- 全局键:
container-concurrency-max-limit - 每个 revision 注解键: N/A
- 可能的值: 整数
- 默认值:
"1000"
示例
apiVersion: v1
kind: ConfigMap
metadata:
name: config-defaults
namespace: knative-serving
data:
container-concurrency-max-limit: "1000"
apiVersion: operator.knative.dev/v1beta1
kind: KnativeServing
metadata:
name: knative-serving
namespace: knative-serving
spec:
config:
defaults:
container-concurrency-max-limit: "1000"
允许容器并发数为零¶
allow-container-concurrency-zero 值决定了用户是否可以为 containerConcurrency 指定 0 (无限制)。
- 全局键:
allow-container-concurrency-zero - 每个 revision 注解键: N/A
- 可能值: 布尔值
- 默认值:
"true"
示例
apiVersion: v1
kind: ConfigMap
metadata:
name: config-defaults
namespace: knative-serving
data:
allow-container-concurrency-zero: "true"
启用 Service 链接¶
enable-service-links 值指定了当用户省略 PodSpec 的 enableServiceLinks 字段时使用的默认值。请参阅 Kubernetes 文档中关于 enableServiceLinks 功能的说明。
这是一个三态标志,可能的值为 (true|false|default)。
在拥有大量 Service 的环境中,建议将此值设置为 false。请参阅 serving#8498。
- 全局键:
enable-service-links - 每个 revision 注解键: N/A
- 可能的值:
true|false|default - 默认值:
"false"
示例
apiVersion: v1
kind: ConfigMap
metadata:
name: config-defaults
namespace: knative-serving
data:
enable-service-links: "false"