全部產品
Search
文件中心

Container Compute Service:重啟Agent Sandbox容器

更新時間:Jun 06, 2026

本文介紹如何通過 ContainerRecreateRequest(CRR)對運行狀態的 Agent Sandbox Pod 中指定容器執行重啟操作,無需刪除或重建 Pod。

背景資訊

在Agent Sandbox應用的日常營運中,需要對運行中的容器執行重啟操作,常見情境包括:

  • 應用出現異常,需要快速恢複服務。

  • 記憶體流失等問題需要定期重啟緩解。

  • 不希望重建整個 Pod,僅需重啟特定容器。

Kubernetes 原生並未提供對運行中 Pod 內單個容器的重啟能力,通常只能通過刪除 Pod 或滾動重啟 Deployment 來間接實現,代價較大。ACS Agent Sandbox 支援通過 ContainerRecreateRequest CRD(Custom Resource Definition,自訂資源定義)對 Pod 中的指定容器執行精準重啟。

適用範圍

  • 在叢集組件管理頁面,確認以下組件版本:

    • ack-agent-sandbox-controller:已升級至最新版。

    • acs-virtual-node:版本 >= v2.18.0。

    • ack-kruise:版本 >= 1.8.4。

  • 使用限制

    約束項

    說明

    Pod 狀態

    Pod 必須處於 Running 狀態,非 Running 狀態不支援操作。

    操作粒度

    支援對指定 Pod 內單個或多個容器進行重啟。

    Init 容器

    不支援對 Init 容器執行重啟操作。

操作步驟

重啟容器時,容器內的資料保留情況取決於具體的執行個體類型

展開查看不同執行個體類型的資料保留情況

資料類型

Agent Sandbox型

通用型/性能型

容器讀寫層

保留

需啟用ops.alibabacloud.com/pause-enabled: "true"註解。

不保留

emptyDir 卷

保留

保留

持久化資料卷(PV/PVC)

保留

保留

步驟一:建立Agent Sandbox

您可基於Sandbox Set預熱池來分配(SandboxClaim)沙箱執行個體,也可基於Agent Sandbox執行個體類型自行建立沙箱執行個體。

SandboxClaim方式

通過此方式建立的Sandbox預設啟用ops.alibabacloud.com/pause-enabled: "true"註解,無需額外配置。具體操作,請參考SandboxClaim方式

自行建立

使用Agent Sandbox算力,並配置ops.alibabacloud.com/pause-enabled: "true"註解來建立沙箱。

  1. 將以下內容儲存為sandbox.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: code-interpreter
      namespace: default
      labels:
        app: code-interpreter
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: code-interpreter
      template:
        metadata:
          labels:
            app: code-interpreter
            alibabacloud.com/acs: "true"
            alibabacloud.com/compute-class: agent-sandbox  # Agent Sandbox 執行個體類型 
            alibabacloud.com/compute-qos: default          # 算力品質 default/best-effort
          annotations:
            ops.alibabacloud.com/pause-enabled: "true"     # 啟用讀寫層資料保留
        spec:
          automountServiceAccountToken: false
          terminationGracePeriodSeconds: 30
          containers:
          - name: sandbox
            image: registry-cn-zhangjiakou-vpc.ack.aliyuncs.com/acs/code-interpreter:v1.6 # 替換成實際叢集所在的地區
            imagePullPolicy: IfNotPresent
            resources:
              limits:
                cpu: "1"
                memory: 1Gi
              requests:
                cpu: "1"
                memory: 1Gi
                ephemeral-storage: 30Gi
  2. 建立資源。

    kubectl apply -f sandbox.yaml
  3. 確認目標應用Pod狀態為Running

    kubectl get pod | grep code-interpreter

步驟二:建立 ContainerRecreateRequest

ContainerRecreateRequest(CRR)是 ACS 為 Agent Sandbox 提供的容器重啟 CRD,用於描述對指定 Pod 內的容器執行重建(重啟)操作。更多進階配置,請參見 Container Restart

  1. 將以下內容儲存為crr.yaml

    CRR 資源的命名空間必須與目標 Pod 一致,否則操作無法生效。
    apiVersion: apps.kruise.io/v1alpha1
    kind: ContainerRecreateRequest
    metadata:
      namespace: <YOUR-NAMESPACE>    # 目標 Pod 所在的命名空間
      name: <YOUR-CRR-NAME>          # CRR 資源名稱
    spec:
      podName: <YOUR-POD-NAME>       # 目標 Pod 名稱
      containers:                    # 需要重啟的容器名稱列表,至少提供一個容器名稱
      - name: <CONTAINER-NAME-1>     # 容器名稱1
      - name: <CONTAINER-NAME-2>     # 容器名稱2

    關鍵字段說明:

    • metadata.namespace:目標 Pod 所在的命名空間。

    • spec.podName:需要重啟容器所在的 Pod 名稱。

    • spec.containers[].name:需要重啟的容器名稱,支援指定多個容器。

  2. 建立 CRR 資源。

    kubectl apply -f crr.yaml

步驟三:觀察重啟狀態

提交 CRR 後,可通過以下命令查看容器重啟狀態:

kubectl get containerrecreaterequest <YOUR-CRR-NAME> -n <YOUR-NAMESPACE> -o yaml

status.phaseCompletedcontainerRecreateStates中對應容器的phaseSucceeded時,表示容器已成功重啟。樣本如下:

apiVersion: apps.kruise.io/v1alpha1
kind: ContainerRecreateRequest
metadata:
  ...
status:
  completionTime: '2026-05-27T08:04:35Z'
  containerRecreateStates:
    - name: main
      phase: Succeeded
  phase: Completed

狀態欄位說明:

  • status.phase:CRR 整體狀態。Completed表示重啟流程已結束。

  • containerRecreateStates[].phase:單個容器的重啟結果。Succeeded表示對應容器重啟成功。