网站推广的渠道,wordpress 搜索 多个词,找别人建个网站多少钱,宁波网站建设制作价格写在前面 博文内容为节译整理文中提到的工具大部分是商业软件#xff0c;不是开源的#xff0c;作为了解理解不足小伙伴帮忙指正 对每个人而言#xff0c;真正的职责只有一个#xff1a;找到自我。然后在心中坚守其一生#xff0c;全心全意#xff0c;永不停息。所有其它…写在前面 博文内容为节译整理文中提到的工具大部分是商业软件不是开源的作为了解理解不足小伙伴帮忙指正 对每个人而言真正的职责只有一个找到自我。然后在心中坚守其一生全心全意永不停息。所有其它的路都是不完整的是人的逃避方式是对大众理想的懦弱回归是随波逐流是对内心的恐惧 ——赫尔曼·黑塞《德米安》 Kubernetes 故障排除方法论
Kubernetes 故障排除是识别、诊断和解决 Kubernetes 集群、节点、Pod 或容器中问题的过程。
更广泛地说Kubernetes 故障排除还包括有效的持续故障管理并采取措施防止 Kubernetes 组件出现问题。
Kubernetes 故障排除的三大支柱在 Kubernetes 集群中进行有效的故障排除有三个方面
了解问题管理和修复问题防止问题再次发生
了解问题
在 Kubernetes 环境中很难理解发生了什么并确定问题的根本原因。这通常涉及
查看最近对受影响的集群、Pod 或节点所做的更改以查看导致故障的原因。分析运行故障组件的虚拟机或裸机的 YAML 配置、GitHub 存储库和日志。查看 Kubernetes 事件和指标如磁盘压力、内存压力和利用率。在成熟的环境中您应该有权访问仪表板这些仪表板显示一段时间内集群、节点、Pod 和容器的重要指标。比较行为相同的类似组件并分析组件之间的依赖关系以查看它们是否与故障相关。
为了实现上述目标团队通常使用以下技术
监控工具DatadogDynatraceGrafanaNew Relic可观测性工具Lightstep, Honeycomb实时调试工具OzCodeRookout日志记录工具SplunkLogDNALogz.io
管理和修复问题
在微服务体系结构中通常每个组件都由单独的团队开发和管理。由于生产事件通常涉及多个组件因此协作对于快速修复问题至关重要。
了解问题后有三种方法可以修复它
临时解决方案 : 基于处理受影响组件的团队的部落知识。通常构建组件的工程师对如何调试和解决它有不成文的知识。手动运行手册 : 一个清晰的、记录在案的过程显示如何解决每种类型的事件。拥有运行手册意味着团队的每个成员都可以快速解决问题。自动化运行手册: 一种自动化过程可以作为脚本、基础结构即代码 IaC 模板或 Kubernetes 运算符实现并在检测到问题时自动触发。自动响应所有常见事件可能具有挑战性但它可能非常有益可以减少停机时间并消除人为错误。
为了实现上述目标团队通常使用以下技术
事件管理PagerDuty, Kintaba项目管理Jira, Monday, Trello基础设施即代码Amazon CloudFormation、Terraform
预防
成功的团队将预防作为重中之重。随着时间的推移这将减少用于识别和解决新问题的时间。防止 Kubernetes 中的生产问题涉及
在每次事件发生后创建策略、规则和行动手册以确保有效补救调查是否可以自动响应问题以及如何自动执行定义如何在下次快速识别问题并提供相关数据 - 例如通过检测相关组件确保将问题上报给适当的团队并且这些团队可以有效地沟通以解决问题
为了实现上述目标团队通常使用以下技术
混沌工程Gremlin, Chaos Monkey, ChaosIQ.
Gremlin 是一个混沌工程平台它提供了多种故障注入工具包括网络故障、主机故障、应用程序故障等可以帮助用户测试系统的弹性和可靠性。
Chaos Monkey 是 Netflix 公司开发的一个混沌工程工具它可以在生产环境中随机关闭实例来测试系统的可靠性和弹性。
ChaosIQ 是一个混沌工程平台它提供了多种故障注入工具包括网络故障、主机故障、应用程序故障等可以帮助用户测试系统的弹性和可靠性。它还提供了可视化仪表板和报告帮助用户分析测试结果和改进系统。
自动修复Shoreline, OpsGenie.
集群故障排除
获取集群信息
要在集群中进行调试请确保所有节点都已正确注册。
┌──[rootvms100.liruilongs.github.io]-[~]
└─$kubectl get nodes
NAME STATUS ROLES AGE VERSION
vms100.liruilongs.github.io Ready control-plane 141d v1.25.1
vms101.liruilongs.github.io Ready control-plane 141d v1.25.1
vms102.liruilongs.github.io Ready control-plane 141d v1.25.1
vms103.liruilongs.github.io Ready none 141d v1.25.1
vms105.liruilongs.github.io Ready none 141d v1.25.1
vms106.liruilongs.github.io Ready none 141d v1.25.1
┌──[rootvms100.liruilongs.github.io]-[~]
└─$使用dump进行故障排除
获取集群信息
┌──[rootvms100.liruilongs.github.io]-[~]
└─$kubectl cluster-info
Kubernetes control plane is running at https://192.168.26.99:30033
CoreDNS is running at https://192.168.26.99:30033/api/v1/namespaces/kube-system/services/kube-dns:dns/proxyTo further debug and diagnose cluster problems, use kubectl cluster-info dump.使用 grep 对关键字进行过滤排查问题
┌──[rootvms100.liruilongs.github.io]-[~]
└─$kubectl cluster-info dump获取群集组件的运行状况
v1.19之后可能要被废弃
┌──[rootvms100.liruilongs.github.io]-[~]
└─$kubectl get componentstatuses
Warning: v1 ComponentStatus is deprecated in v1.19
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
etcd-0 Healthy {health:true,reason:}
controller-manager Healthy ok
┌──[rootvms100.liruilongs.github.io]-[~]
└─$集群日志记录查找
获取日志的最后五行
┌──[rootvms100.liruilongs.github.io]-[~]
└─$kubectl logs argocd-application-controller-0 --tail5
time2023-06-16T20:26:58Z levelwarning msgFailed to save clusters info: dial tcp 10.96.153.48:6379: connect: connection refused
time2023-06-16T20:27:08Z levelwarning msgFailed to save clusters info: dial tcp 10.96.153.48:6379: connect: connection refused
time2023-06-16T20:27:18Z levelwarning msgFailed to save clusters info: dial tcp 10.96.153.48:6379: connect: connection refused
time2023-06-16T20:27:28Z levelwarning msgFailed to save clusters info: dial tcp 10.96.153.48:6379: connect: connection refused
time2023-06-16T20:27:38Z levelwarning msgFailed to save clusters info: dial tcp 10.96.153.48:6379: connect: connection refused
┌──[rootvms100.liruilongs.github.io]-[~]
└─$获取特定于时间的信息
┌──[rootvms100.liruilongs.github.io]-[~]
└─$kubectl logs argocd-application-controller-0 --since20s
time2023-06-16T20:29:16Z levelerror msgFailed to cache app resources: error setting app resource tree: dial tcp 10.96.153.48:6379: connect: connection refused applicationargocd/guestbook dedup_ms0 diff_ms1 git_ms15114 health_ms0 live_ms0 settings_ms0 sync_ms0
time2023-06-16T20:29:16Z levelinfo msgNo status changes. Skipping patch applicationargocd/guestbook
time2023-06-16T20:29:16Z levelinfo msgReconciliation completed applicationargocd/guestbook dedup_ms0 dest-name dest-namespacedefault dest-serverhttps://kubernetes.default.svc diff_ms1 fields.level0 git_ms15114 health_ms0 live_ms0 settings_ms0 sync_ms0 time_ms15289
time2023-06-16T20:29:18Z levelwarning msgFailed to save clusters info: dial tcp 10.96.153.48:6379: connect: connection refused
time2023-06-16T20:29:28Z levelwarning msgFailed to save clusters info: dial tcp 10.96.153.48:6379: connect: connection refused
┌──[rootvms100.liruilongs.github.io]-[~]
└─$博文部分内容参考
© 文中涉及参考链接内容版权归原作者所有如有侵权请告知 https://medium.com/sudheer.barakers/kubernetes-troubleshooting-3bc4c3a3cb9a © 2018-2023 liruilongergmail.com, All rights reserved. 保持署名-非商用-相同方式共享(CC BY-NC-SA 4.0)