k8s core dump实操

950 阅读1分钟

宿主机操作系统层面设置

  1. 设置ulimit开启core dump转存

# ulimit -c
unlimited

设置对core文件大小的限制,如:

# ulimit -c unlimited 不限制
# ulimit -c 1024      限制大小为1024
# ulimit -c 0         限制大小为0,即不输出core dump文件
  1. 设置core dump文件的输出路径

# 其中%p为pid
echo "/tmp/cores/core.%p" > /proc/sys/kernel/core_pattern

在kubernetes中测试生成core dump

  1. 使用hostPath​的pod测试模板

apiVersion: v1
kind: Pod
metadata:
  name: core-volume
spec:
  volumes:
  - name: core-path
    hostPath:
      path: /home/core-dump
  containers:
  - name: ubuntu
    image: ubuntu
    command: ["/bin/sleep","3600"]
    volumeMounts:
    - mountPath: /tmp/cores
      name: core-path

上述配置在容器中生成的core dump路径为/tmp/cores/core.XXX

对应hostPath在宿主机上的路径为/home/core-dump/core.XXX

  1. 使用挂载pv的deployment测试模板

    先手动定义一个测试pvc

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  annotations:
    pv.kubernetes.io/bind-completed: "yes"
    pv.kubernetes.io/bound-by-controller: "yes"
    volume.beta.kubernetes.io/storage-provisioner: com.tencent.cloud.csi.cbs
    volume.kubernetes.io/storage-provisioner: com.tencent.cloud.csi.cbs
  name: cbs01
  namespace: default
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: cbs
  volumeMode: Filesystem
  volumeName: pvc-2aa85d4a-e28f-40e8-821a-a8161cb689de

  再定义一个deployment挂载这个pvc

apiVersion: apps/v1
kind: Deployment
metadata:
  name: core
  namespace: default
spec:
  template:
    metadata:
      labels:
        k8s-app: core
        qcloud-app: core
    spec:
      containers:
      - command: ["/bin/sleep","3600"]
        image: ubuntu
        imagePullPolicy: Always
        name: core
        volumeMounts:
        - mountPath: /tmp/cores
          name: vol
      restartPolicy: Always
      volumes:
      - name: vol
        persistentVolumeClaim:
          claimName: cbs01
  1. 测试生成core dump

    # 进入pod
    kubectl exec -it core-volume -- bash

    # 执行kill
    kill -s SIGSEGV $$
  •   对于使用hostPath绑目录的,在宿主机上/home/core-dump/可以找到core dump文件

  •   对于使用pv的方法,利用其他容器再次挂载也可以看到core dump在pv里

同理只要CSI支持能挂载到目录的存储都是一样可以用的,cfs,对象存储都可以。

参考:www.cnblogs.com/zhangmingch…