Kubernetes 上对应用程序进行故障排除的 6 个技巧
作者:mindg.cn
https://www.mindg.cn/?p=2578
从 Docker 迁移到 Docker Swarm,再到 Kubernetes,然后处理了多年来的所有各种 API 更改之后,我非常乐意发现部署中出现的问题和把问题进行修复。我今天分享下我认为最有用的5条故障排除技巧,以及一些其他的使用技巧。
kubectl –“瑞士军刀”
kubectl 就是我们的瑞士军刀,我们经常在出现问题的时候使用他们,在出现问题如何使用他们很重要,让我们从5个“实际案例”开始,看出现问题时如何使用它们。
情况将是:我的YAML已被接受,但我的服务未启动且已启动,但无法正常工作。
1.kubectl get deployment/pods
这个命令如此重要的原因是它无需显示大量内容即可显示很有用的信息。
如果要为工作负载使用部署,则有两种选择:
kubectl get deploy
kubectl get deploy -n 名称空间
kubectl get deploy –all-namespaces [或“ -A”]
理想情况下,您希望看到的是1/1或等值的2/2,以此类推。这表明您的部署已被接受,并已尝试进行部署。
接下来,您可能需要查看kubectl get pod,以查看部署的后备Pod是否正确启动。
2. kubectl get events
我感到惊讶的是,我不得不经常向与Kubernetes有问题的人们解释这个小技巧。此命令将打印出给定名称空间中的事件,非常适合查找关键问题,例如崩溃的pod或无法pull容器镜像。
Kubernetes中的日志是“未排序的”,因此,您将需要添加以下内容,这些内容取自OpenFaaS文档。
$ kubectl get events --sort-by=.metadata.creationTimestamp
kubectl get事件的另一个接近的命令是是kubectl describe,就像get deploy / pod一样,它与对象的名称一起工作:
kubectl describe deploy/figlet -n openfaas
您会在这里获得非常详细的信息。您可以描述大多数事情,包括节点,这些节点将显示由于资源限制或其他问题而无法启动 Pod。
更多:什么,容器太多操作不过来?我选择Docker Compose梭哈
3. kubectl logs
这个命令肯定经常大家经常使用,但很多人使用了错误的方式。
如果您进行了部署,比方说cert-manager命名空间中的cert-manager,那么很多人认为他们首先必须找到Pod的长(唯一)名称并将其用作参数。不对。
kubectl logs deploy/cert-manager -n cert-manager
要跟踪日志,请添加-f
kubectl logs deploy/cert-manager -n cert-manager -f
您可以将所有三个结合起来。
如果您的 Deployment 或 Pod 有任何标签,则可以使用 -l app = name 或任何其他标签集来附加到一个或多个匹配Pod的日志中。
kubectl logs -l app=nginx
有一些工具,例如 stern 和 kail,可以帮助您匹配模式并节省一些键入操作,但我发现它们会分散您的注意力。
4.kubectl get -o yaml
当您开始使用由另一个项目或诸如Helm之类的其他工具生成的YAML时,您将很快需要它。在生产中检查镜像的版本或您在某处设置的注释也很有用。
kubectl run nginx-1 --image=nginx --port=80 --restart=Always
输出yaml
kubectl get deploy/nginx-1 -o yaml
现在我们知道了。而且,我们可以添加–export并将YAML保存在本地以进行编辑并再次应用。
实时编辑YAML的另一个选项是kubectl edit,如果您对vim感到困惑,不知道如何使用,请在命令前加上VISUAL = nano,使用这个简化编辑器。
5. kubectl scale 您打开和关闭它了吗?
Kubectl scale可用于将Deployment及其Pod缩小为零个副本,实际上杀死了所有副本。当您将其缩放回1/1时,将创建一个新的Pod,重新启动您的应用程序。
语法非常简单,您可以重新启动代码并再次进行测试。
kubectl scale deploy/nginx-1 --replicas=0
kubectl scale deploy/nginx-1 --replicas=1
6. Port forwarding
我们需要这个技巧, 通过kubectl进行的端口转发使我们可以在我们自己计算机上的本地或远程群集上公开一项服务,以便在任何已配置的端口上访问它,而无需在Internet上公开它。
以下是在本地访问Nginx部署的示例:
kubectl port-forward deploy/nginx-1 8080:80
有人认为这仅适用于部署或Pod,这是错误的。服务间是公平的,通常是转发的选择,因为它们将模拟生产集群中的配置。
如果您确实想在Internet上公开服务,通常会使用LoadBalancer服务,或运行kubectl暴露:
kubectl expose deployment nginx-1 --port=80 --type=LoadBalancer
技巧说完了,可以现在尝试一下,我希望您发现这6条命令和技巧有用, 现在,您可以在真实的集群上对其进行测试了。
END
推荐好文
强大,10k+点赞的 SpringBoot 后台管理系统竟然出了详细教程!分享一套基于SpringBoot和Vue的企业级中后台开源项目,代码很规范!
能挣钱的,开源 SpringBoot 商城系统,功能超全,超漂亮!
Kubernetes 上对应用程序进行故障排除的 6 个技巧相关推荐
- iOS故障排除指南:基本技巧
[2013年1月16日 51CTO外电头条]本文为<iOS故障排除指南:基本技巧>.在iOS程序的数组中的三个对象莫名其妙成了五个.新开发成员的加入令游戏性不升反降:熟悉应用开发的各位朋友 ...
- Pipy:保护 Kubernetes 上的应用程序免受 SQL 注入和 XSS 攻击
注入攻击在 OWASP Web 应用 10 大安全风险[1] 排名 2021 年下滑至第 3 位,多年来一直位居前十.SQL 注入 (SQLi) 是一种用于攻击网站和 Web 应用程序的常见注入技术. ...
- Code For Better 谷歌开发者之声—— 在 Windows 10 上对 Google Chrome 进行故障排除
- openshift s2i_对Openshift上的Play Framework 2应用进行故障排除
openshift s2i Openshift故障排除 使用" 自己动手"应用程序类型,您实际上可以有很大的自由度来支持几乎可以在Linux机器上构建和运行的任何框架或服务器. ...
- 【云原生】Java 应用程序在 Kubernetes 上棘手的内存管理
文章目录 引言 JVM 内存模型简介 非 Heap 内存 Heap 堆内存 Kubernetes 内存管理 JVM 和 Kubernetes 场景 1 - Java Out Of Memory 错误 ...
- 阻塞会话_使用根会话解决SQL阻塞链并进行故障排除
阻塞会话 In this article, we will study how to recognize and resolve the SQL blocking chain by determini ...
- 在Kubernetes上运行SAP UI5应用(下): 一个例子体会Kubernetes内容器的高可用性和弹性伸缩...
2019独角兽企业重金招聘Python工程师标准>>> 上一篇文章 在Kubernetes上运行SAP UI5应用(上),我介绍了如何在Docker里运行一个简单的SAP UI5应用 ...
- 在Kubernetes上运行SAP UI5应用(下): 一个例子体会Kubernetes内容器的高可用性和弹性伸缩
上一篇文章 在Kubernetes上运行SAP UI5应用(上),我介绍了如何在Docker里运行一个简单的SAP UI5应用,并且已经成功地将一个包含了这个UI5应用的docker镜像上传到Dock ...
- 计算机日常故障DIY维修有哪些,电脑故障排除及优化完全DIY
摘要: 本书共8章,第1章-第4章详细介绍了电脑故障的分类,故障判断的方法及故障处理的基本方法,介绍了如何正确快速地分析与处理计算机常见软,硬件故障,如何快速重装WindowsXP操作系统及最新的Wi ...
最新文章
- 收藏|490页阿里、腾讯、京东等公司的推荐算法最佳实践!pdf限时下载
- 【连载】【FPGA黑金开发板】Verilog HDL那些事儿--12864(ST7565P)液晶驱动(十三)...
- 乐迪机器人正确操作_什么是机器人示教器?
- 使用Filter跟踪Asp.net MVC页面加载(转)
- 《Node.js核心技术教程》读书笔记---思维导图版
- 2017年度盘点:15个最流行的GitHub机器学习项目 By 机器之心2017年12月21日 15:23 在本文中,作者列出了 2017 年 GitHub 平台上最为热门的知识库,囊括了数据科学、机
- PX4飞控中利用EKF估计姿态角代码详解
- linux龙芯自动挂载u盘,Windows Subsystem for Linux (WSL)挂载移动硬盘U盘
- (转)Nginx反向代理设置 从80端口转向其他端口
- windows10把单独文件固定到开始屏幕
- CF11D A Simple Task(状压DP)
- 如何在Mac视频中删除音频呢?
- [转]给新同学的礼仪建议
- 一款好看的pycharm主题Atom One Dark
- Matlab - Matlab 2016a 安装破解教程
- matlab 数字波束合成,dbf数字波束合成
- 基金投资入门与技巧——阅读笔记
- 参加了feedsky的blog挑战赛
- Excel表Ctrl+v和Ctrl shift+v有什么区别_Excel表格操作技巧,超实用
- 程序员《周易》入门一