如何用 Ubuntu 和 Xen 来设置 Kubernetes? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
caicloud2015
V2EX    Ubuntu

如何用 Ubuntu 和 Xen 来设置 Kubernetes?

  •  
  •   caicloud2015 2016-08-11 15:30:51 +08:00 2542 次点击
    这是一个创建于 3415 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这篇博客描述了我如何设置本地 Kubernetes 。如果你想要自己设置 Kubernetes ,那么点击这里参照指导:点我。在我刚开始接触这些内容的时候,我是多么希望能有这样一篇攻略帖!

    我想要运行自己的 Kubernetes 部署,来运行应用程序和试验。我不仅仅只是想测试 Kubernetes ,还想让它 24 小时全天候运行。做到这样最简单的方法就是使用谷歌 GCE 或者 AWS 。如果使用这两种方法,你就不需要花那么多钱在保持基础安装运行。

    考虑了很多选择之后(包括运行树莓派集群),我得出结论,我最好的设置就是运行单个主持很多虚拟机的物理服务器。

    我选了 Xen 作为我的超管理器, Ubuntu 作为“ dom0 ”(之后会对这个进行详述), Core OS 作为我的 Kubernetes 主机。以下是我的设置。

    硬件

    ○Dell T20 服务器

    ○Intel i5-4590

    ○16GB RAM

    ○120 GB SSD

    软件

    超管理器: Xen 超管理器/ Ubuntu16.04 。我发现自己完全被“ dom0 ”的谈论搞糊涂了,但是要点是:安装 Ubuntu16.04 在自己的服务器上,然后你安装(通过 apt - get ) Xen ,安装 Xen 就好像用你的原始 Ubuntu 安装虚拟机一样。这个虚拟机叫做“ dem0 ”,可以用来管理你的其它虚拟机。(另外困扰的就是 Xen 不是 Xen 服务器,你可以完全忽略 Xen 服务器这个商业产品)。

    Kubernetes OS: Core OS Alpha Channel 。现在为止, Stable 不包括 kubelet (这个正是我们需要的),所以我们使用 Alpha 。这就是我选择的,因为它支持 Kubernetes 既轻松又简单。

    安装 Xen

    在一个新的 Ubuntu16.04 上面,安装 Xen , libvirt 和 virtinst 。将它作为默认引导点,并且重新启动。 virtinst 给我们一个 CLI ,我们之后会用来启动虚拟机。

    之后回来的就是原始 Ubuntu ,作为一个虚拟机运行在 Xen 超管理器上。因为是原始安装,所以我们并不知道到底哪些东西是改变了的。我们来查看一下:

    看起来不错!

    安装 Kubernetes

    Kubernetes 和这些漂亮的脚本从基础层面为你设置整个集群。我发现的问题就是,我想要自己管理(或者理解)这些软件。我并不想要一个迷之 bash 脚本来替我处理一切问题。

    相反,我创建了我自成一套的脚本,这个脚本少生成和模版,可能对某些例子来说是有用的。这里展示的就是如何使用他们。

    我们会尽量少使用我的东西下面的 git 存储库是 4Core OS 云配置文件。这些定义配置(网络设置,应用程序)。也有为集群配置来生成我们的 SSL 证书。

    所以,从 Github 抓取我的文件,从最新的 CoreOS Alpha 抓取:

    现在为 master , node1 , node2 , node3 来创建一个磁盘:

    如果你没有 SSH 密钥的话,你可能需要生成一个:

    然后我们把我们的 SSH 密钥放到云端文件:

    我们也需要生成我们的证书:

    然后放入我们生成的证书到 master 节点中:

    配置完成,我们现在可以验证双重检查:

    如果通过了(从服务器看是“ null ”),那就使用这些磁盘创建一个 Core OS 虚拟机:

    这就会开启 4 个运行在 Core OS 上面的虚拟机,我们的云配置文件。这个取决于你在哪里运行(网速,服务器电源),要花费比较长的时间才能启动和运行。

    可能发生的状况:

    ○下载 Flannel 镜像

    ○Kubelet 开启和下载超 kube

    ○容器为 API 服务器, controller 管理员, master 上的调度器开启

    ○为 kube - proxy 的容器在节点上启动

    如果你需要,可以连接到控制台,并且监控节点启动:

    你也可以 ssh 到 master ,然后查看 journalctl :

    所以,运行起来了吗?让我们来使用 kubectl (我们先要在本地安装一下这个):

    让我们来看:

    最后一条,如果我们尝试,并且列出 pods (正在运行的进程),我们得不到任何东西。我们需要创建“ kube - system ”命名空间。这个很容易:

    现在:

    woohoo !

    结论

    所以我们事实上完成了什么呢?我们已经将 Ubuntu 服务器移入到了一个 Xen 管理程序。在那台超管理器上,我们创建了 4 个运行在 Core OS 上的虚拟机。在我的 Git 存储库里的 Core OS 文件,我们设置了一个 Core OS 安装,运行在 master Kubernetes 组件上,其它三个则运行在节点组件上。

    我们有很多方法让 Kubernetes 运行在 Core OS 上面。特别的一点就是我们按照如下流程来设置:

    ○Flannel service 可以用来处理我们的网络。它允许一个节点上的容器跟其它节点上的容器进行通信。

    ○etcd service 这就是 Kubernetes 保持状态的地方。

    ○Docker service Docker 就是 Kubernetes 设置开启镜像的方式。

    ○kubelet service 这就是 kubernetes 组件中唯一作为系统 service 的。我们使用 kubelet 来加入我们的 Kubernetes 集群,然后启动其它 kubernetes 应用程序。

    跟系统 service 一样,我们也安装了以下的东西作为 services ,由 Kubernetes 管理,我们通过在 /etc/kubernetes/manifests/中替换 Kubernetes 文件来完成。

    kubelet service 监控这个目录,并且基于它找到的东西来启动应用程序。

    ○kube - apiserver

    ○kube - scheduler

    ○kube - controller - manager

    ○kube - proxy

    就酱!我们还没有一个功能完全的 Kubernetes 集群。是时候来玩一下它了!

    原文链接: http://andrewmichaelsmith.com/2016/05/my-kubernetes-setup/#rd?sukey=3903d1d3b699c208044fe7370c2c0da4ad0e8778b3d89c41fe76f46b2d628d2e61027691212dea074c8e358d12d11ab0

    (如果需要转载,请联系我们,尊重知识产权人人有责:)

    julyclyde
        1
    julyclyde  
       2016-08-11 23:41:41 +08:00
    恕我直言
    这跟 xen 有啥关系?
    关于   帮助文档     自助推广系统     博客     API     FAQ     Solana     5214 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 39ms UTC 08:31 PVG 16:31 LAX 00:31 JFK 03:31
    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