sme*_*eeb 12 docker mesos coreos fleet
我正试图围绕CoreOS,我仔细阅读他们的官方文档,一些随机文章,甚至看到他们的CTO的这个优秀的演示文稿.
systemd在群集级别首先,如果我的上述断言不正确或以任何方式误导,请先纠正我!假设我或多或少走上正轨,我在这里有一些担忧:
这里有很多活动部件.已发布的答案非常好.我认为你得到的任何答案都会有意见.在我尝试获得100个赏金点时,我想我会通过你的打卡列表:-)
我现在每天都在使用CoreOS/Flannel/Kubernetes/Fleet大约6个月.当你在引言中发布网址时我决定观看它.哇,很棒的演讲.我认为布兰登飞利浦是一位非常好的老师.我喜欢他介绍每种技术时所采用的方式.我会向任何人推荐该教程.
CoreOS是一个基于Linux的操作系统.它非常精简,没有额外的运行.对我来说,它做了以下事情:
CoreOS并不一定要求您要运行的所有内容都必须是容器.它将运行unix框将运行的任何内容.yum和apt-get明显缺失,但包括wget.因此,您可以通过wget"安装"程序,库,甚至是apt-get,并且可以去污染CoreOS基础.但这并不好.你真的想保持原始状态.为此,它们包含一个"工具箱",它允许您运行像沙箱这样的容器来完成您在注销时消失的工作.
我最喜欢的CoreOS部分是cloud-config.首次启动时,您可以提供名为cloud-config的user_data.它是一个yaml文件,告诉基础CoreOS第一次启动时要做什么.这是你安装诸如fleet,flannel,kubernetes等东西的地方.这是一种真正简单的方法,可以在VM上重复安装您选择的组合.在典型的cloud-config中,我将编写配置文件,从其他机器复制文件以安装在新机器上,并创建控制我们希望CoreOS系统管理的其他进程的单元文件(如法兰绒,车队等).它完全可以重复.
这是CoreOS的另一个有趣的事情.您可以修改现有单元的依赖关系和配置.例如,CoreOS启动docker.但是,我想修改docker的启动顺序,因此我可以添加一个插件配置来增强现有的系统docker配置.在 docker启动之前我使用它来插入法兰绒的依赖关系,所以我可以配置docker使用法兰绒提供的网络.这不一定是CoreOS,但它确实使它们完全融合在一起.
我认为你可以使用cloud-config和Ubuntu以及CoreOS,你可以做同样的事情.因此,我认为你从CoreOS获得的优势超过Ubuntu,你会经常获得一个新版本,操作系统会自动更新,你没有任何"额外"运行(它是精简的,并且减少了攻击向量是后果).CoreOS针对docker进行了调整(它已经在运行)并且ubuntu没有运行它.虽然,你可以创建一个cloud-config文件,让ubuntu运行docker ...总而言之,我认为你已经了解了CoreOS.
您可以通过CoreOS获得的另一件事是直接来自公司,无论是付费还是未付款.我通过这个论坛和CoreOS Dev/CoreOS用户Google小组在CoreOS上回答了很多问题.
您的车队描述也很不错.Fleet管理集群.集群是一个或多个CoreOS机器.所以,如果你要使用舰队,你必须使用CoreOS,我想这将是CoreOS优于Ubuntu的另一个好处.
非常类似于systemd控件的单元文件如何在主机上运行进程,单元文件用于在集群上运行进程的fleetd控件.有一些语法糖,但fleet的Unit文件与systemd的单元文件大致相同.它们非常适合在一起.Fleet的单元文件保存在etcd的数据库中,因此一旦摄取该单元是持久的,即使承载单元服务的机器发生故障,单元描述也存在于etcd中.
Fleet还有命令在我的集群中列出我的机器,列出一个单元文件,显示正在运行的单元等.基本上你可以提交在集群(或所有机器上,或在特定类型的机器上运行的单元(如使用ssd驱动器),或者在运行其他东西的同一台机器上(亲和性)等等).
舰队保持运转.如果机器消失,其单元将在集群中的其他机器上运行.
在本教程中,您将参考Brandon使用Fleet发布Kubernetes.这很简单.通过使Fleet单元文件将Kubernetes放置在车队集群中的所有机器上,当机器被添加到机群集中并从机群集中减去时,Kubernetes会自动使用该机器并安排Kubernetes在其上运行.我也像这样运行我的Kubernetes集群.但是,我不再这么做了.我确信有一个我没有看到的好处,但是,我觉得在我的环境中没有必要.由于我已经使用cloud-config文件启动了我的机器,因此将Kubernetes节点服务直接放在那里是微不足道的.事实上,使用cloud-config,如果我想使用Fleet来启动Kubernetes的东西,我将不得不编写Fleet单元文件,启动Fleet,提交我写给Fleet的单元文件,当我可以写一个单元文件启动Kubernetes节点.但我离题了......
Fleet是一种调度机制,就像Kubernetes一样.但是,Fleet可以通过单元文件启动任何可执行文件,就像系统文件一样,其中Kubernetes适用于容器.Kubernetes允许定义:
(其他的东西).
因此,Fleet只是一个不同的"调度层"的断言是一个很好的断言.您可以添加Fleet计划不同的东西.在我的工作中,我不使用Fleet层,我只是直接跳到Kubernetes,因为我只使用容器.
最后,关于法兰绒的断言是不正确的.法兰绒使用etcd作为其数据库.Flannel为它们之间路由的每个主机创建一个专用网络.法兰绒网络被交给码头工人,并告诉码头工人使用该网络从中分配IP地址.因此,使用法兰绒的docker进程可以通过ip相互通信.由于每个容器都有自己的ip地址,因此可以跳过所有端口映射内容.这些docker进程可以在法兰绒网络上与infra和intra机器进行通信.我错了,但我不认为舰队和法兰绒之间有任何联系.此外,我不认为etcd或Fleet使用法兰绒来传递他们的数据.Etcd和Fleet路线是否使用法兰绒.Docker容器将他们的交通路由在法兰绒上.
-G
| 归档时间: |
|
| 查看次数: |
2414 次 |
| 最近记录: |