首页 > 其他分享 >调试init容器

调试init容器

时间:2023-07-24 17:35:36浏览次数:34  
标签:容器 ... 状态 Init init Pod kubectl 调试

调试 Init 容器

此页显示如何核查与 Init 容器执行相关的问题。 下面的示例命令行将 Pod 称为 <pod-name>,而 Init 容器称为 <init-container-1><init-container-2>

准备开始

你必须拥有一个 Kubernetes 的集群,同时你的 Kubernetes 集群必须带有 kubectl 命令行工具。 建议在至少有两个节点的集群上运行本教程,且这些节点不作为控制平面主机。 如果你还没有集群,你可以通过 Minikube 构建一个你自己的集群,或者你可以使用下面任意一个 Kubernetes 工具构建:

要获知版本信息,请输入 kubectl version.

检查 Init 容器的状态

显示你的 Pod 的状态:

kubectl get pod <pod-name>

例如,状态 Init:1/2 表明两个 Init 容器中的一个已经成功完成:

NAME         READY     STATUS     RESTARTS   AGE
<pod-name>   0/1       Init:1/2   0          7s

更多状态值及其含义请参考理解 Pod 的状态

获取 Init 容器详情

查看 Init 容器运行的更多详情:

kubectl describe pod <pod-name>

例如,对于包含两个 Init 容器的 Pod 可能显示如下信息:

Init Containers:
  <init-container-1>:
    Container ID:    ...
    ...
    State:           Terminated
      Reason:        Completed
      Exit Code:     0
      Started:       ...
      Finished:      ...
    Ready:           True
    Restart Count:   0
    ...
  <init-container-2>:
    Container ID:    ...
    ...
    State:           Waiting
      Reason:        CrashLoopBackOff
    Last State:      Terminated
      Reason:        Error
      Exit Code:     1
      Started:       ...
      Finished:      ...
    Ready:           False
    Restart Count:   3
    ...

你还可以通过编程方式读取 Pod Spec 上的 status.initContainerStatuses 字段,了解 Init 容器的状态:

kubectl get pod nginx --template '{{.status.initContainerStatuses}}'

此命令将返回与原始 JSON 中相同的信息.

通过 Init 容器访问日志

与 Pod 名称一起传递 Init 容器名称,以访问容器的日志。

kubectl logs <pod-name> -c <init-container-2>

运行 Shell 脚本的 Init 容器在执行 Shell 脚本时输出命令本身。 例如,你可以在 Bash 中通过在脚本的开头运行 set -x 来实现。

理解 Pod 的状态

Init: 开头的 Pod 状态汇总了 Init 容器执行的状态。 下表介绍调试 Init 容器时可能看到的一些状态值示例。

状态 含义
Init:N/M Pod 包含 M 个 Init 容器,其中 N 个已经运行完成。
Init:Error Init 容器已执行失败。
Init:CrashLoopBackOff Init 容器执行总是失败。
Pending Pod 还没有开始执行 Init 容器。
PodInitializing or Running Pod 已经完成执行 Init 容器。

标签:容器,...,状态,Init,init,Pod,kubectl,调试
From: https://www.cnblogs.com/pr1s0n/p/17577828.html

相关文章

  • 调试运行中的Pod
    使用kubectldescribepod命令获取Pod详情与之前的例子类似,我们使用一个Deployment来创建两个Pod。application/nginx-with-request.yamlapiVersion:apps/v1kind:Deploymentmetadata:name:nginx-deploymentspec:selector:matchLabels:app:ngi......
  • 多容器共享卷
    首先定义一个pod,其中包含两个容器apiVersion:v1kind:Podmetadata:name:two-containersspec:restartPolicy:Nevervolumes:-name:shared-datahostPath:path:/datacontainers:-name:nginx-containerimage:nginxvolumeMo......
  • 调试Pod
    诊断问题故障排查的第一步是先给问题分类。问题是什么?是关于Pod、ReplicationController还是Service?调试Pod调试ReplicationController调试Service调试Pod调试Pod的第一步是查看Pod信息。用如下命令查看Pod的当前状态和最近的事件:kubectldescribepods$......
  • 调试service
    调试Service对于新安装的Kubernetes,经常出现的问题是Service无法正常运行。你已经通过Deployment(或其他工作负载控制器)运行了Pod,并创建Service,但是当你尝试访问它时,没有任何响应。此文档有望对你有所帮助并找出问题所在。在Pod中运行命令对于这里的许多步骤,你可能希......
  • Docker修改容器内部时间
    ❝因:最近在捣鼓定时任务的时候发现我本地调试没问题,发到服务器上之后发现实际生效时间比设定的晚了8小时,于是记录一下解决方案,以便于日后查询!❞linux服务的时间查看时间使用datedete#输出结果FriJun210:51:20CST2023使用timedatectltimedatectl#输出结果Localtime:......
  • Qt Cannot retrieve debugging output报错 (无法获取调试输出.)
    我们在QT中有时会遇到Cannotretrievedebuggingoutput报错,无法利用qDebug输出内容,原因是开了两个qt软件,这是需要我们把其中一个qt软件关了,然后在唯一的qt中打开项目,放心,一个窗口仍然可以运行两个程序。 ......
  • android init.rc添加服务
    Androidinit.rc添加服务在Android系统中,init.rc文件是一个重要的配置文件,它用于初始化系统的各种服务和进程。通过修改init.rc文件,我们可以添加自定义的服务,以满足特定的需求。本文将详细介绍如何在Androidinit.rc文件中添加自定义服务,并提供相应的代码示例。init.rc文件概述i......
  • android init.rc service 启动
    Androidinit.rcservice启动流程在Android系统中,init进程是系统的第一个进程,负责启动和管理其他所有进程。在init进程的配置文件init.rc中,可以定义并启动各种系统服务(services)。本文将介绍如何实现"androidinit.rcservice启动"的流程,并提供相应的代码示例和注释。1.编写ini......
  • 《Spring6核心源码解析》已完结,涵盖IOC容器、AOP切面、AOT预编译、SpringMVC,面试杠杠
    作者:冰河星球:http://m6z.cn/6aeFbs博客:https://binghe.gitcode.host文章汇总:https://binghe.gitcode.host/md/all/all.html源码地址:https://github.com/binghe001/spring-annotation-book沉淀,成长,突破,帮助他人,成就自我。大家好,我是冰河~~提起Spring,可以这么说,Spring几乎......
  • mkinitrd
    mkinitrd建立要载入ramdisk的映像文件补充说明mkinitrd命令建立要载入ramdisk的映像文件,以供Linux开机时载入ramdisk。这个是重新封包核心的命令,例如你自己修改了一个设备的驱动,如果这个驱动要加入核心级别的话,就需要对核心进行重新封包,把新加的配置编译到核心内部去!语法mk......