【问题标题】:Creating a java file with docker image and creating a kubernetes cluster resulted in pod CrashLoopBackOff使用 docker 镜像创建 java 文件并创建 kubernetes 集群导致 pod CrashLoopBackOff
【发布时间】:2021-10-28 22:05:51
【问题描述】:

我正在尝试从 java 创建一个简单的 printsomething() 并将其加载到 docker 容器中以创建一个 k8s 集群以进行概念验证。

在 docker 上,我可以运行映像(如下所示),但是,当我在 k8s 上创建集群时,我收到错误 CrashLoopBackOff。但是,日志文件似乎显示了图像中预期的标准输出。 我可能对这里的方法和执行它的正确方法感到困惑,有人可以建议和指导吗?这应该是预期的吗? 提前非常感谢。

$ kubectl logs cimage-deployment-679d474cb7-fgj2c -p
printing from java

docker 按预期运行:

  $ docker run dockhub/cimage
    printing from java
    $ 

**//describe deployment:**  
    $ kubectl describe deployment cimage-deployment
Name:                   cimage-deployment
Namespace:              default
CreationTimestamp:      Mon, 30 Aug 2021 11:24:45 +0800
Labels:                 <none>
Annotations:            deployment.kubernetes.io/revision: 1
Selector:               deploy=cimage
Replicas:               3 desired | 3 updated | 3 total | 0 available | 3 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
Labels:  deploy=cimage
Containers:
cimage:
Image:        dockhub/cimage
Port:         <none>
Host Port:    <none>
Environment:  <none>
Mounts:       <none>
Volumes:        <none>
Conditions:
          Type           Status  Reason
          ----           ------  ------
          Available      False   MinimumReplicasUnavailable
          Progressing    False   ProgressDeadlineExceeded
        OldReplicaSets:  <none>
        NewReplicaSet:   cimage-deployment-679d474cb7 (3/3 replicas created)
        Events:          <none>

//描述吊舱

    $ kubectl describe pod cimage
Name:         cimage-deployment-679d474cb7-fgj2c  
Namespace:    default  
Priority:     0
Node:         minikube/192.168.49.2
Start Time:   Mon, 30 Aug 2021 11:24:45 +0800
Labels:       deploy=cimage
pod-template-hash=679d474cb7  
Annotations:  <none>
Status:       Running
IP:           172.17.0.5
IPs:
IP:           172.17.0.5
Controlled By:  ReplicaSet/cimage-deployment-679d474cb7  
Containers:  
cimage:
Container ID:   docker://8891073c9e28c0b795c3c3b81f01d6c0fdd45785b102c458a28f58be3bfdbeed  
Image:          dockhub/cimage
Image ID:       docker-pullable://dockhub/cimage@sha256:fcbbb160653681a06bceac0f7144a472326adb53c7f2335a32d188a854340456  
Port:           <none>
Host Port:      <none>
State:          Waiting
Reason:       CrashLoopBackOff
Last State:     Terminated
Reason:       Completed
Exit Code:    0
Started:      Mon, 30 Aug 2021 12:58:59 +0800
Finished:     Mon, 30 Aug 2021 12:58:59 +0800
Ready:          False
Restart Count:  23
Environment:    <none>
Mounts:
  /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-vpjc8 (ro)
Conditions:
Type              Status
Initialized       True 
Ready             False
ContainersReady   False 
PodScheduled      True
Volumes:  
  kube-api-access-vpjc8:  
Type: Projected (a volume that contains injected data from multiple sources)  
TokenExpirationSeconds:  3607
ConfigMapName:           kube-root-ca.crt
ConfigMapOptional:       <nil>
DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type     Reason   Age                    From               Message
----     ------   ----                   ----               -------
Warning  BackOff  3m15s (x435 over 98m)  kubelet, minikube  Back-off restarting failed container

添加获取事件

    $ kubectl get events
