V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
hansonwang99
V2EX  ›  程序员

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

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

    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   ·   实用小工具   ·   1301 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 17:42 · PVG 01:42 · LAX 09:42 · JFK 12:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.