跳至內容

設定部署資源

名為「部署 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

我們使用分析和 Cookie 來了解網站流量。為此目的,您使用我們網站的相關資訊會與 Google 分享。了解更多。