Xinkun Blog

科学引导思想 技术改变生活

土法搞docker系列之自制docker的graph driver vdisk

Homemade docker.

写在最前 偶然整理,翻出来14年刚开始学docker的时候的好多资料。当时docker刚刚进入国内,还有很多的问题。当时我们的思考方式很简单,docker确实是个好的工具,虽然还不成熟。但是不能因为短时间内造桥不行,就不过河了。我们的方式很简单,先造个小船划过去。由于各种条件的局限,所以很多方法真的是因陋就简,土法上马,一切就是为了抓紧落地。时代更迭、版本变迁,这其中的很多技术方案本身可能...

当我们聊operator时,我们在聊些什么

Talk about operator.

当我们聊operator时,我们在聊些什么 不聊什么 在开始聊operator前,先说说这篇文章里我们不聊什么。我们这里不聊operator的具体实现,不聊operator的由来历史,不聊operator的hello world。如果想了解这些,其实可以从别的很多文章中可以查找到。这里我们把一些常见的概念,如docker、controller、Helm、编排等,与operator进行一下...

kube-liveboard: kubernetes集群可视化工具

kube-liveboard: make your cluster visible.

kube-liveboard 随着kubernetes 集群的增大,对于集群数据选取恰当的形式进行展示有助于直观反映集群的状态,方便发现集群的短板,了解集群的瓶颈。因此,笔者做了kube-liveboard这个项目用以实现以上目标,实现集群状态的可视化。 从apiserver中可以获取所有的资源信息,社区目前有kube-state-metrics项目对各项资源进行分别的统计,并形成met...

详解docker中容器devicemapper设备的挂载流程

Explain the mounting process of devicemapper in docker.

事故起因 版本说明:本文中docker版本主要基于1.10版本,操作系统为centos7。devicemapper在文中缩写为dm。 某个用户的容器启动不起来,启动时候一直报错。通过docker log查看日志,可以看到报错信息如下 Timestamp: 2019-04-01 16:19:26.33690413 +0800 CST Code: System error Mes...

换个角度聊聊FaaS

Let's talk about FaaS from another angle.

换个角度聊聊FaaS Serverless/FaaS伴随着k8s的热度增加,也成为了热门话题。相关文章介绍了很多,这里笔者不一一赘述,而是从个人见解上聊聊关于FaaS的架构和意义。 FaaS可能的架构优化 从AppEngine到docker的演变启发 在笔者上学时,云计算刚刚火热,IaaS/PaaS/SaaS的基础概念已经逐渐深入人心。其中PaaS平台的代表形式就是App Engin...

kubernetes容器删除时快速释放ip的方案

Quick release ip scheme when kubernetes container is deleted.

问题的来由 在kubernetes集群的生产中,经常遇到这样的一个问题,就是在应用大规模更新时,大量容器删除而后大量容器创建,创建的容器需要很长时间才能就绪。这其中一个可能的原因,就是大量容器删除释放ip过于缓慢,导致新创建的容器无法及时获取ip,从而无法及时启动。 这种情况普遍存在于ip池较小或者应用升级需要ip保持不变的情景下,具有较为普遍的意义。针对这一情况,笔者先前做过一个方案用...

使用littleTools简化docker/kubectl的命令

Simplify the docker / kubectl command with littleTools.

littleTools littleTools是我根据日常运维时编写的一个小工具,开源在了https://github.com/xuxinkun/littleTools上。 littleTools包含一组简短命令,主要用于简化某些命令的输入。目前littleTools有docker-tools和kube-tools两部分,主要用于简化命令docker和kubectl的输入。例如,如果要进...

使用ansible kubectl插件连接kubernetes pod以及实现原理

Use ansible to connect to pods of kubernetes.

ansible kubectl connection plugin ansible是目前业界非常火热的自动化运维工具。ansible可以通过ssh连接到目标机器上,从而完成指定的命令或者操作。 在kubernetes集群中,因为并不是所有的服务都是那么容器化。有时候也会用到ansible进行一些批量运维的工作。 一种方式是可以在容器中启动ssh,然后再去连接执行。但是并不是所有的容器都会启...

解析docker中的环境变量使用和常见问题解决

Enviroment in docker.

docker容器中的环境变量 docker可以为容器配置环境变量。配置的途径有两种: 在制作镜像时,通过ENV命令为镜像增加环境变量。在容器启动时使用该环境变量。 在容器启动时候,通过参数配置环境变量,如果与镜像中有重复的环境变量,会覆盖镜像的环境变量。 使用docker exec {containerID} env即可查看容器中生效的环境变量。 [root@localh...

使用kubesql进行kubernetes资源查询

Use kubesql to query the resources of kubernetes.

kubesql kubesql(https://github.com/xuxinkun/kubesql)是我最近开发的一个使用sql查询kubernetes资源的工具。诸如node,pod等kubernetes的资源被处理为table。而后可以使用sql语句对其进行查询。 例如,所有pod都很容易从apiserver中获取。但是想要计算每个节点上的pod数量并不容易。但是使用了kubes...