• Linux下利用strace调试docker的小技能

    strace - trace system calls and signals strace在前面的文章其实有用到过。 strace是Linux上内置的一个工具,能非常方便用来诊断问题以及调试程序等,因为它可记录和展示一条命令究竟是如何进行系统调用(system calls) 以及其中的信号处理情况。

    Read More >>>
  • 如何优雅地结束Pod或容器进程

    众所周知,docker容器利用linux namespace原理将应用隔离在独立的环境,但它的本质上还是一个进程,而且是跑在linux系统之上的。一般来说,我们使用的Linux系统或者Windows又或者macOS在关机的时候都不会直接拔电源,而是点关机按钮或者使用命令行输入诸如`shutdown now`此类的命令优雅的关机。那是因为通常不应该直接强行退出应用程序,而是在退出之前通过信号机制给应用进程发送指定的信号,应用收到信号后进行状态保存,资源回收等操作最后才安全地退出。

    Read More >>>
  • kubernetes扩展基础之controller

    controller是kubernetes中非常重要的角色,控制器负责协调不同的状态,相当于大脑的角色。在使用kubernetes的过程 或者在扩展kubernetes做其他开发中基本上都会用到。因此在这里记录下。

    Read More >>>
  • 图解Raft算法和分布式系统网络分区问题

    Raft是分布式系统中常用的基于Paxos的Consensus算法。相比于Paxos,Raft设计采用了较少的状态,并且是一种更简单、更易于理解的算法。 目前有不少的应用都是采用raft协议来保证集群节点一致性,比如ectd,consul,以及当前我们在做的存储产品也是, 网上看了下,介绍有点啰嗦而且复杂化了,因此这里做个简单总结。

    Read More >>>
  • 深入了解kubernetes存储细节以及流程解析

    这是Kubernetes存储系列的第二篇文章。上一篇花了一些篇幅解释了Kubernetes中的一些存储概念,最终带出了关键的一点-----动态供应。在编排系统中,存储资源也应该像Pod一样,可以动态规划的,这种方式又称之为动态供应(dynamic provision)。为了实现这个目标,k8s社区提出了好几种方案,今天在此进行探索一番。

    Read More >>>