• kubernetes上部署Dragonfly

    部署supernode 部署df-daemon 修改Docker daemon配置 Dragonfly可以很好的节省kubernetes集群下载镜像的带宽,下文记录了在一个已经配置好的kubernetes集群中如何部署Dragonfly。 Dragonfly分为两部分,均部署到namespace kube-system中: supernode,部署在master节点 df-daemon,部署在所有节点 部署supernode 由于supernode需要在/home...


  • fish shell支持kubectl自动补齐

    我在更好用的kubectl里提到,fish shell针对kubectl自动补齐,社区有个项目fish-kubectl-completions可以支持,但是我之前用的时候非常慢,经常需要十几秒才能tab出来结果,试着调试过几次,没找到原因(可能是complete注册太多?),所以姑且先用了zsh。 zsh默认不支持命令行基于历史自动补齐(用过fish的人都知道这个多好用),社区有个插件zsh-autosuggestions,能满足一定的基于历史自动补齐,但是它不完善的一点是,它的历史是所有控制台共...


  • golang如何解析域名

    最近遇到了一个问题。 我们的kube-apiserver配置了OIDC认证,OIDC issuer是添加了dns server记录的,但由于某些原因,我需要覆盖掉dns server的解析,改用hostAlias的IP地址,但是实测发现总是走了DNS解析,虽然/etc/hosts文件已经添加了自定义的hosts记录。而那些没有在dns server注册的域名,还是可以通过 /etc/hosts 解析的。 原因是,kube-apiserver的基础镜像是 busybox ,和 centos 不同,...


  • firecracker

    AWS开源了一个新的虚拟化技术,叫做 firecracker. Firecracker is an open source virtualization technology that is purpose-built for creating and managing secure, multi-tenant container and function-based services that provide serverless operational models. 确实是解决了doc...


  • kubelet如何做GC(Garbage Collection)

    生活处处有GC。 在使用kubernetes的时候,可能会有个疑问:用户在k8s上创建、删除了Deployment就走了,那么在node上残留的docker镜像是谁去删除的?不删除的话,日积月累,迟早耗尽node的硬盘空间。 其实k8s是有Image GC的。不知道你注意到了没有,硬盘空间紧张的时候,会发现下载到某个节点上的image会悄悄消失,其实这就是Image GC在工作。 在每个节点的kubelet配置文件/var/lib/kubelet/config.yaml imageGCHig...


  • 更好用的kubectl

    zsh kubectl auto completion 配置对多集群的访问 kube-ctx/kubens kube-ps1 kubectl是管理kubernetes集群的命令行工具,实际使用的频率非常之高,因此一个更方便的kubectl通常会带来很大的便利性。下面介绍几个很棒的工具。 zsh 其实我更喜欢用fish(传说中90后都在用),但是fish针对kubectl的生态还不够完善(主要是没有auto completion),因此还是先用zsh。 推荐用oh-my-...


  • http cache在Dragonfly中的应用

    阿里开源的Dragonfly对k8s集群上多副本应用的镜像分发有很大帮助,通过p2p网络,可以很好的解决docker registry的压力。 有关蜻蜓的介绍,请参见直击阿里双11神秘技术:PB级大规模文件分发系统“蜻蜓” 首先,docker pull命令,会被dfget proxy截获。然后,由dfget proxy向super node(即cluster manager)发送调度请求,super node在收到请求后会检查对应的下载文件是否已经被缓存到本地,如果没有被缓存,则会从Regi...


  • 墙内安装kubernetes教程

    准备工作 更换apt源为163 安装docker 增加kubernetes aliyun镜像源 安装kubeadm/kubelet/kubectl 关闭swap 配置docker mirror 拉取k8s的包并tag 开始安装master 部署weave网络 准备计算资源 安装weave scope 去年2月我写过一篇kubernets部署备忘 ,当时基于v1.5.2,...


  • Golang官方包依赖管理工具 go mod 简明教程

    go mod是什么 如何使用go mod 更好的控制 go mod是什么 Golang从诞生之初就一直有个被诟病的问题:缺少一个行之有效的“官方”包依赖管理工具。其原因是在Google内部,所有人都是在一个代码库上进行开发的,因此并不是非常需要。但Golang变成一个社区化的工程语言之后,这个问题被放大了。 GOPATH不符合一般开发者习惯,大部分人更习惯maven、node modules之类的方式 GOPATH无法有效的管理版本依赖,没有一个地方能够表明依赖包的具体...


  • kubernetes ingress 健康检测

    问题背景: 当node重启或node上docker服务stop时,由于k8s不会快速将该Pod的endpoint从service上摘除,此时需要ingress能快速发现问题,否则请求流量会被nginx转发到故障的Pod上。 nginx-ingress的解决方法: 当前nginx-ingress支持后端服务的重试,例如下面的upstream,当请求到来时,将对server进行重试: max_fails为在fail_timeout 时间内重试的最大次数;当达到max_fails后,将该server的状...