You need to enable JavaScript to run this app.
文档中心
容器服务

容器服务

复制全文
下载 pdf
运维
容器 coredump 持久化
复制全文
下载 pdf
容器 coredump 持久化
VCI 支持获取进程的 coredump 文件,您可以使用 coredump 文件分析和定位容器异常问题。本文主要描述 VCI 容器 coredump 持久化方法。
背景信息
coredump 又叫核心转储,当程序运行过程中发生异常,程序异常退出时,由操作系统把程序当前的内存状况存储在一个 core 文件中,该步骤叫 coredump。在 VCI 容器异常终止情况下,如果业务日志中没有足够的信息来定位问题原因,则需要结合 coredump 文件来进一步分析和定位问题原因。本文将介绍如何使容器产生 coredump 文件并保存到外部存储。
功能介绍
VCI 实例默认关闭 coredump,避免磁盘占用过多而导致业务不可用。您可以在创建 VCI 实例时通过 Pod Annotation 开启 coredump。
Annotation Key
Annotation Value 示例值
说明
是否必填
vci.vke.volcengine.com/core-pattern
"/data/coredump/core.%h.%e.%p.%t"
设置 VCI 实例的 coredump 文件保存路径。配置路径后自动开启实例的 coredump 能力。
取值格式示例:/data/coredump/core.%h.%e.%p.%t。取值说明如下:
  • /data/coredump/:coredump 文件保存目录,请配置为您自己的目录。
  • core.%h.%e.%p.%t:coredump 文件名称。%h%e%p%t均表示占位符,可按需配置。占位符说明如下:
  • %h:VCI Pod 的名称(主机名),建议配置。
  • %e:程序文件名,建议配置。
  • %p:进程 ID,可选配置。
  • %t:coredump 的时间,可选配置。
注意
配置的路径不能以|开头,即不能通过 coredump 来配置可执行程序。
本场景必填
最终生成的 core 文件完整路径示例如下所示:
/data/coredump/core.nginx-7855fc5b44-p2rzt.bash.36.1602488967
前提条件
已创建 VCI 业务相关集群。详细操作,请参见 在 VPC-CNI 网络模型集群中使用 VCI在 Flannel 网络模型集群中使用 VCI
操作步骤
coredump 文件一般用于离线分析问题,因此设置 coredump 文件的保存路径时采用外挂存储,而不是内置存储(容器本地路径),从而避免容器退出而丢失 coredump 文件的问题。
下文以文件存储(NAS)作为外挂存储,创建 VCI Deployment 启用 coredump 能力为例,通过存储卷(PV)方式,将 NAS 挂载到 VCI Deployment。详细操作及 YAML 字段说明,请参见 使用 NAS 文件存储静态存储卷
  1. 连接 VPC-CNI 集群。
  1. 创建 NAS 类型的 PV。
  1. 创建 PV 的 YAML 文件。示例 YAML 文件vci-nas-pv.yaml代码如下:
  • apiVersion: v1
    kind: PersistentVolume
    metadata:
    name: vci-nas-pv # PV 名称。
    spec:
    accessModes:
    - ReadWriteMany
    capacity:
    storage: 100Gi # NAS 存储容量。
    csi:
    driver: nas.csi.volcengine.com
    volumeAttributes:
    fsId: enas-cnbj1b9f******** # NAS 文件系统 ID,仅当文件系统类型为极速型时需要配置。
    fsType: Extreme # 文件系统类型,Extreme:极速型;Cache:缓存型;Capacity:容量型。
    path: /enas-cnbj1b9f********/temp # NAS 文件系统挂载子目录。
    server: cnbj1b9f********.r*********.nas.ivolces.com # NAS 文件系统挂载点地址。
    volumeAs: subpath # 创建的子目录类型。subpath:子路径;filesystem:文件系统。
    volumeHandle: vci-nas-pv # PV 的唯一标识符,与 PV 名称保持一致。
    mountOptions:
    - nolock,proto=tcp,noresvport
    - vers=3
    persistentVolumeReclaimPolicy: Retain
    volumeMode: Filesystem
  1. 执行以下命令,创建 PV。
  • kubectl create -f vci-nas-pv.yaml
  1. 创建存储卷声明(PVC)。
  1. 创建 PVC 的 YAML 文件。示例 YAML 文件vci-nas-pvc.yaml代码如下:
  • apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
    name: vci-nas-pvc # PVC 名称。
    namespace: default
    spec:
    accessModes:
    - ReadWriteMany
    resources:
    requests:
    storage: 100Gi
    volumeMode: Filesystem
    volumeName: vci-nas-pv # 绑定到该 PVC 的 PV 名称。
  1. 执行以下命令,创建 PVC。
  • kubectl create -f vci-nas-pvc.yaml
  1. 创建 VCI 实例,配置 coredump 文件的保存路径,开启实例的 coredump。
  • 下文以创建 VCI Deployment 为例。创建 VCI 实例相关说明,请参见 创建实例
  1. 创建 VCI Deployment 的 YAML 文件。示例 YAML 文件vci-nas-coredump-deployment.yaml代码如下:
  • apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: vci-nas-coredump-deployment # Deployment 名称。
    namespace: default # Deployment 所属命名空间。
    labels:
    app: vci-nas-coredump-deployment
    spec:
    replicas: 2
    selector:
    matchLabels:
    app: vci-nas-coredump-deployment
    template:
    metadata:
    annotations:
    vke.volcengine.com/burst-to-vci: enforce #强制使用 VCI。
    vci.vke.volcengine.com/preferred-instance-family: vci.u1 #指定 VCI 的规格族。
    vci.vke.volcengine.com/core-pattern: "/data/coredump/core.%h.%e.%p.%t" #设置 coredump 文件保存路径。
    labels:
    app: vci-nas-coredump-deployment
    spec:
    containers:
    - image: cr-cn-beijing.volces.com/tw/nginx:1.0 # 容器镜像的地址和版本,请配置为您自己的镜像地址。
    imagePullPolicy: IfNotPresent
    name: nginx
    volumeMounts:
    - mountPath: /data/coredump/ # NAS 在容器中挂载的位置。本文中需与 coredump 文件保存路径保持一致。
    name: vci-nas-volume # 设置卷名称。
    volumes:
    - name: vci-nas-volume # 挂载卷。
    persistentVolumeClaim:
    claimName: vci-nas-pvc # 上一步创建的 PVC 名称。
  1. 执行以下命令,创建 Deployment。
  • kubectl create -f vci-nas-coredump-deployment.yaml
验证结果
您可以在已配置了coredump 文件保存目录的 VCI 实例中触发 coredump。
  1. 执行以下命令获取 VCI Deployment 下 Pod 的名称。
  • kubectl get pods -l app=vci-nas-coredump-deployment
  1. 执行以下命令登录 VCI Pod。
  • kubectl exec -it <已获取的 VCI Pod 名称>
  1. 在容器内执行sleep 100命令后按Ctrl + \键,触发 coredump。生成的 coredump 文件将自动保存到 NAS 中。
  • 预期返回结果如下:
  • alt
最近更新时间:2026.03.16 14:53:59
这个页面对您有帮助吗?
有用
有用
无用
无用