PuppetConf2016。面向系统管理员的Kubernetes。第2部分

PuppetConf2016。面向系统管理员的Kubernetes。第1部分

设置资源限制。通过简单的数学运算,您可以计算出可以运行的应用程序的副本数量-如果一个副本需要1 GB的RAM,然后具有10 GB的内存,则可以运行10个副本。这不需要监视,因为我知道系统的核心将开始履行规定的合同。此合同或您与系统之间的协议非常重要,因为如果有合同,那么所有工具都会更好地工作。因此,我们将执行规则引入系统中。



因此,仅当每个副本获得1 GB的可用内存时,调度程序才会启动此程序。如果没有足够的内存,则该过程将不会开始。因此,我输入kubectl create命令,执行该命令后,将创建mysql容器。



这里有一个关于有状态系统的警告-您有多种选择。我突出显示了一段代码,其中指出我想使用云提供商的PersistentDisk。



它可以是NFS,ISCSI或提供对存储设备进行网络块级访问的任何其他协议。我这样做是为了断开存储与机器的连接。如果其中一台计算机发生故障,我可以使用相同的数据存储在另一台计算机上重新创建该进程。如果从发生故障的主机上装载存储,则只会丢失数据,并且必须再次从备份中还原所有内容。

因此,我们的目标是随着网络的增长而更快地运行存储。这与迁移无关,而是与在机器外部快速安装和卸载存储的能力有关。这完全有可能做到。让我们看看我们的壁炉如何运转-它仍在创建中,现在我想为其创建服务,以便其他应用程序可以找到我们的。



创建此服务后,Kubernetes将立即生成DNS记录,因此您可以调用mysql并自动检测到该容器正在运行。让我们继续并输入命令$ kubectl create –f services / mysql.yaml。如您所见,该容器仍在创建中。顺便说一句,您可以在我的网站上观看此演示视频。您会看到mysql应用程序的服务外观-它包含群集IP地址,外部IP地址,端口号和网络协议。



让我们看看这个特定的容器会发生什么。如您所见,它有效。



因此,目前,我相信mysql应用程序确实可以正常工作。接下来,我们需要一个Web应用程序。因此,让我们部署一个名为“ lobsters”的应用程序,我将它放在GitHub上,它是Hacker News的克隆版本。这是一个Ruby-on-Rails项目,我只是根据此处给出的数据和基本配置创建了一个容器。



如果您不是最新信息,则:Hacker News将使您在任何黑客大会上都非常受欢迎。只需阅读这里写的内容,您就可以讨论计算机技术世界中所有流行的话题。因此,如果您想打动别人-请阅读此门户网站的新闻。

因此,我想创建一个东西的副本并将其放在互联网上以赚钱。当然,这不是一个真正的业务项目,而只是机会的证明。
我目前正在部署一个名为Lobsters的应用程序。从我的秘密中获得数据库URL,为此我使用$ kubectl get secrets命令。 Secret也有一个用户名和密码。



接下来,我想创建一个将与我的应用程序通信的容器,为此,我使用命令$ kubectl create –f deployments / lobsters.yaml。如您所见,该应用程序正在运行。



另外,我们有一个IP地址。我输入$ kubectl get svc命令并使用全局负载均衡器,该负载均衡器指向具有外部IP地址101.198.12.60的页面。





我们将转到浏览器,尝试通过HTTP输入该地址。是的,等待迁移时出错!这是Ruby-on-Rails,所以我期待这样的事情。



因此,我们需要数据库迁移。我们只需要运行一次该过程即可。但是,我们希望以相同的方式执行此操作-服务器上没有授权,没有特殊的服务器(例如Jump box),我们想联系调度程序并说:“嘿,一次执行此任务,执行后就杀死进程!”。也就是说,我只想运行一个命令并退出。因此,要使用$ cat jobs / lobsters-db-schema-load.yaml命令执行批处理,我创建了一个实现此类方案的Jobs对象。



