利用 K8S 技术栈打造个人私有云(连载之:初章) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
hansonwang99
V2EX    程序员

利用 K8S 技术栈打造个人私有云(连载之:初章)

  •  1  
  •   hansonwang99
    hansonwang99 2018-03-12 10:55:37 +08:00 845 次点击
    这是一个创建于 2775 天前的主题,其中的信息可能已经有所发展或是发生改变。

    iMac Pro


    我的想法是什么

    最近在学习 Docker 技术,相信 Docker 技术大家都有所了解,Docker 类似于虚拟机(但与虚拟机又有本质不同),提供进程级别的隔离。我们可以利用 Docker 来方便地来做很多事情,比如搭建一个翻墙 VPN、搞一个爬虫、弄一个私人博客,部署一个裸机上比较难以安装的环境等等……可以说几乎没有什么目的办不到,这简直是宅男老铁们的福利啊!

    但话又说回来,单个 Docker 所能发挥的作用毕竟有限,也不便于批量管理,更满足不了各种量比较大的业务场景所需的高可用、弹性伸缩等特性,所以 Docker 得组集群来并赋予各种完善的调度机制才能发挥强大的技术优势。既然要组集群那就涉及诸如 Docker 的资源调度、管理等等一系列问题。Docker 集群技术发展得很火热, 目前涉及 Docker 集群的三个主要的技术无外乎 Docker Swarm、Kubernetes、Mesos 三种主流方案。

    Docker Swarm 是 Docker 提供的原生集群技术,我只做过一些初步实践(Docker Swarm 集群初探),发现还比较容易上手,大家也可以自行去深入学习一下,我就不多说了。

    Kubernetes (以下简称 K8S )源自于 Google,是一个为容器化应用提供自动部署、扩容和管理的开源项目,社区非常活跃,也是用得更加广泛的 Docker 集群技术。我最近也是花了一些时间在这上面进行学习,但由于缺少实际实践经验,总有点不痛不痒的感觉,所以没办法只能自己来创造一些实践,就想着用它来做出点什么出来。

    好,背景介绍完了。那我到底想用我刚自学的 Docker 和 Kubernetes 来做一件什么事情呢?听我慢慢道来...


    当下云主机可以说非常火热了,不知道大家是否用过 BAT 等一系列厂商旗下 XX 云所提供的云主机服务。我们只需要买一个云主机,然后就可以尽情地去上面干各种事情了,常见的比如建站、搭博客、部署服务甚至直接买一个 windows 云主机直接用于办公。

    以某个云服务为例,来张图看看:

    某个云服务的控制台

    然后我们就可以进去付费创建一个云主机自己使用,就像下面这样:

    实例化(创建)云主机

    这种服务如今如此地火热,我想这背后肯定少不了的就是容器技术和集群技术的加持,想到这里我想大家应该明白我这篇文章的主题了。是的,本篇文章及接下来的连载系列文章将详细讲述如何用 k8s 技术栈打造一个属于自己的私有云服务(取名为 SheepCloud,怎么样是不是很时髦...)。这样的话,我自己在家就可以申请创建很多云主机节点,然后自己想做啥就做啥,什么云计算、分布式实验统统不都可以免费进行了!

    嗯,理想是好的,接下来还有一大堆事情要做呢...


    我准备打造什么样形式的个人私有云

    其实上面已经说过了,准备模仿那些云服务提供商的云主机功能,先在网页上申请创建云主机,创建成功后分配 IP 地址 /子网号 + 用户名 + 密码 给用户,这样用户就可以用用 ssh 方式连入分配到的具有独立 IP 的云主机中进行工作,这样就和那些服务商提供的云主机服务没有什么不同了。

    所以首先得有前端页面,我自己用 Vue.js 写了一个 Demo (目前还未跟后端联调),让大家有个感性的认识:

    SheepCloud 控制台界面

    我准备如何来入手这个小项目

    本来我的初衷就是想深入实践一下 Docker 和 Kubernetes (以下简称 K8S )是怎么玩的,但东西还真不少,总结了一下涉及的技术,可能还不止这些:

    • Docker:不用多说,毕竟负责容器的落地,云主机本质上就是一个 win 或 linux 容器
    • Kubernetes:管理 Docker 的集群技术,这里面是有很多 kube 的组件
    • flannel:负责节点中容器间的通信以及私有云各个实例的 IP 地址规划
    • etcd:分布式数据库,kubernetes 和 flannel 都需要它
    • SpringBt:驱动后端服务
    • Vue.js:编写私有云前端 WEB 页面 …

    我自己规划了一个基本路线来入手:

    • 熟悉 Docker
    • 熟悉 Kubernetes 基本概念并搭建 K8S 集群
    • K8S 集群理解与练手实验
    • 基础镜像制作与实验,能完成单个操作系统容器的手动管理
    • K8S 资源控制代码编写,能实现集群对容器资源的自动控制
    • 私有云客户端 WEB 前端页面编写
    • 前后端联调
    • 总结输出

    我准备输出哪些东西

    准备输出连载文章 + 源码,这篇文章是连载系列的第一篇

    总结

    学以致用这个词我近来感触颇深,学一门技术,如果不辅之以实践,真的很难深入其中。浮在表面不痛不痒地学习真心很不爽,没有实践,自己制造实践也要上!大家共勉

    sinalvee
        1
    sinalvee  
       2018-03-12 18:45:39 +08:00
    赞,mark
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1040 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    Worl is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 18:32 PVG 02:32 LAX 11:32 JFK 14:32
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86