摘要:如果我们还没有完成应用容器化,那么把应用转移到上会是一件高强度的工作,本文目的则是介绍应用与集成的方法。采用一个多实例架构在我们把应用迁移到之前,需要确认向最终用户交付的方式。这需要我们反复的尝试和验证,也有一些工具可以替我们达成这一目的。
Ben Sears
Kubernetes是时下最流行的管理和编排工具,它提供了一个配置驱动的框架,让我们可以通过定义和操作获得整个网络、磁盘和应用,并以可伸缩且易于管理的方式进行。
如果我们还没有完成应用容器化,那么把应用转移到Kubernetes上会是一件高强度的工作,本文目的则是介绍应用与Kubernetes集成的方法。
Step 1 — 将应用容器化容器是可以独立运行的基本操作单元,不同于传统虚拟机依赖模拟操作系统,容器利用各种内核特性来提供与主机隔离的环境。
对于有经验的技术人员来说,整个容器化过程不算复杂——使用docker,定义一个包含安装步骤和配置(下载包、依赖等等)的dockerfile,最后构建一个可以让开发人员使用的镜像即可。
Step 2 — 采用一个多实例架构在我们把应用迁移到Kubernetes之前,需要确认向最终用户交付的方式。
传统web应用的多租户结构,是所有用户共享单个数据库实例和应用实例,这种形式在Kubernetes中工作没什么问题,但我们建议考虑把应用改造成多实例架构,以充分利用Kubernetes和容器化应用的优势特性。
采用多实例架构的好处包括:
稳定性——单点故障,不影响其他实例;
可伸缩——通过多实例架构,扩展也就是增加计算资源的事;而对于多租户架构,需要创建集群应用体系结构的部署可能会有些麻烦;
安全性——当您使用单个数据库时,所有数据都在一起,一旦发生安全漏洞,所有用户都会收到威胁,而采用多数据中心,只会有一个用户的数据面临风险;
Step 3 — 确定应用的资源消耗为了获得成本效益,我们需要确定运行单个应用实例所需的CPU、内存和存储量。
我们可以通过设置限制,精确调整Kubernetes节点需要多少空间、确保节点过载或者不可用等等。
这需要我们反复的尝试和验证,也有一些工具可以替我们达成这一目的。
在确定资源分配之后,我们可以计算Kubernetes节点的最佳资源大小;
将每个实例需要的内存或CPU乘以100(节点可以容纳的最大Pod数),我们可以大概估计你的节点应该有多少内存和CPU;
对应用程序进行压力测试以确保它在满节点时顺利运行。
Step 4 — 与Kubernetes集成Kubernetes集群运行起来,我们会发现许多DevOps实践水到渠成——
自动缩放Kubernetes节点
节点用满时,通常需要配置更多的节点以便所有实力顺畅运行,自动缩放的Kubernetes节点便派上了用场。
自动缩放应用程序
根据使用情况,某些应用需要按比例缩放,Kubernetes使用可自动缩放部署的触发器来实现,命令:
kubectl autoscale deployment myapp --cpu-percent = 50 --min = 1 --max = 10
如上,当CPU百分比超过50时,将设置myapp部署扩展到10个容器。
在用户操作时自动配置实例
对于多实例架构,最终用户在Kubernetes中部署应用程序,而为了实现这一点,我们应该考虑将应用与Kubernetes API集成,或者使用第三方解决方案来提供请求实例的入口。
通过用户操作定义自定义主机名
最近越来越多的终端用户将其域名附加到应用程序中,而Kubernetes提供了一些工具来使这个过程变得更加简单,甚至到达自助服务的地步(用户按下一个按钮来设置域指向),我们可以使用Nginx Ingress等系统来完成此操作。
最后打个广告Kubernetes提出的一系列概念抽象,非常符合理想的分布式调度系统。但大量高难度技术概念,同时也形成了一条陡峭的学习曲线,直接拉高了Kubernetes的使用门槛。
好雨云开源PaaS Rainbond则将这些技术概念包装成为“Production-Ready”的应用,可以作为一个Kubernetes面板,开发者不需要特殊学习即可使用。
除此之外,Kubernetes本身是一个容器编排工具,并不提供管理流程,而Rainbond提供现成的管理流程,包括DevOps、自动化运维、微服务架构和应用市场等,可以开箱即用。
进一步了解:https://www.goodrain.com/scen...
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/32656.html
摘要:目前正在运行的应用程序。内置非配置负载均衡器如何设置运行的集群在这里你有几个选项。它跟其它的谷歌云组件也都整合得很好,比如负载均衡器和磁盘。它会告诉负载均衡器,流量可以被重新传到特定的。元信息和谷歌云会以正确的方式展现出来。 Kubernetes实践案例分享|在这次的 RisingStack 案例分享中,我们可以在 Kubernetes Tutorial 中学习到如何从 PaaS 供应...
摘要:作者,谷歌将裸盘支持转移到。对裸盘的支持目前是。将留空与指定相同,这会导致传统行为。例如,实际上是磁盘的块设备支持使用向设备发送命令。默认情况下,不允许容器将命令从容器内部发送到磁盘。 作者:Ben Swartzlander(NetApp),Saad Ali(谷歌) Kubernetes v1.13将裸盘(raw block volume)支持转移到beta。此功能允许持久卷(pers...
摘要:作者,谷歌将裸盘支持转移到。对裸盘的支持目前是。将留空与指定相同,这会导致传统行为。例如,实际上是磁盘的块设备支持使用向设备发送命令。默认情况下,不允许容器将命令从容器内部发送到磁盘。 作者:Ben Swartzlander(NetApp),Saad Ali(谷歌) Kubernetes v1.13将裸盘(raw block volume)支持转移到beta。此功能允许持久卷(pers...
摘要:正在加速以容器技术运行有状态服务在生产环境中的采用,这时我们就更需要关心性能和易于部署。这些运行有状态服务的容器需要特殊处理就带来了新的需求,包括更长的生命周期,配置依赖,有状态的故障转移以及对性能的要求。 编者按:本文作者是 Diamanti 的产品 VP Mark Balch,他将更多的分享他们向 Kubernetes做出的一些贡献。这篇文章是关于 Kubernetes 1.3 新...
阅读 1003·2021-11-23 09:51
阅读 2312·2021-10-08 10:22
阅读 2493·2021-09-29 09:35
阅读 834·2021-09-22 15:20
阅读 2835·2019-08-30 15:53
阅读 2398·2019-08-30 13:55
阅读 1067·2019-08-29 17:27
阅读 2853·2019-08-29 17:26