Hoyho

thinking

Golang


如何优雅地结束Pod或容器进程

一般来说,我们使用的Linux系统或者Windows又或者macOS在关机的时候都不会直接拔电源,而是点关机按钮或者使用命令行 输入诸如shutdown now此类的命令优雅的关机。那是因为通常不应该直接强行退出应用程序,而是在退出之前通过信号机制给应用进程发送指定的信号. 应用收到信号后进行状态保存,资源回收等操作最后才安全地退出  …

Docker Kubernetes Golang

Kubernetes存储原理源码剖析-Attach/Detach Controller

在上文中,已经通过例子和大量图解解释k8s编排系统中存储资源的调度,数据流等细节。 但是上次的文章主要都是从原理上进行解释,包括in tree volume plugin,external provisioner以及最新的CSI。 他们原理上是相通的,这也是本次要深入挖掘的代码环节。  …

Kubernetes Golang

深入了解kubernetes存储细节以及流程解析

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

Kubernetes Golang Container

Kubernetes中存储持久化方案--全览基础篇

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

Kubernetes Golang Container

使用golang理解Linux namespace(七)-UTS

上文我们使用了Network这个namespace写了个demo演示了网络空间,把veth一端塞进容器里头,并解决了容器网络问题。目前为止,这个go写的简单容器已经演示了好几个Linux的命名空间的使用。今天的主题是使用UTS namespace。  …

Docker Linux Golang

使用golang理解Linux namespace(六)-Network

上一回合使用了Mount命名空间,并下载了一个很小的linux文件系统alpline作为镜像,然后整体运行起来之后就是一个简单的linux容器。但是实际操作起来会发现,这个容器的网络并没有设置好。因此这里要介绍下和网络相关的命名空间Network  …

Docker Linux Golang

使用golang理解Linux namespace(五)-Mount

众所周知,在Linux上使用容器有个天大的好处,就是可以把不同的系统打包运行,虽然你的宿主机可能就是CentOS,但是如果使用了容器技术,你可以同时运行alpline,Debian,Ubuntu等其他的你喜欢的发行版,关键是这些容器共享宿主的资源,因此,每个容器是非常轻量级的,不同虚拟机,这是如何做到的  …

Docker Linux Golang