当前位置: 首页 > news >正文

如何用Ubuntu和Xen来设置Kubernetes?

这篇博客描述了我如何设置本地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,我们之后会用来启动虚拟机。

clipboard.png

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

clipboard.png

看起来不错!

安装Kubernetes

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

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

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

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

clipboard.png

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

clipboard.png

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

clipboard.png

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

clipboard.png

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

clipboard.png

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

clipboard.png

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

clipboard.png

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

clipboard.png

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

可能发生的状况:

  • 下载Flannel镜像

  • Kubelet开启和下载超kube

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

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

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

clipboard.png

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

clipboard.png

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

clipboard.png

让我们来看:

clipboard.png

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

clipboard.png

现在:

clipboard.png

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集群。是时候来玩一下它了!

原文链接

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

相关文章:

  • 全局Threshold和动态阈值分割Dyn_Threshold的应用场景
  • Streaming源码解读 mapWithState-2
  • 你真的知道 == 和 equals 的区别吗?
  • 关于错误提示:此实现不是 Windows 平台 FIPS 验证的加密算法的一部分的解决方案...
  • 【c++进阶:c++ algorithm的常用函数】
  • (转) RFS+AutoItLibrary测试web对话框
  • 刚刚接触python的感想
  • linux下使用hiredis异步API实现sub/pub消息订阅和发布的功能
  • 第70届(2019)IMO中国国家队选拔考试试题
  • xml编码格式在tomcat下运行出错,eclipse里面直接运行没有问题
  • 微服务架构 SpringCloud(二)Eureka(服务注册和服务发现基础篇)
  • Android图片缓存之Glide进阶
  • css(二):高度与文档流,line-box与box,宽度,position与
  • SQL Server2005作业执行失败的解决办法
  • 进度条14
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • 2019年如何成为全栈工程师?
  • AWS实战 - 利用IAM对S3做访问控制
  • classpath对获取配置文件的影响
  • create-react-app项目添加less配置
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • DOM的那些事
  • ES6之路之模块详解
  • Java IO学习笔记一
  • PHP的类修饰符与访问修饰符
  • Shell编程
  • SQLServer插入数据
  • Tornado学习笔记(1)
  • 从零开始在ubuntu上搭建node开发环境
  • 分布式任务队列Celery
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 基于Vue2全家桶的移动端AppDEMO实现
  • ------- 计算机网络基础
  • 前端相关框架总和
  • 什么软件可以剪辑音乐?
  • 思维导图—你不知道的JavaScript中卷
  • 想写好前端,先练好内功
  • 学习使用ExpressJS 4.0中的新Router
  • 智能合约Solidity教程-事件和日志(一)
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (C语言)fread与fwrite详解
  • (libusb) usb口自动刷新
  • (搬运以学习)flask 上下文的实现
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (十六)串口UART
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)EOS中账户、钱包和密钥的关系
  • .bat批处理(九):替换带有等号=的字符串的子串