AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 727104
Accepted
Marc Hughes
Marc Hughes
Asked: 2015-10-07 07:43:57 +0800 CST2015-10-07 07:43:57 +0800 CST 2015-10-07 07:43:57 +0800 CST

如何判断 kubernetes 集群中的容器何时/是否/为什么重新启动?

  • 772

我在谷歌容器引擎中有一个单节点 kubernetes 集群可以玩。

现在有两次,我在其中托管的一个小型个人网站已经离线了几分钟。当我查看容器的日志时,我看到最近完成了正常的启动顺序,所以我假设容器死亡(或被杀死?)并重新启动。

我怎样才能弄清楚发生这种情况的方式和原因?

有没有办法在容器意外启动/停止时获得警报?

kubernetes
  • 5 5 个回答
  • 78938 Views

5 个回答

  • Voted
  1. Best Answer
    beeps
    2015-11-12T11:42:22+08:002015-11-12T11:42:22+08:00

    您可以使用以下命令查看容器的上次重启日志:

    kubectl 记录 podname -c containername --previous

    如 Sreekanth 所述,kubectl get pods 应该显示重启次数,但您也可以运行

    kubectl 描述 pod podname

    它将向您显示 kubelet 发送到 apiserver 的有关 pod 的生命周期事件的事件。

    您还可以将最终消息写入 /dev/termination-log,这将按照文档中的说明显示。

    • 75
  2. Maximiliano De Lorenzo
    2018-05-01T02:29:44+08:002018-05-01T02:29:44+08:00

    除了前面的答案,另一个帮助我找到错误的命令是:

    kubectl get event [--namespace=my-namespace]

    它还列出了来自 Pod、Jobs、Nodes 的事件

    • 21
  3. vladimir
    2020-10-08T14:21:04+08:002020-10-08T14:21:04+08:00

    我按照以下步骤定义失败的原因:

    # print out a pod logs (https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#logs)
    kubectl logs {name_of_pod} -n {namespace} --since=2h --timestamps
    
    
    # print the logs for the _previous_ instance of the container in a pod if it exists
    kubectl logs -p {name_of_pod} -n {namespace} --since=2h --timestamps
    
    
    # check events (https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#describe)
    kubectl describe pod {pod_name} -n {namespace}
    
    # look at the 'Events' at the end of the output
    # ..
    # Events:
    #   Type     Reason   Age                 From               Message
    #   ----     ------   ----                ----               -------
    #   Warning  BackOff  40m                 kubelet, gke-xx    Back-off restarting failed container
    # ..
    
    
    # observe all events (https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#get)
    kubectl get events -n {namespace} --sort-by=.metadata.creationTimestamp
    
    
    # check logs, etc. in pod container (https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#exec)
    kubectl exec -it {pod_name} -n {namespace} -- sh
    
    • 10
  4. Sreekanth Pothanis
    2015-10-22T22:35:41+08:002015-10-22T22:35:41+08:00

    kubectl get pods 实际上会列出容器的任何重新启动,describe 命令也会有所帮助,因为它会列出与 pod 关联的所有事件。

    可以在此处配置 Liveness probes 和 readiness probes 以便更好地处理 检查

    https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/

    此外,可以将钩子配置为在容器生命周期中的特定点在容器中使用 检查here

    https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/

    • 8
  5. Chris Halcrow
    2021-06-28T18:05:34+08:002021-06-28T18:05:34+08:00

    重新启动时

    kubectl describe pod your-pod-name

    寻找这样的部分:

    State:          Running
      Started:      Wed, 23 Jun 2021 23:52:05 +1000
    Last State:     Terminated
      Reason:       Error
      Exit Code:    1
      Started:      Wed, 23 Jun 2021 23:46:48 +1000
      Finished:     Wed, 23 Jun 2021 23:46:52 +1000
    Ready:          True 
    

    上面的解释如下:

    • podWed, 23 Jun 2021 23:46:52 +1000在 开始后终止Wed, 23 Jun 2021 23:46:48 +1000,现在正在运行并准备就绪,上次启动时间为Wed, 23 Jun 2021 23:52:05 +1000

    拉取请求现已合并到 kubernetes 1.22 里程碑中,以将LAST RESTART列添加到 中kubectl get pods,并且在发布后将可用 - 请参见此处。 https://github.com/kubernetes/kubernetes/pull/100142

    要查看您当前的版本 -kubernetes version

    (1.21 是截至 2021 年 6 月 28 日的最新版本)

    如果重新启动

    kubectl get po [your-pod-name]RESTARTS如果列 中有任何数字,则 Pod 在某个阶段重新启动

    为什么重启

    kubectl describe pod [your-pod-name]将显示一个Last State给你一个高水平的指示。要查看 pod 在重新启动之前发生了什么,请使用kubectl logs your-pod-name --previous. 您可以将其通过管道传输到文件以进行检查,例如

    kubectl logs your-pod-name --previous > pod_previous_log.txt

    (另见上文“重新启动时”)

    • 3

相关问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve