Xinkun Blog

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

使用kubeadm进行单master(single master)和高可用(HA)kubernetes集群部署

deploy k8s with kubeadm.

kubeadm部署k8s 使用kubeadm进行k8s的部署主要分为以下几个步骤: 环境预装: 主要安装docker、kubeadm等相关工具。 集群部署: 集群部署分为single master(单master,只有一个master节点)和高可用HA集群部署两种模式。主要部署k8s的相关组件。本文将分别做介绍。 网络部署: 部署网络环境。本文以flannel为例进行部署。...

ingress在物理机上的nodePort和hostNetwork两种部署方式解析及比较

deploy ingress to baremetal.

ingress controller在物理机上的两种部署方式 ingress controller(ingress-nginx)负责k8s中的7层负载均衡。其在物理机中有多种部署方式。本文中主要选择了nodePort和hostNetwork两种部署方式进行介绍。主要原因是这两种部署方式不需要借助于其他组件,直接使用的是k8s的基础组件和使用方式,较为容易理解和排障。 注:本文中的k...

docker/kubernetes国内源/镜像源解决方式

docker/kubernetes source in cn.

最近在使用kubeadm时,被各种连接不上搞到崩溃。费了很多力气,基本都解决了。这里统一整理了国内的一些镜像源,apt源,kubeadm源等,以便查阅。 国内镜像源 Azure China提供了目前用过的质量最好的镜像源,涵盖了docker.io,gcr.io,quay.io。无论是速度还是覆盖范围,体验都极佳。而且都支持匿名拉取,也就是不需要登录。这点特别友好。azk8s.cn支持的镜...

flannel vxlan工作基本原理及常见排障思路

Flannel vxlan troubleshooting process.

写在前面 最近用kubeadm鼓捣了几个cluster集群测试用,网络用的flannel。因为这些机器都不是纯净的环境(以前部署过其他的k8s或者有一些特别的设置),所以部署起来遇到了很多问题。看了下相关的文章,梳理了flannel的vxlan的工作原理,成功对这几个环境进行了排障。本文主要是相关流程的笔记记录。 容器间通信 本文以两个节点上的两个容器间通信为例,介绍网络报文的流转过程...

土法搞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保持不变的情景下,具有较为普遍的意义。针对这一情况,笔者先前做过一个方案用...