程序锅

  • 首页
  • 分类
  • 标签
  • 归档
  • 关于

  • 搜索
基础知识 Etcd LeetCode 计算机体系结构 Kubernetes Containerd Docker 容器 云原生 Serverless 项目开发维护 ELF 深入理解程序 Tmux Vim Linux Kernel Linux numpy matplotlib 机器学习 MQTT 网络基础 Thrift RPC OS 操作系统 Clang 研途 数据结构和算法 Java 编程语言 Golang Python 个人网站搭建 Nginx 计算机通用技术 Git

容器 | 如何解决容器相关的问题

发表于 2021-07-13 | 分类于 容器 | 0 | 阅读次数 1919

容器问题虽然有很多类型,既有基本功能问题,也有性能问题,还有不少稳定性问题。但大部分问题,最终都会归结到 Linux 操作系统上。Linux 操作系统不外乎是进程管理、内存管理、文件系统、网络协议栈,再加上一些安全管理。容器的问题就都可以投射到 Linux 操作系统这些模块上了。当然了,容器还有自己的特殊性,Linux 内核原来的特性加上 Namespace 和 Cgroups 会带来的变化。

解决容器问题时我们需要的一个态度:不要浅尝辄止,要刨根问底。

解决容器问题的两个步骤:

  1. 化繁为简,重现问题。

    想要做到这一点,倒推回去,还是需要我们对基本的概念足够了解。只有对每个模块的概念都很清晰,我们才能对复杂问题做拆分。能够对问题做拆分是不是就够了呢?其实还不够,我自己有一个判断标准,就是还要能够写模拟程序,看是否可以用最简单的程序来重现问题。如果我们能用简单的代码程序重现问题,那么问题也就解决了一半。

  2. 把黑盒系统变成白盒系统。

    我在前面提到过,容器的问题大多都会归结到 Linux 系统上。Linux 系统从内核、库函数以及服务程序上看,虽然都是开源的,但是它运行在生产环境的时候,几乎就是一个黑盒。之所以说系统是黑盒,一方面是因为这个系统太庞大,太复杂了;另一方面,在实际运行的时候,只有很少的 log 会记录运行的过程和参数。所以,在出问题的时候,我们无法知道问题对应的代码,我们也不可能在生产环境中随心所欲地加 debug log。

    因此,我们就需要想点办法把它变成白盒,才能去排查和解决问题。具体怎么做呢?这里需要我们熟练地掌握调试工具,这样才能把某些函数变成“白盒”,从而找到复杂问题的根本原因,再对症下药。我们熟练掌握工具有个重要前提,就是从全局上去掌握 Linux 系统以及容器,回归到底层原理去看问题。可以说,你把基础概念吃透了,练好了“内功心法”,有了这个底子,工具运用是水到渠成的事儿。

巨人的肩膀

  1. 极客时间.《容器实战》
卷死我
dawnguo 微信支付

微信支付

dawnguo 支付宝

支付宝

  • 本文作者: dawnguo
  • 本文链接: /archives/144
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# 容器
容器 | 容器网络
容器 | 容器实现原理-Docker、Containerd 使用的 runc 的实现
  • 文章目录
  • 站点概览
dawnguo

dawnguo

215 日志
24 分类
37 标签
RSS
Creative Commons
© 2018 — 2025 程序锅
0%