Kubernetes环境下的各种调试方法

启动单个容器

不使用Pod或Replication Controller,启动单个容器:

$ kubectl run webserver --image=nginx

想更改镜像,又不想升级版本?

每次修改之后,需要更新镜像的版本也好烦人啊。每次构建出新的镜像,Push到Docker Registry时,可以使用一个固定的版本,然后让Kubernetes在启动某个镜像时,无论本地是否有镜像,都去Docker Registry拉取镜像就好了。

ImagePullPolicy从默认的 IfNotPresent,改为 Always。

想直接修改容器里的程序,又不想更新镜像?

什么,还能这样做?在容器内部修改,比如修改了脚本,或者直接替换二进制程序,然后使用docker restart container-id。我尝试过此时使用docker commit提交修改,但是下次启动时,Kubernets就会报错。应该是有完整性校验的原因。

Pod重启了,如何看重启之前的日志?

下面的命令只能看到当前Pod的日志:

$ kubectl logs zookeeper-1

通过 --previous参数可以看之前Pod的日志

$ kubectl logs zookeeper-1 --previous

查看Pod生命周期的事件

通过如下命令,看命令末尾 events 一节,查看kubelet给APIServer发送的Pod生命周期里发生的事件

$ kubectl describe pod podname

没有看到任何事件,但是Pod重启了?

依然通过describe命令,Containers.[*].Last State一节:

$ kubectl describe pod podname

Name:       kafka-1 

...

Containers:

  kafka:

    ...

    State:      Running

       Started:     Sat, 08 Apr 2017 02:29:04 +0000

    Last State:     Terminated

       Reason:      OOMKilled

      Exit Code:    0

       Started:     Fri, 07 Apr 2017 11:06:56 +0000

      Finished:     Sat, 08 Apr 2017 02:29:04 +0000

    Ready:      True

   Restart Count:   1

...

可以看到 Kafka-1 这个Container因为内存消耗太多,达到内存的上限(Memory Resource Limit)而被干掉了。如果看到 Reason: Completed,说明是容器内部pid为1的程序主动退出的。

查看资源(CPU/Memory)使用情况

资源使用最多的节点

$ kubectl top nodes

资源使用最多的Pod

$ kubectl top pods

查看节点的资源使用情况

$ kubectl describe nodes | grep -A 2 -e "^\\s*CPU Requests"

如何摘下某个Pod进行Debug

使用label机制,对Pod进行标记。在Service定义中,我们添加 status: serving字段。当需要摘下某个Pod做Debug,而又不影响整个服务,可以:

$ kubectl get pods --selector="status=serving"

$ kubectl label pods webserver-rc-lxag2 --overwrite status=debuging

此时kubelet就会把这个Pod从Service的后端列表中删掉。等到Debug完,想恢复?再改回去就好了:

$ kubectl label pods webserver-rc-lxag2 --overwrite status=serving

References:

10 most common reasons kuberntes deployments fail

Kubernetes Community Resources

时间: 2024-11-26 21:14:04

Kubernetes环境下的各种调试方法的相关文章

