如何把应用转移到Kubernetes

Ben Searsweb

Kubernetes是时下最流行的管理和编排工具,它提供了一个配置驱动的框架,让咱们能够经过定义和操做得到整个网络、磁盘和应用,并以可伸缩且易于管理的方式进行。docker

若是咱们尚未完成应用容器化,那么把应用转移到Kubernetes上会是一件高强度的工做,本文目的则是介绍应用与Kubernetes集成的方法。数据库

Step 1 — 将应用容器化

容器是能够独立运行的基本操做单元,不一样于传统虚拟机依赖模拟操做系统,容器利用各类内核特性来提供与主机隔离的环境。安全

对于有经验的技术人员来讲,整个容器化过程不算复杂——使用docker,定义一个包含安装步骤和配置(下载包、依赖等等)的dockerfile,最后构建一个可让开发人员使用的镜像便可。网络

Step 2 — 采用一个多实例架构

在咱们把应用迁移到Kubernetes以前,须要确认向最终用户交付的方式。架构

传统web应用的多租户结构,是全部用户共享单个数据库实例和应用实例,这种形式在Kubernetes中工做没什么问题,但咱们建议考虑把应用改形成多实例架构,以充分利用Kubernetes和容器化应用的优点特性。app

采用多实例架构的好处包括:框架

稳定性——单点故障,不影响其余实例;运维

可伸缩——经过多实例架构,扩展也就是增长计算资源的事;而对于多租户架构,须要建立集群应用体系结构的部署可能会有些麻烦;分布式

安全性——当您使用单个数据库时,全部数据都在一块儿,一旦发生安全漏洞,全部用户都会收到威胁,而采用多数据中心,只会有一个用户的数据面临风险;

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/scene/k8s-docker

相关文章
相关标签/搜索