rake命令标志“ db:schema:load”直接发送到GitHub网站,并说:“获取代码图像:kelseyhightower / lobsters:2.0.0并运行此命令1次”。 restartPolicy:在代码末尾从不显示行,告诉Kubernetis他应该只运行一次,并且永远不要重复。我还限制了处理器和内存的资源,也就是说,我指出了可以在其上启动和执行的合适机器的参数,此后将完成数据库传输。因此,我使用命令$ kubectl create –f jobs / lobsters-db-schema-load.yaml“放下了轨道”应在系统上运行的所有Jobs对象。
您会看到已创建相应的作业,然后键入命令$ watch kubectl get jobs。



因此,将容器拉到机器上,调度程序开始工作,创建了rake任务。让我们返回并刷新数据库错误页面。如您所见,现在我们的方案已成功实施。



接下来,我需要登录。我使用命令$ kubectl create –f jobs / lobsters-db-seed.yaml。您会看到调度程序仍在加载容器,几秒钟后工作就完成了。要开始迁移,我们使用与以前相同级别的代码。我登录到此页面,现在所需要做的就是获取内容。如果我们想“筹集”一些钱,内容是必要的。这就是增长骇客的模样,即“骇客增长”,即您转到别人的网站,从那里获取内容并将其发布到自己的网站上,该网站看起来与原始网站相似。



但是我们不仅需要满足感,而且还需要良好的满足感。让事情随波逐流是一种耻辱,所以我手动借了一些消息。您可以自动复制内容,但这是不合法的。因此,我选择新闻,复制链接地址,设置“测试”标签,选中“我是该URL处故事的作者”框,然后按“提交”按钮。看看被盗的新闻看起来多么棒!



现在该扩展应用程序了。为此,您只需要更改我们正在执行的定义-例如,将1个副本而不是1个副本更改为10。然后再次运行命令块。



Kubernetes接受此信息,执行操作,现在,我们在壁炉中运行了10个Lobsters应用程序副本。此外,由于服务的工作,该过程会自动添加到负载均衡器中。



让我们看看后端发生了什么。为此,我使用$ kubectl get svc命令,获取简短状态,并要求使用$ kubectl describe svc命令对其进行描述。 Kubernetes自动检测我们所有的端点并将它们放置在负载均衡器之后。



同时,删除所有无用的内容,并自动添加所需的所有内容。我们不需要一次又一次地创建此东西,所有东西都完全集成到了平台中。
下一个重要的问题是如何更新以及如何获取日志。如果您还记得的话,我取消了您的SSH访问权限,因此您需要使用Log Stash或内部Google Cloud日志记录等对日志进行集中管理。但是,如果您只想查看临时日志,请记住您无权访问这些计算机。但是,您可以使用API​​使用容器名称捕获日志。为此,输入命令$ kubectl logs lobsters-240734871-03rmn –f,其中03rmn是容器中lobsters-240734871应用程序的特定副本的名称。因此,您可以查看带有副本的每个容器的日志,以便在必要时进行故障排除。



让我们使用$ kubectl get pods命令查看我们的内容,如您所见,一切正常。接下来要做的重要事情是聘请营销人员。他看着页面说:“做您想做的,但是要从站点中删除这些白点!”。



为此,您需要做的就是创建一个新容器,并为我们要推广的内容自定义CSS。让我提醒您,我们并不是在谈论节点,节点对我们并不重要,因为系统本身将提供我们想要的东西。

即将继续...


一点广告:)


感谢您与我们在一起。你喜欢我们的文章吗?想看更多有趣的资料吗?通过下订单或向您的朋友推荐给开发人员的基于云的VPS,最低价格为4.99美元这是我们为您发明的入门级服务器 独特类似物:关于VPS(KVM)E5-2697 v3(6核)的全部真相10GB DDR4 480GB SSD 1Gbps从$ 19还是如何划分服务器?(RAID1和RAID10提供选件,最多24个内核和最大40GB DDR4)。

阿姆斯特丹的Equinix Tier IV数据中心的戴尔R730xd便宜2倍吗?在荷兰2台Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100电视戴尔R420-2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB-$ 99起!阅读有关如何构建基础设施大厦的信息。使用Dell R730xd E5-2650 v4服务器花费一欧元9000欧元的c类?

All Articles