Ben Searsweb
Kubernetes是时下最流行的管理和编排工具,它提供了一个配置驱动的框架,让咱们能够经过定义和操做得到整个网络、磁盘和应用,并以可伸缩且易于管理的方式进行。docker
若是咱们尚未完成应用容器化,那么把应用转移到Kubernetes上会是一件高强度的工做,本文目的则是介绍应用与Kubernetes集成的方法。数据库
容器是能够独立运行的基本操做单元,不一样于传统虚拟机依赖模拟操做系统,容器利用各类内核特性来提供与主机隔离的环境。安全
对于有经验的技术人员来讲,整个容器化过程不算复杂——使用docker,定义一个包含安装步骤和配置(下载包、依赖等等)的dockerfile,最后构建一个可让开发人员使用的镜像便可。网络
在咱们把应用迁移到Kubernetes以前,须要确认向最终用户交付的方式。架构
传统web应用的多租户结构,是全部用户共享单个数据库实例和应用实例,这种形式在Kubernetes中工做没什么问题,但咱们建议考虑把应用改形成多实例架构,以充分利用Kubernetes和容器化应用的优点特性。app
采用多实例架构的好处包括:框架
稳定性——单点故障,不影响其余实例;运维
可伸缩——经过多实例架构,扩展也就是增长计算资源的事;而对于多租户架构,须要建立集群应用体系结构的部署可能会有些麻烦;分布式
安全性——当您使用单个数据库时,全部数据都在一块儿,一旦发生安全漏洞,全部用户都会收到威胁,而采用多数据中心,只会有一个用户的数据面临风险;
为了得到成本效益,咱们须要肯定运行单个应用实例所需的CPU、内存和存储量。
咱们能够经过设置限制,精确调整Kubernetes节点须要多少空间、确保节点过载或者不可用等等。
这须要咱们反复的尝试和验证,也有一些工具能够替咱们达成这一目的。
在肯定资源分配以后,咱们能够计算Kubernetes节点的最佳资源大小;
将每一个实例须要的内存或CPU乘以100(节点能够容纳的最大Pod数),咱们能够大概估计你的节点应该有多少内存和CPU;
对应用程序进行压力测试以确保它在满节点时顺利运行。
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、自动化运维、微服务架构和应用市场等,能够开箱即用。