如何访问 k3s 上已停止的容器的文件系统?

如何访问 k3s 上已停止的容器的文件系统?

我有一个使用 k3s 运行的本地 Kubernetes 集群,我想访问已停止的 Pod 的文件系统。该 Pod 源自 CronJob,我想进一步调查该作业失败的原因。

对于“常规” Kubernetes 设置,我会尝试通过dockercli 访问文件系统。但是,使用 k3s 时,docker ps机器上会返回一个空列表。据我所知,k3s 使用 containerd,但我不知道如何检查“containerd”容器。我的 Google-fu 错过了我。:/

答案1

我不确定你为什么要进入文件系统来检查Job失败的原因。

当你创建时job它会自动创建pod。示例基于官方文档

$ sudo k3s kubectl apply -f https://k8s.io/examples/controllers/job.yaml
job.batch/pi created

与此同时,它创建了 pod(与此同时我创建了别名kk="sudo k3s kubectl"

$ kk get pods
NAME                     READY   STATUS      RESTARTS   AGE
pi-796ng                 0/1     Completed   0          55s

$ kk get jobs
NAME      COMPLETIONS   DURATION   AGE
pi        1/1           7s         30s

1.要检查 Pod 内部发生了什么,你可以使用以下方法

$ sudo k3s kubectl logs <pod_name> -c <container_name>

$ kk logs pi-796ng -c pi
3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647...

2.描述 pod/描述作业

$ sudo k3s kubectl describe pod <pod_name>

$ sudo k3s kubectl describe job <job_name>

如果它们不同,namespace那么default您需要添加-n <namespace>标志来查询

3.Kubernetes 事件

执行命令

$ sudo k3s kubectl get events

它将显示来自您的Kubernetes集群的所有事件。

许多故障排除因素可能还取决于您的Job规格。例如.spec.activeDeadlineSeconds.spec.backoffLimit。更多信息这里

相关内容