Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的kubernetes吊舱不断地撞击着;“快速回退”;但我可以';我找不到任何日志_Kubernetes - Fatal编程技术网

我的kubernetes吊舱不断地撞击着;“快速回退”;但我可以';我找不到任何日志

我的kubernetes吊舱不断地撞击着;“快速回退”;但我可以';我找不到任何日志,kubernetes,Kubernetes,这是我一直得到的: [root@centos-master ~]# kubectl get pods NAME READY STATUS RESTARTS AGE nfs-server-h6nw8 1/1 Running 0 1h nfs-web-07rxz 0/1 CrashLoopBackOff 8 16m nfs-web-fdr

这是我一直得到的:

[root@centos-master ~]# kubectl get pods
NAME               READY     STATUS             RESTARTS   AGE
nfs-server-h6nw8   1/1       Running            0          1h
nfs-web-07rxz      0/1       CrashLoopBackOff   8          16m
nfs-web-fdr9h      0/1       CrashLoopBackOff   8          16m
下面是“描述吊舱”的输出

我有两个pod:nfs-web-07rxz、nfs-web-fdr9h,但是如果我使用“kubectl logs nfs-web-07rxz”或“-p”选项,我在两个pod中都看不到任何日志

[root@centos-master ~]# kubectl logs nfs-web-07rxz -p
[root@centos-master ~]# kubectl logs nfs-web-07rxz
这是我的replicationController yaml文件:

我的Docker图像由以下简单Docker文件生成:

FROM ubuntu
RUN apt-get update
RUN apt-get install -y nginx
RUN apt-get install -y nfs-common
我正在CentOs-1611上运行kubernetes群集,kube版本:

