摘要: kubernetes社区非常活跃,每季度都会发布一个release。但是线上集群业务可用性要求较高,场景复杂,任何微小的变更都需要非常小心,此时跟随社区版本进行升级略显吃力。但是为了能够使用到最新的一些feature我们必须不定期进行一些升级操作,在经历了一次线上集群的升级操作,踩完一些坑之后,分享 阅读全文
posted @ 2019-08-07 17:26 gaorong404 阅读(6256) 评论(10) 推荐(3) 编辑
摘要: Background kubernetes是master-slave结构,master node是集群的大脑, 当master node发生故障时整个集群都"out of control"。master node中最重要的当属apiserver组件, 它负责处理所有请求, 并持久化状态到etcd。 阅读全文
posted @ 2019-05-28 16:00 gaorong404 阅读(19302) 评论(3) 推荐(1) 编辑
摘要: 请结合源码阅读,本文只是总结一下,源码里有详细的注释。基于:go1.12.4 http.Client 表示一个http client端,用来处理HTTP相关的工作,例如cookies, redirect, timeout等工作,其内部包含一个Transport,为RountTripper inter 阅读全文
posted @ 2019-05-21 09:41 gaorong404 阅读(8909) 评论(1) 推荐(0) 编辑
摘要: background docker docker的日志输出可以通过指定driver输出到不同的位置,常用的是 和`json file journald journald json file /var/lib/docker/containers/${docker uid} log opt json f 阅读全文
posted @ 2019-05-17 17:03 gaorong404 阅读(725) 评论(0) 推荐(0) 编辑
摘要: Highlight 本文会介绍kubernetes中关于集群驱逐的相关参数, 合理设置驱逐速率的考虑因素, 但是不会涉及node层面资源的驱逐阈值的设置。 Basic 在kubernetes中, 如果一个node出现故障, 例如节点宕机或与节点网络异常, controller manager中的no 阅读全文
posted @ 2019-05-07 09:31 gaorong404 阅读(832) 评论(0) 推荐(0) 编辑
摘要: kubernetes等容器技术可以将所有的业务进程运行在公共的资源池中,提高资源利用率,节约成本,但是为避免不同进程之间相互干扰,对底层docker, kubernetes的隔离性就有了更高的要求,kubernetes作为一门新盛的技术,在这方面还不够成熟, 近期在一个staging集群就发生了,i 阅读全文
posted @ 2019-03-04 17:42 gaorong404 阅读(2310) 评论(0) 推荐(1) 编辑
摘要: Compile git version inside go binary Abstract 在我们编写的程序中总是希望可以直接查阅程序的版本,通过 参数就会输出如下版本信息。 我们可以直接将版本信息写在源码里面,但是每次都需要修改源码,比较繁琐; golang 提供了 flag在编译时动态注入版本信 阅读全文
posted @ 2018-11-25 20:29 gaorong404 阅读(370) 评论(0) 推荐(0) 编辑
摘要: storage driver的选择依据很多的条件,比如发行版版本,团队技术积累,稳定性等。 device mapper是redhat/centos中最适合的, 稳定性也可以,内核原生支持,基于块设备,对于高负载情况下可以性能较好,支持quota。 缺点是:占用内存较多,启动同一个镜像的多个实例,需要 阅读全文
posted @ 2018-10-03 16:31 gaorong404 阅读(847) 评论(1) 推荐(1) 编辑
摘要: 本文主要介绍k8s与LVM结合使用的场景,在原生的k8s中对于本地存储提供了hostPath与emptyDir两种volme,hostPath是直接将文件存储在本地主机上,存在的问题是无法进行quota管理,单个用户就可能将所有的磁盘打满;在kubernetes 1.10 成为beta版本,可以对e 阅读全文
posted @ 2018-07-23 20:42 gaorong404 阅读(2099) 评论(0) 推荐(0) 编辑
摘要: 在将k8s从1.7.9 升级到1.10.2 之后,发现删除pod一直处于terminating状态, 调查发现删不掉的pod都有一个特点就是pod yaml中command部分写错了,如下所示: 可以看到此时pod中的command为一个不存在的命令,创建该yaml后会返回如下状态: 在宿主机上 可 阅读全文
posted @ 2018-07-06 22:48 gaorong404 阅读(1563) 评论(0) 推荐(0) 编辑