Brains


Algorithm、Machine Learning、Search、cloud computing
on Docker, HA, registry

基于kubernetes的Docker Registry的高可用部署

写在前面 在kubernetes集群中运维生成环境的服务已经长达半年多时间,我们遇到了很多问题,也踩到了很多坑,其中因为 Docker Registry 的故障而导致的不可用事件还是挺多的,这些问题常常被用户埋怨。 Docker Registry 作为镜像仓库、数据中心,在整个服务发布流程中是异常关键的一环。由于之前初期我们搭建的 Docker Registry 是通过 docker run 跑在单机的方式,这种情况下不仅有单点问题,还面临着磁盘损坏和镜像丢失的危险性。 后来为了提高平台的稳定性和可靠性,也为了我的毕业论文,特地的花时间来调研 Docker Registry 的部署和设计方案,这个方案不仅采纳了开源社区和其他公司的部署策略,同时也结合了本公司内部的基础上而设计的一套高可用的 Docker Registry 方案。 调研初期 在2017年3月份时候有幸参加了 ebay 公司举办了亿贝TechDay活动,在这次公开技术分享中,我不仅见识了由DaoCloud技术合伙人孙宏亮大神所分享的Docker安全思考,也同时领略了其他公司关于kubernetes、关于docker、关于registry的思考和尝试。 携程、京东的 Docker Registry 的部署过程中,都用到了一个harbor的开源镜像管理软件,这是我第一次接触这个项目。
Read More
on kubernetes, HA, Install

Kubernetes HA集群搭建详细指南

K8s HA集群的运行主要由k8s基本组件、etcd集群和docker运行环境组成的,其中etcd集群可以理解为k8s集群的数据库,它主要作用是服务发现、全局配置、以及保存一些路由相关的信息。为了保证k8s集群的高可用性,我们需要保证etcd存储数据的可靠性,所以在这个我们在搭建k8s集群的过程中搭建了一个etcd HA集群。我们搭建k8s HA集群的次序如下所示: 1、 搭建etcd集群 2、 启动k8s master组件 3、 启动k8s node组件 搭建ETCD集群 etcd集群搭建的方式比较多,可以搭建一个全新的集群,也可以从已有的etcd中,将数据迁移到一个新集群上。 创建一个全新的集群 创建一个全新的集群过程比较简单,这里我们采取的是在三台机器上搭建了一个etcd集群。假如说etcd的运行路径为/home/work/etcd,我们需要手动创建一个data-dir文件夹用于保存etcd中的数据以及集群的一些属性信息,然后在每台机器上启动start-etcd.sh脚本: #!/bin/bash HOSTNAME="http://sandbox-1" CLUSTER="etcd0=http://sandbox-3:2380,etcd1=http://sandbox-2:2380,
Read More
on kubernetes, HA

Kubernetes高可用集群的部署方案

写在前面 这篇文章将介绍如何搭建一个高可用的kubernetes集群,主要参考的文档是:http://kubernetes.io/docs/admin/high-availability/。高可用性是一种需求,有多种选择可以实现这个需求,这里我们采用了最简单的方式搭建了这个集群,即在单个master节点的集群的基础上,部署一个高可用的Etcd集群、创建多个master Pod,并建立了一个对应的Service以实现多个master的负载均衡,最后将所有的Work Node全部注册到Service暴露的端口上。下面是集群的架构部署图: 注:这种高可用部署方案不可行,存在单点问题,查看另一篇文章的解决方案: Kubernetes HA集群搭建详细指南 高可用的部署过程 按照架构图的部署方式,需要做以下几步: 1、部署一个单master节点的Cluster 1#,单个master的集群部署方式比较简单,详情参考:https://get.k8s.io 2、其次我们应该部署一个高可用的Etcd集群Cluster 2#,详情参考:高可用Etcd集群搭建过程 3、在Cluster 1#中新建几个Pod,这个Pod里面运行着master所需要的全部组件 4、设置一个Service,
Read More