[root@centos-master ~]# kubectl version
Client Version: version.Info{Major:"1", Minor:"3", GitVersion:"v1.3.0", GitCommit:"86dc49aa137175378ac7fba7751c3d3e7f18e5fc", GitTreeState:"clean", BuildDate:"2016-12-15T16:57:18Z", GoVersion:"go1.6.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"3", GitVersion:"v1.3.0", GitCommit:"86dc49aa137175378ac7fba7751c3d3e7f18e5fc", GitTreeState:"clean", BuildDate:"2016-12-15T16:57:18Z", GoVersion:"go1.6.3", Compiler:"gc", Platform:"linux/amd64"}
如果我通过“docker run”运行docker映像,我就能够运行映像而没有任何问题,只有通过kubernetes我才得到崩溃


有人能帮助我吗?我如何在没有看到任何日志的情况下进行调试?

正如@Sukumar评论的那样,您需要让Dockerfile运行,或者让ReplicationController指定一个命令


吊舱正在崩溃,因为它启动后立即退出,因此Kubernetes重新启动,循环继续

我需要让一个pod在后续的kubectl exec调用中保持运行,正如上面的评论所指出的,我的pod被我的k8s集群杀死了,因为它已经完成了所有的任务。我通过简单地用一个不会自动停止的命令踢豆荚使豆荚保持运行,如:

kubectl run YOUR_POD_NAME -n YOUR_NAMESPACE --image SOME_PUBLIC_IMAGE:latest --command tailf /dev/null
kubectl-n描述pod
kubectl-n测井曲线-p
从中,容器在正确运行所有命令后死亡,但由于所有命令都已结束而崩溃。要么让服务在前台运行,要么创建一个保持活动的脚本。通过这样做,Kubernetes将显示您的应用程序正在运行。我们必须注意,在
Docker
环境中,不会遇到此问题。只有Kubernetes想要一款跑步应用程序

更新(示例):

以下是如何在启动Netshot容器时避免崩溃回退:

kubectl run netshoot --image nicolaka/netshoot -- sleep infinity

如果您有一个引导速度较慢的应用程序,那么它可能与就绪性/活跃性探测的初始值有关。我通过将
initialDelaySeconds
的值增加到120秒解决了我的问题,因为我的
SpringBoot
应用程序处理大量初始化。文档没有提到默认的0()

下面给出了关于这些值的一个很好的解释

运行状况或就绪检查算法的工作原理如下:

  • 等待
    initialDelaySeconds
  • 执行检查并等待超时时间
    timeoutSeconds
    如果连续成功次数大于
    successThreshold
    返回成功
  • 如果持续故障的数量大于
    failuresreshold
    返回故障,否则等待
    periodSeconds
    并开始新的检查

  • 在我的例子中,我的应用程序现在可以以一种非常清晰的方式引导,这样我就知道我不会周期性地崩溃,因为有时它会在这些速率的限制上

    在我的案例中,问题是Steve S.提到的:

    吊舱正在崩溃,因为它启动后立即退出,因此Kubernetes重新启动,循环继续

    也就是说,我有一个Java应用程序,它的
    main
    抛出了一个异常(并且有东西覆盖了默认的未捕获异常处理程序,因此没有记录任何内容)。解决方案是将
    main
    的主体放入
    try{…}catch
    并打印出异常。这样我就可以找出问题所在并加以解决


    (另一个原因可能是应用程序调用
    系统。退出
    ;您可以使用自定义的
    安全管理器
    和覆盖的
    检查退出
    ,以防止(或记录)退出的调用方;请参阅。)

    在对同一问题进行故障排除时,我在使用
    kubeclt日志
    时未发现日志。 因此,我将ssh:ed引入到节点实例中,尝试使用普通docker运行容器。令我惊讶的是,这也失败了

    当进入集装箱时,应:

    docker exec -it faulty:latest /bin/sh
    
    我四处看看,发现它不是最新版本

    实例上已存在docker映像的错误版本

    当我删除错误的:最新实例时:

    docker rmi faulty:latest
    

    一切都开始工作了。

    我的吊舱一直在崩溃,我找不到原因。幸运的是
    (#列出按时间戳排序的事件)

    要查看这些事件,请运行命令:

    kubectl get events --sort-by=.metadata.creationTimestamp
    
    如果需要,请确保在命令中添加一个
    --namespace mynamespace
    参数


    命令输出中显示的事件显示了我的pod不断崩溃的原因

    我解决了这个问题,增加了内存资源

      resources:
              limits:
                cpu: 1
                memory: 1Gi
              requests:
                cpu: 100m
            memory: 250Mi 
    

    在yaml文件中,添加命令行和参数行:

    ...
    containers:
          - name: api
            image: localhost:5000/image-name 
            command: [ "sleep" ]
            args: [ "infinity" ]
    ...
    

    对我有效。

    我也有同样的问题,现在我终于解决了。我没有使用docker编写文件。 我刚刚在Docker文件中添加了这一行,它成功了

    ENV CI=true
    
    参考:
    尝试重新运行pod并运行

     kubectl get pods --watch
    
    在pod运行过程中观察pod的状态


    在我的例子中,我只能看到最终结果“CrashLoopBackOff”,但docker容器在本地运行良好。因此,我使用上述命令查看了POD,并看到容器短暂地进展为一个,这对我来说意味着它需要更多内存。

    我观察到了同样的问题,并在yaml文件中添加了命令和args块。我正在复制我的yaml文件样本以供参考

     apiVersion: v1
        kind: Pod
        metadata:
          labels:
            run: ubuntu
          name: ubuntu
          namespace: default
        spec:
          containers:
          - image: gcr.io/ow/hellokubernetes/ubuntu
            imagePullPolicy: Never
            name: ubuntu
            resources:
              requests:
                cpu: 100m
            command: ["/bin/sh"]
            args: ["-c", "while true; do echo hello; sleep 10;done"]
          dnsPolicy: ClusterFirst
          enableServiceLinks: true
    

    我通过删除数组中引号和命令值之间的空格来解决这个问题,这是因为容器在启动后退出,并且没有可执行的命令存在,要在容器中运行

    ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600']
    

    我也有类似的问题,但当我更正了服务名称与文件部署的容器名称不匹配的
    zookeeper.yaml
    文件时,问题得到了解决。通过使它们保持一致,解决了这个问题

    apiVersion:v1 种类:服务 元数据: 名称:zk1 名称空间:nbd mlbpoc实验室 标签: 附录:zk-1 规格: 端口: -姓名:客户 港口:2181 协议:TCP -
    ENV CI=true
    
     kubectl get pods --watch
    
     apiVersion: v1
        kind: Pod
        metadata:
          labels:
            run: ubuntu
          name: ubuntu
          namespace: default
        spec:
          containers:
          - image: gcr.io/ow/hellokubernetes/ubuntu
            imagePullPolicy: Never
            name: ubuntu
            resources:
              requests:
                cpu: 100m
            command: ["/bin/sh"]
            args: ["-c", "while true; do echo hello; sleep 10;done"]
          dnsPolicy: ClusterFirst
          enableServiceLinks: true
    
    ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600']
    
    kubectl create deployment deb --image=debian:buster-slim -- "sh" "-c" "while true; do sleep 1234; done"