Kubernetes 会废料桶也能成为武器AWS对抗Google的武器吗

主题信息(必填)
主题描述(最多限制在50个字符)
申请人信息(必填)
申请信息已提交审核,请注意查收邮件,我们会尽快给您反馈。
如有疑问,请联系
CSDN &《程序员》编辑/记者,投稿&纠错等事宜请致邮
你只管努力,剩下的交给时光!
如今的编程是一场程序员和上帝的竞赛,程序员要开发出更大更好、傻瓜都会用到软件。而上帝在努力创造出更大更傻的傻瓜。目前为止,上帝是赢的。个人网站:。个人QQ群:、
个人大数据技术博客:
**前言:**Kubernetes在2014年由Google公司启动。实际上,在容器技术变成热门之前,Google就已经运行了Kubernetes十多年了,只是那个时候并不叫Kubernetes。Kubernetes基于Google的Borg技术,一直用于Google自己的网络服务并提供支持。众所周知,Apache Mesos早在2009年就首次进入市场,而Kubernetes在容器调度引擎方面起步比较晚。一开始它也不是以容器角色的进入市场的,而是一项技术,直到后来有市场需求,它才以调度引擎的角色出现。Kubernetes的主导地位已由市场见证
尽管Kubernetes脱离测试版还只是一个很短的时间,但现在市场上确实有很多企业已拥抱Kubernetes,而不是Apache Mesos,Docker Swarm或Cloud Foundry。随着收购Deis,微软进一步验证了容器调度引擎,于今年4月初加强了对Kubernetes的投资。至此,Kubernetes的服务特性正式走上了正轨
这究竟是炒作还是真正的市场需求,可以通过市场趋势来判别。如下图所示,Kubernetes的地位逐年上升,已占据市场主导地位。
kubernetes与其他容器编排的对比而下图展示了Kubernetes, Swarm,Cloud Foundry和Apache Mesos受欢迎程度的情况,经调查显示,求职者对Kubernetes的兴趣程度已经远超其他且逐年升高。
求职者兴趣趋势Kubernetes的主导地位确实是市场驱使,并不是炒作。接下我们来探讨Kubernetes如何在企业中运用。应用Kubernetes前需要了解的基本问题
Kubernetes由几个架构组件组成,包括pods,labels, replication controllers 和services。 ? Pods是管理一个或多个紧密耦合容器的短暂单元。 ? replication controllers从pod模板创建新的pod“replicas”,以确保已配置数量的pod正常运行。 ? services提供一种低消耗的方式,并使用由标签驱使的选择器将请求路由到集群中的一组逻辑后端。如果你想用Kubernetes来管理容器集群,你还需要了解以下几个基本问题:? 上云还是不上云? 你可以在公有云或者本地机房运行Kubernetes。而Google、AWS和Microsoft都有Kubernetes服务。所以,公有云的优势你也应该好好考虑,比如使用公有云不必购买和配置服务器。 ? 是否需要选择DevOps? 考虑到Kubernetes是开发和运维的一部分,首先你必须确定是否适合DevOps流程和工具集。大多数情况下,如果你正在运行容器,并使用新的应用程序,或者正在集成现有的应用,那么它将确实是DevOps的一部分。 ? 网络培训,而不是招聘? 从上图可以看出,Kubernetes是一项热门技术。但是,企业内部需要对Kubernetes有深入研究和学习人员,才能真正创建与使用Kubernetes的容器编排系统。那么,你从哪里得到这些人呢?这是一个与投入产出相关的决定,你需要考虑培训员工的费用或从外聘用顾问的成本。无论哪一种选择都是耗资巨大的。 Kubernetes or not?你需要认清它的真正价值就上面而言,理解到关技术后,决策才仅仅开始了一半。要真正考虑使用Kubernetes的价值,还应该考虑到过渡成本和建立及维护容器和容器集群管理所需人员的成本。总结来看Kubernetes的价值体现在以下几点:
? Kubernetes允许基于容器的应用通过容器集群在容器管理器中来进行扩展,这些容器可以被调度,编排和管理。这与不使用集群管理器相比,将运维成本降低一半。 ? 真正了解DevOps的价值。使用容器和容器集群管理的DevOps的效率超过约20%。这是由于能够重用容器,并在基于容器的应用中驱动更好的架构实践。 ? Kubernetes可以作为本机服务在公有云上运行,因此不需要购买硬件或软件来托管Kubernetes。 结语Kubernetes是成功的,因为它比市面上其他容器集群管理能更好地解决问题。至少,市场的选择可以很好的说明这个问题。所以,如果打算使用Kubernetes,你就必须考虑到对运维和团队的影响。换句话说,你需要了解如何让技术和商业更好的结合,并从企业的角度认真思考这个问题。原文链接:关于译者Ghostcloud
Ghostcloud(中文名:精灵云)坐落于成都天府软件园,是成都高新区重点扶持企业,国内首批从事容器虚拟化研发的企业,是西南地区唯一一家基于Docker的云计算服务商,为企业级行业客户提供针对互联网化、私有云管理平台、大数据业务基础架构的平台服务。
Ghostcloud因容器技术而生,以最新容器技术Docker为基础,为适应不同行业客户需求,全自主研发了一套调度引擎框架Newben,且全方位适配Kubernetes主流开源调度引擎,也是国内率先实现双调度引擎的企业,是一流的企业级容器云服务专家。Ghostcloud推出了企业级容器云PaaS/CaaS平台,命名为EcOS(Enterprise Container Operation System)。Ghostcloud将EcOS平台与微服务/DevOps相融合,运用至企业IT系统的全生命周期的开发、测试、运维及发布流程中,致力于为多个领域企业向“互联网+”转型提供针对互联网化、私有云管理平台、大数据业务基础架构的平台服务,帮助企业级客户降低成本、提升效率、简化运维及产品部署,并提升系统的可靠性和安全性。Kubernetes自动伸缩功能剖析 - CNode技术社区
这家伙很懒,什么个性签名都没有留下。
编者按:这篇文章是关于Kubernetes 1.3新功能的一系列深入的文章的一部分。本文是第三篇。
使用Kubernetes的客户能够迅速响应终端用户的请求,交付软件也比以往更快。但是,当你的服务增长速度比预期更快时,计算资源不够时,该怎么处理呢?
此时可以很自豪地说:Kubernetes 1.3提供了一个解决方案:自动伸缩(auto-scaling)。搭建在Google计算引擎(GCE)和Google容器引擎(GKE)(以及即将用于AWS)上,Kubernetes会在必要时自动扩容你的集群,并在不需要时缩容,以便为你省下一笔费用。
Part 1:自动伸缩的优势
这里我们用一个例子说明自动伸缩的应用场景。
想象一下你有一个7*24(全天候)的服务,它的负载随着时间变化。在美国地区,白天服务非常繁忙,夜间负载相对较低。
理想情况下,我们希望集群中节点和运行中Pod的数量能够动态调整负载,以适应终端用户的需求。新的 自动伸缩 功能与 Horizontal Pod Autoscaler配合在一起可以自动解决这个问题。
Part 2:在GCE设置Autoscaling
以下操作指南适用于GCE。对于GKE请在集群操作手册(查看“相关链接”)查看 autoscaling这个章节。
开始之前,我们需要一个活跃的GCE项目,并且启用Google Cloud Monitoring、Google Cloud Logging和Stackdriver。
如果你想了解如何创建一个GCE项目,请阅读入门指南(查看“相关链接”)。我们还需要下载一个Kubernetes项目的最新版本(版本v1.3.0+)。
第一步:创建一个集群,并启用Autoscaler。
集群中的节点数量将从2开始,并自动调整到最大5。要实现这一点,我们需要设置以下环境变量:
通过kube-up.sh启动集群:
脚本创建一个集群,并默认启用了Autoscaler插件。如果集群中存在pending pod,autoscaler将尝试向集群中添加新的节点,然后pending的pod会被调度到新节点上。
我们观察一下集群,它应该有两个节点:
第二步:运行并暴露PHP-Apache 服务
为了演示自动伸缩功能,我们基于php-apache镜像制作了一个自己的镜像。镜像可以在这里(见“参考链接”)找到。它定义一个index.php页面,这个页面会执行CPU密集的计算。
首先,我们创建一个deployment,并将其端口暴露出来:
现在,我们将等待一段时间,验证部署和服务是否被正确创建和运行:
使用wget命令检查 Php-apache服务是否运行正常:
第三步:启动Horizontal Pod Autoscaler
depleoyment正常运行后,我们将为它创建一个Horizontal Pod Autoscaler对象。使用kubectl autoscale 命令就可以:
这里我们定义了一个Horizontal Pod Autoscaler,它保证deployment对象php-apache控制的Pod数量在1~10之间。
换句话说,horizontal autoscaler通过deployment对象增加或减少Pod副本数量,以保证所有Pod的CPU平均使用率在50%左右。
kubectl run创建deployment时,为每个Pod申请了0.5核CPU,也就是说,每个Pod实际平均使用0.25核CPU)。
关于该算法的详细信息查看文章末尾(“相关链接”)。
我们可以通过”kubectl get hpa”检查autoscaler 的状态:
注意,当前的CPU 使用率是0%,因为我们没有向服务器发送任何请求(当前列显示的是与hpa对应的rc下所有pods 的CPU使用率的均值。
第四步:提高负载
现在,我们将看到 Autoscalers(Cluster Autoscaler 和 Horizontal Pod Autoscaler)如何响应不断增加的负载。我们将启动两个实例(请运行在不同的终端),每个实例启动一个访问php-apache服务的死循环:
我们需要稍微等待一段时间(1min左右),然后检查Horizontal Pod Autoscaler的状态:
Horizontal Pod Autoscaler 已经把 Pod 数量增加到7。我们检查下是不是所有的Pod都在运行:
我们可以发现:一些 pod处于pending状态。我们使用 ”kubectl describe” 命令查看其中一个pending pod,以获取 pending 的原因:
该pod正在pending 是由于在系统中没有足够的 CPU资源。我们还可以看到有一个 TriggeredScaleUp事件。这意味着 pod触发了Cluster Autoscaler 的响应,一个新节点将被添加到集群中。
现在我们再等待一段时间(3min左右),并列出所有节点:
我们可以发现:一个新节点 kubernetes-minion-group-6z5i 被Cluster Autoscaler 添加到集群中。我们确认下所有的pods都已经运行正常:
添加节点以后,所有的php-apache pods都在正常运行!
第五步:降低负载
现在,我们停止向服务器打压力。我们把两个向server发请求的死循环都结束掉,然后观察php-apache 服务的状态:
我们可以看到,Pod的CPU平均使用率已经降到0%,Pod个数也降到1。
把多余的Pod删除以后,大部分的集群资源都都被空出来。短时间内,集群不会被缩容,因为Cluster Autoscaler必须确保php-apache服务对资源的需求确实降低了,而不是短期或临时原因(比如Pod升级)。
更多细节参考 Cluster Autoscaler的文档(“相关链接”)。
集群缩容可能比扩容花费更多时间。大约10-12分钟后,您可以验证集群节点数量的下降:
集群中节点的个数重新恢复到2, 节点kubernetes-minion-group-6z5i已经被Autoscaler删除。
Part 3:其他使用场景
看完上面的例子,我们可以发现,结合Horizontal Pod Autoscaler 和 Cluster Autoscaler动态调整pods数量是很简单的。
在有些场景下,Cluster Autoscaler 自己也能发挥不少作用,尤其是应对某些不规则的负载变化。
举个例子,与集群相关的开发或者集成测试一般不会在周末和晚上进行。
对于批处理集群,当所有Job都结束,而新的Job也只能在几个小时后才开始。
让机器闲着绝对是暴殄天物。
在这些场景下,Cluster Autoscaler 能够减少空闲结点的数量,并显示减少支出,因为你只需要为实际运行的服务付费,同时也能够保证你总是有足够的资源运行你的任务。
GKE Autoscaling:
创建一个gce项目:
php-apache镜像:
AutoScaling算法:
Cluster Autoscaler文档:
本文由翻译,如若转载,需注明转载自“”
原文链接:
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
服务器赞助商为
,存储赞助商为
,由提供应用性能服务。
新手搭建 Node.js 服务器,推荐使用无需备案的Kubernetes 会成为AWS对抗Google的武器吗?
Kubernetes 会成为AWS对抗Google的武器吗?
Kubernetes 会成为 AWS 对抗 Google 的武器吗?亚马逊 Web 服务 (AWS) 也许会建立一个基于 Kubernetes 的云容器管理工具。根据与 AWS 商务合作伙伴的信息报告: 因为 Kubernetes 的盛行,AWS 倍感威胁。Kubernetes 是 Google 开发的开源软件, Redhat、IBM、VMWare 等大型企业均在使用它来管理其客户基础架构上的容器集群。同时,Kubernetes 也被广泛用来管理跨多台机器的人工智能 (AI) 测试。虽然 AWS 仍是市场上主要的公有云, 但它面临着来自竞争对手微软 Azure 和谷歌公有云 (GPC) 的巨大挑战。谷歌一直特别关注机器学习和 AI 服务, 他们的首席执行官 Sundar Pichai 表示, 谷歌计划让 GPC 成为 &机器学习的最佳云&。因此,AWS 意识到 Kubernetes-based 云服务可以帮助他们吸引更多的 AI 业务。AWS 已经支持 Kubernetes 的容器管理和编排工具, 自身也拥有类似服务, 称为 EC2 容器服务 (ECS)。有统计显示, 在 GPC 上使用 Kubernetes 更容易, 这意味着用户开始使用 AWS 软件时, 通常会切换到 Google。同时,ECS 的使用率非常低且客户不喜欢它。与此同时, Kubernetes 在一个蓬勃发展的市场中仍然是领先的容器编排工具, 预计在 2020 年的营收将从去年的 7 亿 6200 万美元增长至近 27 亿美元。根据最近一份关于容器和云的编排的 SDxCentral 报告的调查, 64% 的受访者说他们使用的是 Kubernetes。相比之下, 36% 的人说他们在使用 Swarm, 18% 的人说他们在使用 Mesos。据传, AWS 还将与 VMware 就开发企业数据中心软件进行谈判。如果这一情况属实, 这将会将 AWS 移动到私有云中, 并允许它与微软 Azure 栈直接竞争, 这使得企业可以在自己的数据中心中构建 Azure 公有云的私有云版本。Docker 贴士:全面自动化配备&使用端口Tips 1:全面自动化配备不需要解决任何的可扩展问题,你就可以顺利地过渡到使用 Docker。你可以开始使用Docker,而不用尝试像 CI / CD,集群,负载均衡服务以及你可以想到的所有其类似部署功能。Docker 只是帮助您构建和分发应用程序。所有的部署功能都需要了解基础。这意味着刚刚开始部署时,只需让开发中的 Docker 运行应用程序,然后尝试从单盒中将其复制到生产之中。Tips 2:使用端口你知道 Docker 是作为 Dockerized 服务的防火墙吗?你也可以通过端口监听来启用或禁用服务。例如,如果你正在运行 Flask,Node 或 Rails 应用程序的服务器,则可能会在 8000 端口上进行监听,然后在端口 80(http)和/或 443(https)上设置 nginx 代理该应用程序。如果您希望 Web 应用程序服务器不被公开到外部世界,但是仍然可以访问同一网络上的其他容器(例如本例中的 nginx ),那么您只需运行您的容器即可 -p 8000 完成。如果您确实希望将 Web 应用服务器公开到外部,也非常的简单:-p 。其格式是 HOST:CONTAINER,并会将容器的端口发布到主机,这又使外部可以访问该端口。 5 分钟内用 Docker 体验 Ghost 1.0Ghost 1.0 在今天发布了,其中包括一个新的编辑器和一个新的安装方法。Docker 可以轻松使用 Ghost,只需按照以下步骤操作,不到 5 分钟即可完成一个博客。创建 Docker 镜像我将 Ghost 1.0 的 DockerFile 放在了一起。由于该项目添加了 Ghost CLI,它比以前的版本简单得多。我已经将我的图像推送到 Docker Hub:alexellis2/ghost:1.0,所以你可以跳过下一步,除非你想自己重新构建图像。自己构建镜像(可选)输入:$ git clone /alexellis/ghost-on-docker/运行博客创建完成之后就可以进行运行。$ docker run -p
--name ghost -ti alexellis2/ghost:1.0你可以在新窗口中登录进博客:http://localhost:2368用全新设计的仪表盘列出你的帖子。编辑:完成! 如何在 Mac/Windows 平台上监控 Docker现在,Mac/Windows 平台上的 Docker 已经添加了监控功能,很酷对吧?从此以后,我们再也不需要猜测我们的开发机器和测试环境的运行性能了!首先,对于初学者来说,我们本来就需要随时随地关注这些内容。其次,为了真正了解环境,我们需要了解环境中实例的运行内容以及运行方式。最后,了解环境和它对工作负载的影响是很有必要的。了解 Mac/Windows 平台上 Docker 的进程 我们首先开始配置安装。以下屏幕截图来自Mac,但步骤也适用于 Windows。我们现在将在我们的 Docker 上启用 Daemon 指标,格式为 Prometheus。* 打开Docker的偏好设置菜单* 找到`Daemon`菜单,并点击`Advanced`。* 在代码框内,我们将添加一条语句来启用指标。在`debug`下面添加以下代码行:`&metrics-addr&:&0.0.0.0:9323&`。* 点击 `Apply & Restart`然后等待Docker重启。* 测试。打开任意浏览器访问:`http://127.0.0.1:9323/metrics`。**使用Prometheus来监控**我们Mac/Windows的Docker现在正在创建Prometheus格式的指标。接下来,让我们启动一个Prometheus堆栈,并使用这些新创建的指标。* 将Prometheus栈克隆到本地:`git clone /vegasbrianc/prometheus.git .`* 编辑`prometheus/prometheus.yml`文件。在文件的末尾找到`static_configs`。* 使用运行Docker的机器的主机名或IP输入: `targets: ['hostname-here:9323']`。* 保存并退出* 开启Prometheus栈:`docker-compose up -d`配置Grafana* 在浏览器中打开Grafana:`http://0.0.0.0:3000`。* 登录:用户名`admin`,密码`foobar`。* 登录后,系统将用绿色按钮提示添加数据源。点击`Add Data Source`。* 在数据源中输入:Name: `Prometheus`Tpye: `Prometheus`URL: `http://prometheus:9090`Access: `Leave default`HTTP Auth: `Basic Auth`user: `admin`password: `foobar`* 点击 `Save & Test`。* 点击右上角的Grafana图标,将鼠标悬停在仪表板上,然后选择导入。* 除了数据源的最后一个字段,其他内容都填充完毕了。总结我们设置了 Docker Daemon 记录指标,配置并启动了 Prometheus 堆栈以使用这些指标,最后导入了 Grafana 仪表板作为起点。您现在应该能够创建一些有趣的图形和报告了。这一期的『航海日志』就到这里,下期再浪~参考链接/articles/news/aws-plan-battle-google-using-kubernetes/2017/07//blog/https://blog.alexellis.io/try-ghost-1-0-in-docker/https://www.brianchristner.io/how-to-monitor-docker-for-mac-windows/作者介绍杨雪颖 Misha:DaoCloud 技术顾问,能文能撸码の通用型选手,兼 Labs 吉祥物。上期回顾:http://blog.daocloud.io/edu170731/?utm_source=toutiao&utm_medium=social&utm_campaign=edu170807&utm_content=Container
本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。
百家号 最近更新:
简介: 追着潮流不是目的,美丽生活才是目标
作者最新文章

我要回帖

更多关于 清政府对抗国外的武器 的文章

 

随机推荐