01、Kubernetes - 实战:Kubernetes基本介绍
什么是kubernetes
kubernets是一个可以移植、可扩展的开源平台,使用声明式的配置并依据配置信息自动地执行容器化应用程序的管理。在所有的容器编排工具中(类似的还有docker swarm/mesos等)kubernetes的生态系统更大、增长更快,有更多的支持、服务和工具可供用户选择。
kubernetes的名字起源于希腊语,含义是舵手、领航员、向导。Google于2014年将Brog系统开源为kubernetes。kubernetes构建在Google Brog十五年运行大规模分布式系统的经验基础之上,并结合了开源社区最好的想法和实际。
应用部署的三个时代
1、 传统部署时代;
早期,企业直接将应用程序部署在物理机上。由于物理机上不能为应用程序定义资源使用边界,我们也就很难合理地分配计算资源。例如:
如果多个应用程序运行在同一台物理机上,可能发生这样的情况:其中的一个应用程序消耗了大多数的计算资源,导致其他应用程序不能正常运行。应对此问题的一种解决办法是,将每一个应用程序运行在不同的物理机上。然而这种做法无法大规模实施,因为资源利用率很低,且企业维护更多物理机的成本昂贵。
2、 虚拟化部署时代;
针对上述问题,虚拟化技术应运而生。用户可以在单台物理机的CPU上运行多个虚拟机(Virtual Machine)。
(1)虚拟化技术使得应用程序被虚拟机相互分隔开,限制了应用程序之间的非法访问,进而提供了一定程度的安全性。
(2)虚拟化技术提高了物理机的资源利用率,可以更容易地安装或更新应用程序,降低了硬件成本,因此可以更好地规模化实施。
(3)每一个虚拟机可以认为是被虚拟化的物理机之上的一台完整的机器,其中运行了一台机器的所有组件,包括虚拟机自身的操作系统。
3、 容器化部署时代;
容器与虚拟机类似,但是降低了隔离层级,共享了操作系统。因此,容器可以认为是轻量级的。
(1)与虚拟机相似,每个容器拥有自己的文件系统、CPU、内存、进程空间等
(2)运行应用程序所需要的资源都被容器包装,并和底层基础架构解耦
(3)容器化的应用程序可以跨云服务商、跨linux操作系统发行版进行部署
Kubernetes提供的特性
1、 服务发现和负载均衡;
kubernetes可以通过DNS名称或IP地址暴露容器的访问方式。并且可以在同组容器内发负载以实现负载均衡
2、 存储编排;
kubernetes可以自动挂载指定的存储系统,例如local stroage/nfs/云存储等
3、 自动发布和回滚;
您可以在Kubernetes中声明你期望应用程序容器应该达到状态,kubernetes将以合适的速率调整容器的实际状态,并逐步达到最终期望的结果。
4、 自愈;
kubernetes提供如下自愈能力:
(1)重启已经停机的容器
(2)替换、kill那些不满足自定义健康检查条件的容器
(3)在容器就绪之前,避免调用者发现该容器
5、 密钥及配置管理;
Kubernetes可以存储和管理敏感信息(例如,密码、OAuth token、ssh密钥等)。您可以更新容器应用程序的密钥、配置等信息,而无需:
(1)重新构建容器的镜像
(2)在不合适的地方暴露密码信息