为什么Kubernetes Pod显示“Back-off重启失败的容器”

3

我想构建一个故障排除容器,以下是我的Docker构建文件:

FROM alpine:3.11

MAINTAINER jiangxiaoqiang (jiangtingqiang@gmail.com)

ENV LANG=en_US.UTF-8 \
    LC_ALL=en_US.UTF-8 \
    TZ=Asia/Shanghai


RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
    && echo $TZ > /etc/timezone \
    && apk add --no-cache curl jq \
    nmap \
    bind-tools \
    busybox-extras \
    bash


CMD ["/bin/bash","-l"]

但是当我在Kubernetes集群中启动它时,它显示:Back-off restarting failed container,并且始终重新启动。这么简单的Docker容器,为什么会给我这个提示?以下是描述输出:
[root@k8smaster ~]# kubectl describe pod ts-7d754488b9-jqqh9
Name:         ts-7d754488b9-jqqh9
Namespace:    default
Priority:     0
Node:         k8sslave2/192.168.31.31
Start Time:   Wed, 02 Sep 2020 12:28:48 -0400
Labels:       k8s-app=ts
              pod-template-hash=7d754488b9
Annotations:  cni.projectcalico.org/podIP: 10.11.125.135/32
Status:       Running
IP:           10.11.125.135
IPs:
  IP:           10.11.125.135
Controlled By:  ReplicaSet/ts-7d754488b9
Containers:
  ts:
    Container ID:   docker://0c810ed8f8ec1cde6c0249edde59fc28a169d5730e87c423403f802cd12df6dd
    Image:          registry.cn-shanghai.aliyuncs.com/jiangxiaoqiang/dolphin/k8s-ts:v0.0.1
    Image ID:       docker-pullable://registry.cn-shanghai.aliyuncs.com/jiangxiaoqiang/dolphin/k8s-ts@sha256:68edaed45c1fadee71abbe7bdaad23f2400f352f1b6309142689a197367f3ae9
    Port:           <none>
    Host Port:      <none>
    State:          Waiting
      Reason:       CrashLoopBackOff
    Last State:     Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Wed, 02 Sep 2020 12:30:13 -0400
      Finished:     Wed, 02 Sep 2020 12:30:13 -0400
    Ready:          False
    Restart Count:  4
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-79w95 (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             False 
  ContainersReady   False 
  PodScheduled      True 
Volumes:
  default-token-79w95:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-79w95
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type     Reason     Age                  From                Message
  ----     ------     ----                 ----                -------
  Normal   Scheduled  <unknown>            default-scheduler   Successfully assigned default/ts-7d754488b9-jqqh9 to k8sslave2
  Normal   Created    96s (x4 over 2m17s)  kubelet, k8sslave2  Created container ts
  Normal   Started    95s (x4 over 2m16s)  kubelet, k8sslave2  Started container ts
  Warning  BackOff    69s (x7 over 2m15s)  kubelet, k8sslave2  Back-off restarting failed container
  Normal   Pulling    54s (x5 over 2m17s)  kubelet, k8sslave2  Pulling image "registry.cn-shanghai.aliyuncs.com/jiangxiaoqiang/dolphin/k8s-ts:v0.0.1"
  Normal   Pulled     54s (x5 over 2m17s)  kubelet, k8sslave2  Successfully pulled image "registry.cn-shanghai.aliyuncs.com/jiangxiaoqiang/dolphin/k8s-ts:v0.0.1"
1个回答

5
容器完成表示它已经完成了执行任务。如果您希望容器在特定时间内运行,则可以将例如 sleep 3600 传递为参数,或者可以在部署文件中使用 restartPolicy: Never。类似这样的东西。
spec:
  containers:
  - image: alpine
    command:
      - /bin/sh
      - "-c"
      - "sleep 60m"
    imagePullPolicy: Always
    restartPolicy: Never
    name: alpine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接