2014年,谷歌开放了Kubernetes项目。它是建立在谷歌运行大规模生产系统的基础之上,结合社区的最佳创意和实践构建的一个可移植、可扩展的开源平台。Kubernetes 主要是通过 API或者声明式配置管理容器化工作负载和服务的一整套系统。
一、Kubernetes 架构
Kubernetes 分控制节点(Master Node)和工作节点(Worker Node),Kubernetes 架构如下图所示。其对外提供的操作接口全部通过API Server 对接。无论是图形界面还是命令行工具,都是通过访问API Server与Kubernetes 交互,这样就能符合云原生架构的要求——通过API来操作基础架构。在Kubernetes中,Master节点可以是一个,也可以是通过Keep Alived技术组建的MasterCluster,以保证高可用性。
1.工作节点
工作节点(Node)是在Kubernetes中承载业务工作的节点。在后面部署Kubernetes 集群时可以看到,节点可以是一个虚拟机,也可以是一台裸机。每个节点上都运行 Docker、kubelet 和 kube-proxy 等服务, 从而保障Pod的正常运行。所有工作节点由Master组件进行统一管理。
2.Master 节点
Master 节点是一个Kubernetes master组件,管理工作节点的方方面面。这个节点的任务非常重要,所以在生产环境下,一般通过Keep Alived 等技术手段组件集群(一般是3个节点组成)来确保master组件的正常运行和持续提供管理功能。
3.Docker 镜像库
Kubernetes中运行的所有镜像都来源于某个镜像库,可以是Docker Hub,也可以是客户自建的私有Docker镜像库。节点在收到创建Pod的命令后,将去Docker镜像库中拉取镜像,因此每个节点与Docker镜像库之间的网络链接必须是通畅的。
二、Kubernetes提供哪些功能
●服务发现和负载均衡。Kubernetes可以使用DNS名称或使用自己的IP地址公开容器。如果容器的流量很高,Kubernetes也支持将这些流量均衡分配,以确保系统稳定。
●存储编排。Kubernetes 允许用户自动加载自选的存储系统,例如本地存储、NFS存储等。
●自动部署和回滚。Kubernetes可以描述已部署容器的所需状态,并且可以以受控的方式更新现有状态到预期状态。
●管理资源。Kubernetes 允许用户指定每个容器请求的资源,以便更好地管理容器的资源。
●自我修复。Kubernetes可以重新启动失败的容器、替换容器,也可以终止不响应用户自定义的运行状况检查的容器。
●密钥和配置管理。Kubernetes允许用户存储和管理敏感信息,例如密码、TLS证书等。用户可以部署和更新机密信息而无须重建容器,也不会泄露机密信息。
Kubernetes不是一个传统PaaS平台,它提供的功能包括部署、扩展、负载平衡、日志记录和监控,且解决方案都是可选和可插拔的。