如何用Ubuntu和Xen来设置Kubernetes?

这篇博客描述了我如何设置本地Kubernetes。若是你想要本身设置Kubernetes,那么点击这里参照指导:http://kubernetes.io/docs/getting-started-guides/scratch/。在我刚开始接触这些内容的时候,我是多么但愿能有这样一篇攻略帖!node

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

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

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

硬件

  • Dell T20 服务器服务器

  • Intel i5-4590网络

  • 16GB RAMdom

  • 120 GB SSDssh

软件

超管理器:Xen 超管理器/Ubuntu16.04。我发现本身彻底被“dom0”的谈论搞糊涂了,可是要点是:安装Ubuntu16.04在本身的服务器上,而后你安装(经过apt-get)Xen,安装Xen就好像用你的原始Ubuntu安装虚拟机同样。这个虚拟机叫作“dem0”,能够用来管理你的其它虚拟机。ide

(另外困扰的就是——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

(若是须要转载,请联系咱们哦,尊重知识产权人人有责:)

相关文章
相关标签/搜索