我有一个使用 k3s 运行的本地 Kubernetes 集群,我想访问已停止的 Pod 的文件系统。该 Pod 源自 CronJob,我想进一步调查该作业失败的原因。
对于“常规” Kubernetes 设置,我会尝试通过docker
cli 访问文件系统。但是,使用 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
。更多信息这里。