Kubernetes简介

Kubernetes是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化,Kubernetes拥有一个庞大且快速增长的生态系统

Kubernetes这个名字源于希腊,意为舵手,如下面的LOGO所示

Kubernetes简介 - 图1

k8s名字来源:k和s之间有8个字符

Google在2014年开源了Kubernetes项目,原型是Google的大规模容器管理技术Borg,k8s是Borg的开源版本,Kubernetes建立在Google在大规模运行生产工作负载方面拥有十几年的经验的基础上,结合了社区中最好的想法和实践

它是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能

Kubernetes的优点:

  • 自动装箱

建构于容器之上,基于资源依赖及其他约束自动完成容器部署且不影响其可用性,并通过调度机制混合关键性应用和非关键型应用的工作负载于同一节点以提升资源利用率

  • 自我修复(自愈)

支持容器故障后自动重启、节点故障后重新调度容器,以及其他可用节点、健康状态检查失败后关闭容器并重新创建等自我修复机制

  • 水平扩展

支持通过命令或UI手动水平扩展,以及基于cpu等资源负载率的自动水平扩展机制

  • 服务发现和负载均衡

Kubernetes通过其附加组件KubeDNS(或CoreDNS)为系统内置了服务发现功能,它会为每个service配置DNS名称,并允许集群内的客户端直接使用此名称发出请求,而service则通过iptables或ipvs内建了负载均衡机制

  • 自动发布和回滚

Kubernetes支持灰度更新应用程序或其配置信息,它会监控更新过程中应用程序的健康状态,以确保它不会在同一时刻杀掉所有实例,而此过程中一旦有故障发生,就会立即自动执行回滚操作

  • 密钥和配置管理

Kubernetes的configmap实现了配置数据与Docker镜像解耦,需要时,仅对配置做出变更而无须重新构建docker镜像,这为应用开发部署带来了很大的灵活性。此外,对于应用所依赖的一些敏感数据,如用户名和密码、令牌、密钥等信息,Kubernetes专门提供了secret对象为其解耦,既便利了应用的快速开发和交付,又提供一定程度上的安全保障

  • 存储编排

Kubernets支持pod对象按需自动挂载不同类型的存储系统,这包括节点本地存储、公有云服务商的云存储,以及网络存储系统(例如,NFS/ISCSI/GlusterFS/Ceph/Cinder/Flocker等)