在IE6环境下使用min-height的方法

 前段时间写有一篇"在IE6环境下使用min-width的方法",得到众人批评,呵呵,确实只是研究而已,不怎么实用. min-height实现起来相对容易,cssplay上已经给出了方法:/* for understanding browsers */.container { width:20em; padding:0.5em; border:1px solid #000; min-height:50px; height:auto;}/* for Internet Explorer *

PHP环境下Memcache的使用方法

原文:PHP环境下Memcache的使用方法 原文地址:http://www.2cto.com/kf/201503/384967.html 如今互联网崛起的时代,各大网站都面临着一个大数据流问题,怎么提高网站访问速度,减少对数据库的操作:作为PHP开发人员,我们一般能想到的方法有页面静态化处理.防盗链.CDN内容分发加速访问.mysql数据库优化建立索引.架设apache服务器集群().还有就是现在流行的各种分布式缓存技术:如memcached/redis:   1.什么是Memcached?

PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法_php实例

PHP用mb_string函数库处理与windows相关中文字符 昨天想批处理以前下载的一堆文件,把文件里的关键内容用正则匹配出来,集中处理.在操作文件时遇到一个问题,就是windows操作系统中的编码问题. 我们都知道windows中(当然是中文版),文件名和文件内容等编码都是gbk,而我们在开发过程中,IDE里的编码则是UTF-8,(这里不讨论为什么等等问题, 只考虑怎么把编码转变成一样的)所以导致我写的UTF-8编码的正则模式字符串中的中文在gbk编码的文件中并不能正确匹配. 一开始,我并

在LINUX环境下架设代理服务器的方法

代理服务器在目前的http://www.aliyun.com/zixun/aggregation/16327.html">网络环境中应用较广,并在Internet里扮演着一个很重要的角色.今天我就给大家介绍一种在LINUX环境下架设代理服务器的方法,希望能够对各位朋友有所帮助. 代理服务器简介 在架设前,让我们先来了解一下代理服务器的特点.我们这样来理解代理服务器,假设电脑A需要电脑B的数据,电脑A先与电脑C建立连接,电脑C接收到电脑A的数据请求后,再与电脑B建立连接,下载电脑A所请求的数

php在apache环境下实现gzip配置方法_php技巧

本文实例讲述了php在apache环境下实现gzip配置方法.分享给大家供大家参考.具体如下: 1.conf/httpd.conf 1) 去掉#LoadModule headers_module modules/mod_headers.so前面的注释#, 2) 添加LoadModule deflate_module modules/mod_deflate.so, 3) 去掉#Include conf/extra/httpd-vhosts.conf前面的注释#.  2.conf/extra/htt

车联网环境下交通信息传输保障方法研究

车联网环境下交通信息传输保障方法研究 吉林大学 闫超 本文紧紧围绕车联网环境下交通信息海量.时变.多源的特点,设计了车联网的系统结构:分析了车载移动自组织网络的信息节点拓扑结构变化规律,通过研究车载自组织网络,提出基于交通信息传输环境维护方法和车间交通信息传输方法的车联网环境下交通信息传输保障方法,并分析了相关方法的性能,改进了传统移动自组织网络相关信息传输协议的缺陷,使得交通信息传输的稳定性和效率大大提高,同时控制了网络通信开销和能耗. 车联网环境下交通信息传输保障方法研究

Oracle 11g RAC环境下Private IP修改方法及异常处理

Oracle 11g RAC环境下Private IP修改方法及异常处理 Oracle 11g RAC环境下Private IP修改方法及异常处理 一. 修改方法 1. 确认所有节点CRS服务以启动 # olsnodes -s -n –i host1 1 host1-vip Active host2 2 host2-vip Active 2. 修改Private IP配置信息 如果之前只有一个私有网卡,则直接删除时会报错,如:PRIF-31: Failed to delete the speci

Linux下core文件调试方法

在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息).使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数. 1.core文件的生成开关和大小限制  1)使用ulimit -c命令可查看core文件的生成开关.若结果为0,则表示关闭了此功能,不会生成core文件.  2)使用ulimit -c filesize命令,可以限制core文件的大小(filesize的单位为kbyte).若ulimit -c unlimited,则表示c

vmi:scm环境下的库存管理方法

一.革新传统库存控制方法的必要性 近年来,供应链管理(Supply Chain Management.简称SCM)在国内外日益受到人们的关注和重视,许多物流企业也开始重视探讨这种新的管理理念在库存管理中的应用.所谓供应链管理是以各种技术尤其是信息技术为依托,在供应链各节点间建立一种战略伙伴关系,实现从原材料供应商.制造商.分销商.零售商直到最终用户的商流.物流.信息流.资金流在整个供应链上的畅通无阻的流动,最终达到双赢甚至是多赢目的的过程. 在供应链管理环境下,供应链各个环节的活动都应该是同步进