Kubernetes基础:问题排查方法示例:结合使用kubectl get event
这篇文章以Metrics Server部署时碰到的问题为例,介绍如何结合使用kubectl get event命令进行问题的排查。
Metrics Server部署
Metrics Server是Kubernetes 1.8以后指标监控使用的组件,诸如dashboard和kubectl top等都需要使用到它,到目前需要手动安装,安装非常简单,一般如下命令即可
步骤1: git clone
执行命令:git clone https://github.com/kubernetes-incubator/metrics-server
步骤2: kubectl create
执行命令:cd metrics-server && kubectl create -f deploy/1.8+/
问题现象
metrics-server显示READY的状态为0/1
[root@host131 1.8+]# kubectl get deployment -A
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
kube-system coredns 1/1 1 1 2m50s
kube-system metrics-server 0/1 0 0 25s
[root@host131 1.8+]#
说明此时pod状态未Ready,查询全命令空间只有coredns的pod在运行
[root@host131 1.8+]# kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-59db588569-gz6x8 1/1 Running 0 7m46s
[root@host131 1.8+]#
问题排查
使用kubectl get event确认,加上-A选项或者指定命名空间比如此例中为kube-system,可以获取到如下错误信息
5m54s Warning FailedCreate replicaset/metrics-server-789c77976 Error creating: pods "metrics-server-789c77976-gzbl5" is forbidden: SecurityContext.RunAsUser is forbidden
5m53s Warning FailedCreate replicaset/metrics-server-789c77976 Error creating: pods "metrics-server-789c77976-c5jxg" is forbidden: SecurityContext.RunAsUser is forbidden
5m53s Warning FailedCreate replicaset/metrics-server-789c77976 Error creating: pods "metrics-server-789c77976-4t4wt" is forbidden: SecurityContext.RunAsUser is forbidden
5m53s Warning FailedCreate replicaset/metrics-server-789c77976 Error creating: pods "metrics-server-789c77976-zv9hg" is forbidden: SecurityContext.RunAsUser is forbidden
5m53s Warning FailedCreate replicaset/metrics-server-789c77976 Error creating: pods "metrics-server-789c77976-vqm9m" is forbidden: SecurityContext.RunAsUser is forbidden
5m53s Warning FailedCreate replicaset/metrics-server-789c77976 Error creating: pods "metrics-server-789c77976-l9bdw" is forbidden: SecurityContext.RunAsUser is forbidden
5m53s Warning FailedCreate replicaset/metrics-server-789c77976 Error creating: pods "metrics-server-789c77976-x7v2r" is forbidden: SecurityContext.RunAsUser is forbidden
5m53s Warning FailedCreate replicaset/metrics-server-789c77976 Error creating: pods "metrics-server-789c77976-4p4v9" is forbidden: SecurityContext.RunAsUser is forbidden
5m52s Warning FailedCreate replicaset/metrics-server-789c77976 Error creating: pods "metrics-server-789c77976-4rdtb" is forbidden: SecurityContext.RunAsUser is forbidden
26s Warning FailedCreate replicaset/metrics-server-789c77976 (combined from similar events): Error creating: pods "metrics-server-789c77976-442xf" is forbidden: SecurityContext.RunAsUser is forbidden
只要有清晰的错误提示,一般就可以判断出原因,比如此处可以看到
pods "metrics-server-789c77976-442xf" is forbidden: SecurityContext.RunAsUser is forbidden
说明pod在创建的过程中准入没有通过,准入控制的SecurityContext有问题,然后确认kube-apiserver的参数(systemctl status -l kube-apiserver)
--enable-admission-plugins=NamespaceLifecycle,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota,NodeRestriction
准入控制SecurityContextDeny的作用就是为了限制使用了SecurityContext,SecurityContext可以在容器中定义uid、gid与SELinux等操作系统级别的安全设定,正是由于这个准入控制的存在导致了此Pod根本没有进入到进行pod的镜像的拉取直接失败,导致根本没有pod的信息。
对应方法
删除准入控制中的SecurityContextDeny,然后重启ApiServer,再次创建就会发现至少出现ContainerCreating的状态了(至于pull不下来则是别的问题,此处不再赘述)
[root@host131 1.8+]# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-59db588569-gz6x8 1/1 Running 0 26m
kube-system metrics-server-789c77976-sfvsx 0/1 ContainerCreating 0 10s
[root@host131 1.8+]#
总结
问题的排查关键在于重要提示信息的获取,在kubernetes中,日志、systemctl status状态信息和kubeclt get event等命令合理结合才能准确和全面的获取包含问题原因的信息,另外各个组件的信息最好都要插件,比如此例中在controller-manager中也可以看到类似的错误信息。
Kubernetes基础:问题排查方法示例:结合使用kubectl get event相关推荐
- Kubernetes基础:可以用作示例演示的tornado镜像
这篇文章说明一个可以在后续进行蓝绿部署.灰度发布以及负载均衡的tornado镜像. tornado镜像 蓝绿部署:https://blog.csdn.net/liumiaocn/article/det ...
- Kubernetes基础:重启pod的方法
Kubernetes没有提供诸如docker restart类似的命令用于重启容器那样重启pod的命令,一般会结合restartPolicy进行自动重启,这篇文章整理一下偶尔需要手动进行重启的时候所需 ...
- Kubernetes基础详解
1. Kubernetes介绍 1.1 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不 ...
- Kubernetes 网络疑难杂症排查分享
本文作者来自腾讯云容器服务(TKE)团队,经常帮助用户解决各种 Kubernetes 的疑难杂症,积累了比较丰富的经验,本文分享几个比较复杂的网络方面的问题排查和解决思路,深入分析并展开相关知识,信息 ...
- 【开源要闻】Canonical发布新OpenStack工具、Kubernetes访客引导方法
Canonical发布支持CephFS的OpenStack Charms 20.02 Canonical近日宣布了OpenStack Charms 20.02的全面上市,这是用于在Ubuntu上设计, ...
- LLVM编译器基础架构与DragonEgg示例
LLVM编译器基础架构与DragonEgg示例 LLVM 概述 LLVM 项目是模块化和可重用的编译器和工具链技术的集合.LLVM 与传统的虚拟机几乎没有关系."LLVM"这个名字 ...
- 送书 | 你一定能看懂的算法基础书(代码示例基于Python)
本文引自图灵教育<算法图解> 你一定能看懂的算法基础书:代码示例基于Python:400多个示意图,生动介绍算法执行过程:展示不同算法在性能方面的优缺点:教会你用常见算法解决每天面临的实际 ...
- 服务器可以pyqt显示吗,用pyqt+socket实现远程操作服务器的一个例子,PyQtsocket,方法,示例...
@本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 这篇文章主要介绍了PyQt+socket实现远程操作服务器的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定 ...
- Kubernetes基础学习(一)
Kubernetes基础学习 Kubernetes核心组件 Kubernetes核心组件如下: Kubernetes Master部分: etcd保存了整个集群的状态: apiserver提供了资源操 ...
最新文章
- DNS重绑定DNS Rebinding攻击
- Linux内核学习笔记
- 【原创】大叔案例分享(3)用户行为分析--见证scala的强大
- 信息系统项目管理系列之一:绪论
- 常用的几种大数据架构剖析
- 通过实验取证:TCP三次握手的过程
- 爱荷华大学计算机科学专业,爱荷华大学计算机科学专业好不好?专业设置详情一览...
- python自动保存ping结果_利用python获取Ping结果示例代码
- 巴塞尔问题欧拉解法逐步推导与分析
- HTML5详细介绍及使用
- 晶体管放大电路之应用
- taobao.trades.sold.increment.get( 淘宝店铺订单接口,淘宝店铺订单交易数据接口,淘宝店铺订单解密接口,淘宝店铺订单解密提额接口)代码对接教程
- 新年新气象,专注于重要的事
- 统计局解读1月制造业采购经理指数:服务业回升明显
- Excel 常用技巧目录
- 4米乘以12米CAD图_CAD绘图比例、出图比例、打印比例讲解!!!
- 新媒体运营的岗位晋升路线是怎么样的? 新媒体管理师是趋势吗?
- MXNet:基础和入门
- html如何在图片中放入音乐,如何给图片添加音乐
- 腾讯云服务器地域怎么选?地域可用区选择四大因素