• 如何优雅地结束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 >>>
  • Kubernetes中存储持久化方案--全览基础篇

    很早就想写这篇文章,毕竟已经基于Kubernetes开发有一段时间了,需要做一个阶段性总结。 按照大纲,将会有三篇, 其中第一篇为基础篇章,主要讲解kubernetes中的存储概念以及基本使用,包括PV,PVC和StorageClass 第二遍为中级篇章,只要结合源码讲解kubernetes存储细节以及流程,如Kubelet,ControllerManager 第三篇为深入csi,手把手教学任意存储厂商编写驱动教程 本篇作为基础会把kubernetes涉及的存储概念交待清楚并配以实战.

    Read More >>>