Kubernetes是一个开源容器编排平台,管理大规模分布式容器化软件应用, 是云计算发展演进的一次彻底革命性的突破。Kubernetes是谷歌的第三代容器管理系统,是Borg独特的控制器和Omega灵活的调度器的组合。Kubernetes中的应用被打包成与环境完全分离的容器镜像,并且自动配置应用并维护跟踪资源分配。
敏捷的弹性伸缩能力: 不同于虚拟机分钟级的弹性伸缩响应,容器应用可实现秒级甚至毫秒级的弹性伸缩响应;
智能的服务故障自愈能力: 容器应用具有极强的自愈能力,可实现应用故障的自动摘除与重构;
大规模的复制分发能力: 容器应用标准化的交付制品,可实现跨平台、跨区域,云边一体规模化复制分发部署能力。
一、Kubernetes整体架构
1、集中式管理节点
集中式管理节点,对集群进行调度管理,有 四大核心组件:
API Server: 承担集群的网关,实现统一认证鉴权对外服务,同时也是管理Node/Pod资源代理通道;
Scheduler: 资源调度器,除了Kubernetes默认的调度器,也支持自定义调度器;
ETCD: 集群状态统一存储,与Zookeeper类似的key-value存储;
Controller Manger: 控制管理器实现自愈、扩容、应用生命周期管理、服务发现、路由、服务绑定等能力;Kubernetes默认提供Replication Controller、Node Controller、Namespace Controller、Service Controller、Endpoints Controller、Persistent Controller、DaemonSet Controller等控制器。
2、 辅助工具
辅助工具,主要是辅助集群管理及网络扩展:
kubectl 通过API Server进行交互,实现 集群管理的命令行工具;
Dashboard 是Kubernetes的web 用户管理监控界面;
Core DNS 是可扩展的DNS服务器,实现 集群服务发现能力。
二、Kubernetes核心理念
1、POD容器组,Kubernetes最小调度单元
Pod是Kubernetes的 最小调度及资源分配单元, Pod之间相互隔离,通常情况一个Pod只建议运行一个容器,当某些容器之间关系非常紧密(Tightly coupled),可以运行在同一Pod运行多个容器方便一起调度管理。一个Pod就是一个应用运行实例,通过同时运行多个Pod来实现应用 横向扩展 能力。Pod本身没有自恢复能力,当调度或运行失败时,需要管理节点的Controller根绝配置触发实现Pod重启、重建或迁移等操作。
Pause Container: 又叫Infra Container,Pod通过Pause Container实现Pod多个容器网络共享, Pause Container最先启动并绑定Pod唯一IP地址与各种网络资源,其他容器通过加入Pause Container的Network namespace来实现网络共享。Pause是C语言实现,镜像非常小只有700KB左右,并且永远处于Pause(暂停)状态;官方镜像是gcr.io/google_containers/pause-amd64:3.0,同时也支持自定义。
Init Container: Pod中可以自定义一个或者多个 Init Container , 按照顺序依次启动 ,在应用Container之前启动并执行一些辅助任务,比如执行脚本、拷贝文件到共享目录、日志收集、应用监控等。将辅助功能与主业务容器解耦,实现独立发布和能力重用。除了不支持Readiness Probe,其他与特性与普通容器保持一致。
App Container: Pod真正承接业务的Container,一般情况会独立运行,如果是有微服务治理等需求会搭配Sidecar Container一起运行。在Init Container启动完成之后, App Container会并行启动, 但是需要等待所有 App Container 处于就绪状态,整个Pod才算启动成功。
大型站长资讯类网站! https://www.nzzz.com.cn