什么是Kubernetes
Kubernetes是Google 2014年创建管理的,是Google 10多年大规模容器管理技术Borg的开源版本。
Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。
通过Kubernetes你可以:
快速部署应用
快速扩展应用
kubectl scale deployment test-nginx-deployment --replicas=2
无缝对接新的应用功能
节省资源,优化硬件资源的使用
微服务编排
架构介绍
组件
Kubernetes集群包含有Node节点和Master节点;
Master节点中包含APIs、Scheduler、controller manager、etcd;
Node节点中包含kubelet、Proxy、Pod。
组件功能
etcd是个键值数据库,保存了整个集群的状态,可以独立于Master节点部署;
apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
kubelet负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;
Pod是Kubernetes最基本的部署调度单元,每个 Pod 可以由一个或多个业务容器和一个根容器(Pause容器:全称infrastucture container 基础容器)组成。
Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);
kube-proxy负责为Service提供cluster内部的服务发现和负载均衡;
kubectl是客户端命令,可以通过api servier使用命令行管理集群。
Add-one(插件)
kube-dns或者coredns负责为整个集群提供DNS服务;
Ingress Controller为服务提供外网入口;
Heapster或者metrics-server提供资源监控;
Dashboard提供GUI页面;
Federation提供跨可用区的集群;
Fluentd-elasticsearch提供集群日志采集、存储与查询。
分层架构
生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴;
Kubernetes外部:日志、监控、配置管理、CI、CD、Workflow、FaaS、OTS应用、ChatOps等;
Kubernetes内部:CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的配置和管理等。
接口层:kubectl命令行工具、客户端SDK以及集群联邦;
管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等);
应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS解析等);
核心层:Kubernetes最核心的功能,对外提供API构建高层的应用,对内提供插件式应用执行环境;