Kubernetes环境下的各种调试方法
作者:Jack47
转载请保留作者和原文出处
欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源。
本文介绍在Kubernetes环境下的调试方法,希望对读者有用。如果关心Docker环境里的调试方法,可以看我的这篇文章:Useful commands for docker beginners
启动单个容器
不使用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
Kubernetes环境下的各种调试方法的更多相关文章
- eclipse环境下tomcat远程调试方法
前提:Windows环境tomcat是以catalina.bat方式而非Windows服务形式启动(两者所使用的JAVA配置及JVM参数会有差异). 服务器段设置 方法1:修改CATALINA_OPT ...
- Kubernetes环境下如何运行Coherence缓存集群
Oracle官方出了一个如何在Docker环境下运行Coherence的技术文档,大家可以参考: https://github.com/oracle/docker-images/tree/master ...
- React 环境搭建及页面调试方法
React 环境搭建及页面调试方法 |作者:RexFang |出处:http://www.cnblogs.com/rexfang/ |关于作者:Java 程序员一枚 |版权:本文版权归作者和博客园共有 ...
- PHP环境下Memcache的使用方法
原文:PHP环境下Memcache的使用方法 原文地址:http://www.2cto.com/kf/201503/384967.html 如今互联网崛起的时代,各大网站都面临着一个大数据流问题,怎么 ...
- Oracle 11g RAC环境下Private IP修改方法及异常处理
Oracle 11g RAC环境下Private IP修改方法及异常处理 Oracle 11g RAC环境下Private IP修改方法及异常处理 一. 修改方法 1. 确认所有节点CRS服务以启动 ...
- 分布式环境下的id生成方法
分布式环境下的id生成方法 前几天研究数据库分表分库的问题,其中有一个关键的地方就是生成唯一键的问题,假如数据表有1亿条数据,而且还在不断的增加,这里我们就需要考虑到分表分库,假设我们采用Hash ...
- CDN 环境下获取用户IP方法
CDN 环境下获取用户IP方法 1 cdn 自定义header头的X-Real-IP,在后端使用$http_x_real_ip获得 proxy_set_header X-Real-IP $remote ...
- 转载:一种云环境下SaaS软件部署方法及装置与流程
转载:http://www.xjishu.com/zhuanli/55/201710103925.html 本发明涉及云计算技术领域,特别是涉及一种云环境下SaaS软件部署方法及装置. 背景技术: 随 ...
- linux下core文件调试方法
http://www.cnblogs.com/li-hao/archive/2011/09/25/2190278.html 在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映 ...
随机推荐
- MongoDB【第二篇】集群搭建
第一步:准备 1.安装包 mongodb-linux-x86_64-rhel70-3.4.2.tgz 2. 架构: 本文为 1-primary.1-secondary.1-arbiter 的 mong ...
- 深入探讨 CSS 特性检测 @supports 与 Modernizr
什么是 CSS 特性检测?我们知道,前端技术日新月异的今天,各种新技术新属性层出不穷.在 CSS 层面亦不例外. 一些新属性能极大提升用户体验以及减少工程师的工作量,并且在当下的前端氛围下: 很多实验 ...
- BOM元素之location对象
location对象提供了与当前窗口中加载的文档有关的信息,还提供了一些导航功能,它既是window对象的属性,也是document对象的属性:换句话说,window.location和documen ...
- JAVA包名、类名、变量名命名规则
类名:首字母大写,其他单词中首字母大写,其他小写; 方法名:首字母小写,其他单词中首字母大写,其他小写: 变量:首字母小写,其他单词中首字母大写,其他小写: 包名:全部小写
- 纯CSS3之五子棋(黑白棋)画法
无聊想用JS写个五子棋玩玩,这边先用CSS3画出了五子棋,感觉挺惊艳的.发上来看看 PS:第一次发博文T-T 此为个人原创. 不多说上图: 代码如下: <!DOCTYPE html> & ...
- 大型ERP系统在线体验
ERP简单说明: AIO7构建了基于SOA三层架构的管理软件平台.客户通过网络即可得到ERP服务,不用安装服务器.不用建立数据中心.不用安装软件.无需专业IT支持,任何上网设备就可以使用高性能.功能集 ...
- 问题 : lang.NoClassDefFoundError: org/springframework/core/annotation/AnnotatedElementUtils,的解决方法
今天在做junit 测试的时候 出现了一个问题,花了一段时间 才解决. java.lang.NoClassDefFoundError: org/springframework/core/annota ...
- WebApi接口请求失败,找不到资源。
WebApi开发接口,实现同步数据库的数据给安卓. public class UserInfoController : ApiControllerBase { private UserBLL user ...
- Hibernate学习笔记①
---恢复内容开始--- 1.JavaEE的三层结构 WEB层--Service层--DAO层 2.Hibernate版本 Hibernate3.x 4.x 5.x 4版本是过渡版本 不使用 5 ...
- ThinkPhp框架:父类及表单验证
这个知识点,就可以通过"登录"和"注册"的页面来学习这个知识点了首先先做一个"登录"功能一.登录功能(父类)(1)登录的控制器在我的控制器文 ...