設定部署資源¶
名為「部署 ConfigMap」的 config-deployment
ConfigMap 包含決定如何設定支援 Knative 服務的 Kubernetes Deployment
資源的設定。此 ConfigMap 位於 knative-serving
命名空間中。
您可以執行下列命令來檢視目前的 config-deployment
ConfigMap
kubectl get configmap -n knative-serving config-deployment -oyaml
config-deployment
ConfigMap 範例¶
apiVersion: v1
kind: ConfigMap
metadata:
name: config-deployment
namespace: knative-serving
labels:
serving.knative.dev/release: devel
annotations:
knative.dev/example-checksum: "fa67b403"
data:
# This is the Go import path for the binary that is containerized
# and substituted here.
queue-sidecar-image: ko://knative.dev.org.tw/serving/cmd/queue
# List of repositories for which tag to digest resolving should be skipped
registries-skipping-tag-resolving: "kind.local,ko.local,dev.local"
# digest-resolution-timeout is the maximum time allowed for an image's
# digests to be resolved.
digest-resolution-timeout: "10s"
# progress-deadline is the duration we wait for the deployment to
# be ready before considering it failed.
progress-deadline: "600s"
# queue-sidecar-cpu-request is the requests.cpu to set for the queue proxy sidecar container.
# If omitted, a default value (currently "25m"), is used.
queue-sidecar-cpu-request: "25m"
# queue-sidecar-cpu-limit is the limits.cpu to set for the queue proxy sidecar container.
# If omitted, no value is specified and the system default is used.
queue-sidecar-cpu-limit: "1000m"
# queue-sidecar-memory-request is the requests.memory to set for the queue proxy container.
# If omitted, no value is specified and the system default is used.
queue-sidecar-memory-request: "400Mi"
# queue-sidecar-memory-limit is the limits.memory to set for the queue proxy container.
# If omitted, no value is specified and the system default is used.
queue-sidecar-memory-limit: "800Mi"
# queue-sidecar-ephemeral-storage-request is the requests.ephemeral-storage to
# set for the queue proxy sidecar container.
# If omitted, no value is specified and the system default is used.
queue-sidecar-ephemeral-storage-request: "512Mi"
# queue-sidecar-ephemeral-storage-limit is the limits.ephemeral-storage to set
# for the queue proxy sidecar container.
# If omitted, no value is specified and the system default is used.
queue-sidecar-ephemeral-storage-limit: "1024Mi"
設定進度期限¶
設定進度期限設定可讓您指定在系統回報部署在 Knative 修訂版本進度失敗之前,您要等待部署進度的最長時間(以秒或分鐘為單位)。
預設的進度期限為 600 秒。此值表示為 Golang time.Duration
字串表示法,且必須四捨五入至秒的精確度。
如果無法在此設定定義的時間限制內達成初始縮放,Knative 自動縮放器元件會將修訂版本縮放為 0,且 Knative 服務會進入終端 Failed
狀態。
如果您的 Knative 部署中發生下列任何問題,您可能會想要將此設定設定為較高的值
- 由於映像大小的關係,提取服務映像需要很長的時間。
- 由於初始快取狀態的預先填入,服務變成
READY
需要很長的時間。 - 叢集依賴叢集自動縮放來為新的 Pod 分配資源。
如需詳細資訊,請參閱Kubernetes 文件。
進度期限設定可以透過 ConfigMap 在全域層級設定,也可以使用註釋在每個修訂版本層級設定。
- 全域金鑰:
progress-deadline
- 每個修訂版本的註釋金鑰:
serving.knative.dev/progress-deadline
- 可能的值:
time.Duration
- 預設值:
"600s"
範例
apiVersion: v1
kind: ConfigMap
metadata:
name: config-deployment
namespace: knative-serving
labels:
serving.knative.dev/release: devel
annotations:
knative.dev/example-checksum: "fa67b403"
data:
progress-deadline: "10m"
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
spec:
template:
metadata:
annotations:
serving.knative.dev/progress-deadline: "60s"
spec:
containers:
- image: ghcr.io/knative/helloworld-go:latest
略過標籤解析¶
您可以修改 registries-skipping-tag-resolving
ConfigMap 設定,將 Knative Serving 設定為略過部署的標籤解析。
下列範例示範如何停用 registry.example.com
的標籤解析
apiVersion: v1
kind: ConfigMap
metadata:
name: config-deployment
namespace: knative-serving
labels:
serving.knative.dev/release: devel
annotations:
knative.dev/example-checksum: "fa67b403"
data:
# List of repositories for which tag to digest resolving should be skipped
registries-skipping-tag-resolving: registry.example.com
設定可選取的 RuntimeClassName¶
您可以修改 runtime-class-name
設定,將 Knative Serving 設定為以指定的 RuntimeClassName (Pod.Spec.RuntimeClassName
) 設定部署。
此設定與服務標籤搭配使用,將設定預設值或最符合標籤的位置。
範例
apiVersion: v1
kind: ConfigMap
metadata:
name: config-deployment
namespace: knative-serving
data:
runtime-class-name: |
kata: {}
gvisor:
selector:
my-label: selector
apiVersion: operator.knative.dev/v1beta1
kind: KnativeServing
metadata:
name: knative-serving
namespace: knative-serving
spec:
config:
deployment:
runtime-class-name: |
kata: {}
gvisor:
selector:
my-label: selector
如需詳細資訊,請參閱Kubernetes RuntimeClass 文件。
另外,還有一個功能旗標可允許手動設定 RuntimeClassName。