LAST SEEN   TYPE      REASON              OBJECT                                    MESSAGE
59m         Normal    Pulling             pod/cimage-deployment-679d474cb7-fgj2c    Pulling image "dockhub/cimage"
4m34s       Warning   BackOff             pod/cimage-deployment-679d474cb7-fgj2c    Back-off restarting failed container
4m29s       Warning   BackOff             pod/cimage-deployment-679d474cb7-gbrfn    Back-off restarting failed container
4m31s       Warning   BackOff             pod/cimage-deployment-679d474cb7-vhwfx    Back-off restarting failed container
7m32s       Normal    Scheduled           pod/cimage-deployment-84dd6f49ff-4wrjc    Successfully assigned default/cimage-deployment-84dd6f49ff-4wrjc to minikube
5m57s       Normal    Pulling             pod/cimage-deployment-84dd6f49ff-4wrjc    Pulling image "dockhub/cimage"
7m27s       Normal    Pulled              pod/cimage-deployment-84dd6f49ff-4wrjc    Successfully pulled image "dockhub/cimage" in 3.779122485s
5m54s       Normal    Created             pod/cimage-deployment-84dd6f49ff-4wrjc    Created container cimage
7m23s       Normal    Pulled              pod/cimage-deployment-84dd6f49ff-4wrjc    Successfully pulled image "dockhub/cimage" in 3.116714272s
7m8s        Normal    Pulled              pod/cimage-deployment-84dd6f49ff-4wrjc    Successfully pulled image "dockhub/cimage" in 3.458218385s
2m29s       Warning   BackOff             pod/cimage-deployment-84dd6f49ff-4wrjc    Back-off restarting failed container
6m39s       Normal    Pulled              pod/cimage-deployment-84dd6f49ff-4wrjc    Successfully pulled image "dockhub/cimage" in 3.577472371s
5m54s       Normal    Pulled              pod/cimage-deployment-84dd6f49ff-4wrjc    Successfully pulled image "dockhub/cimage" in 3.41519015s
7m32s       Normal    SuccessfulCreate    replicaset/cimage-deployment-84dd6f49ff   Created pod: cimage-deployment-84dd6f49ff-4wrjc
7m32s       Normal    ScalingReplicaSet   deployment/cimage-deployment              Scaled up replica set cimage-deployment-84dd6f49ff to 1

//跟进 Anisha 的解决方案,出现这种情况, 嘿 Ashish,我认为我的后续问题与原始主题无关,但我可以检查一下为什么会发生这种行为吗?吊舱不会不断重启吗?我找不到在“x”尝试后说停止的参数

$ kubectl get pod
NAME                                 READY   STATUS    RESTARTS   AGE
jimage-deployment-5cd99c7bf4-2x9vr   1/1     Running   0          68s
jimage-deployment-5cd99c7bf4-vfpsm   1/1     Running   0          68s
jimage-deployment-5cd99c7bf4-wxdxf   1/1     Running   0          68s

$ kubectl get pod
NAME                                 READY   STATUS    RESTARTS   AGE
jimage-deployment-5cd99c7bf4-2x9vr   1/1     Running   2          7m48s
jimage-deployment-5cd99c7bf4-vfpsm   1/1     Running   2          7m48s
jimage-deployment-5cd99c7bf4-wxdxf   1/1     Running   2          7m48s

$ kubectl get pod
NAME                                 READY   STATUS    RESTARTS   AGE
jimage-deployment-5cd99c7bf4-2x9vr   1/1     Running   5          20m
jimage-deployment-5cd99c7bf4-vfpsm   0/1     CrashLoopBackOff   5          20m
jimage-deployment-5cd99c7bf4-wxdxf   1/1     Running   5          20m


$ kubectl get pod
NAME                                 READY   STATUS             RESTARTS   AGE
jimage-deployment-5cd99c7bf4-2x9vr   0/1     CrashLoopBackOff   31         4h19m
jimage-deployment-5cd99c7bf4-vfpsm   0/1     CrashLoopBackOff   31         4h19m
jimage-deployment-5cd99c7bf4-wxdxf   0/1     CrashLoopBackOff   33         4h19m

【问题讨论】:

    标签: java docker kubernetes dockerfile


    【解决方案1】:

    您的主进程是正在运行的应用程序还是执行和完成的程序?特别是因为您说您只是想打印一些文本。任何容器中的主进程都需要是一个正在运行的进程,否则如果主进程结束或退出,那么 docker 会认为容器理解为应用程序失败并重新启动它,因此它可以进入一次又一次重启的循环。

    您可以使用在端口上运行的应用程序:

    这里有一个例子: https://spring.io/guides/gs/spring-boot-docker/

    【讨论】:

    • 谢谢,这是有道理的。你能建议我一些方法来尽可能简化地进行概念验证吗?不使用网络/前端
    • 我能说的最简单的事情是添加一段时间的睡眠,比如半小时,然后应用程序将打印您想要的任何内容,并继续等待并保持程序运行 30 分钟
    • 谢谢阿什!简洁明了的答复和建议。请问您是否认为 while(true) 无限循环会起作用?虽然这似乎是一个设计缺陷,因为没有标准输入将很难退出循环。
    • Hey Anhish,我已将代码编辑为您提出的解决方案,但是我相信我无法找到 CrashLoopBackOff 的预定义设置。这是故障仍在发生但速度较慢的唯一原因吗?
    • 据我所知没有设置,crashloopback 是否还在发生?如果是,那么除了不断运行的应用程序问题之外,可能还有其他问题。您的应用程序是否将任何内容打印到标准输出?您可以使用 kubectl logs . 检查是否收到任何日志
    猜你喜欢
    • 2018-12-03
    • 1970-01-01
    • 2020-05-04
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 2019-11-26
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多