【问题标题】:CrashLoopBackOff : Back-off restarting failed containerCrashLoopBackOff : 后退重启失败的容器
【发布时间】:2022-01-15 22:28:38
【问题描述】:

我正在尝试调试我的 pod 引发 CrashLoopBackOff 错误。当我运行 decribe 命令时,我发现 Back-off restarting failed container 是错误。我为失败的 pod 执行了日志,并得到了以下数据。

vagrant@master:~> kubectl logs pod_name
standard_init_linux.go:228: exec user process caused: exec format error

vagrant@master:/vagrant> kubectl logs -p  pod_name
unable to retrieve container logs for containerd://db0f2dbd549676d8bf1026e5757ff45847c62152049b36037263f81915e948eavagrant

为什么我无法执行日志命令?

更多细节:

yaml文件如下

apiVersion: v1
kind: Service
metadata:
  labels:
    service: udaconnect-app
  name: udaconnect-app
spec:
  ports:
  - name: "3000"
    port: 3000
    targetPort: 3000
    nodePort: 30000
  selector:
    service: udaconnect-app
  type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    service: udaconnect-app
  name: udaconnect-app
spec:
  replicas: 1
  selector:
    matchLabels:
      service: udaconnect-app
  template:
    metadata:
      labels:
        service: udaconnect-app
    spec:
      containers:
      - image: udacity/nd064-udaconnect-app:latest
        name: udaconnect-app
        imagePullPolicy: Always
        resources:
          requests:
            memory: "128Mi"
            cpu: "64m"
          limits:
            memory: "256Mi"
            cpu: "256m"
      restartPolicy: Always

我的流浪档案

default_box = "opensuse/Leap-15.2.x86_64" 
Vagrant.configure("2") do |config|
config.vm.define "master" do |master|
    master.vm.box = default_box
    master.vm.hostname = "master"
    master.vm.network 'private_network', ip: "192.168.0.200",  virtualbox__intnet: true
    master.vm.network "forwarded_port", guest: 22, host: 2222, id: "ssh", disabled: true
    master.vm.network "forwarded_port", guest: 22, host: 2000 # Master Node SSH
    master.vm.network "forwarded_port", guest: 6443, host: 6443 # API Access
    for p in 30000..30100 # expose NodePort IP's
      master.vm.network "forwarded_port", guest: p, host: p, protocol: "tcp"
      end
    master.vm.provider "virtualbox" do |v|
      v.memory = "3072"
      v.name = "master"
      end
    master.vm.provision "shell", inline: <<-SHELL
      sudo zypper refresh
      sudo zypper --non-interactive install bzip2
      sudo zypper --non-interactive install etcd
      sudo zypper --non-interactive install apparmor-parser
      curl -sfL https://get.k3s.io | sh -
    SHELL
  end

  config.vm.provider "virtualbox" do |vb|
  vb.memory = "4096"
      vb.cpus = 4
end

感谢任何帮助。

【问题讨论】:

  • Kubernetes 运行的机器架构是什么?尝试在 ARM64 设备上运行为 AMD64 构建的容器时会发生类似错误。
  • 用不同的方式重复上一条评论所说的,我认为你能够执行日志命令,并且“exec用户进程导致:exec格式错误”是日志中的内容。
  • 这种错误主要是由于图像拱门和主机拱门不同(不匹配)。尝试运行docker inspect &lt;image&gt;,你的镜像是amd64 arch,很可能你的host或者vagrant arch不是amd64。
  • 我已经添加了我的 vagrant 文件供您参考。那么这是否意味着,我应该更换我的盒子?
  • @DavidM.Karr 是的...

标签: kubernetes containers vagrant devops kubernetes-pod


【解决方案1】:

总结 cmets:CrashLoopBackOff 错误发生在 AMD64 和 ARM64 设备不匹配时。根据你的docker镜像udacity/nd064-udaconnect-app,我们可以看到它是AMD64 arch,而你的盒子opensuse/Leap-15.2.x86_64ARM64 arch

因此,您必须更改 docker 映像或框才能解决此问题。

【讨论】:

  • 你好@arunprakashpj。是answer你的问题吗?
猜你喜欢
  • 2020-05-21
  • 2019-10-30
  • 2021-01-13
  • 1970-01-01
  • 2020-03-05
  • 2018-05-15
  • 2021-11-21
  • 2019-06-23
  • 2020-10-02
相关资源
最近更新 更多