1.Kubernetes容器平台架构之道
Kubernetes是一个开源容器编排平台,管理大规模分布式容器化软件应用,是云计算发展演进的一次彻底革命性的突破。Kubernetes是谷歌的第三代容器管理系统,是Borg独特的控制器和Omega灵活的调度器的组合。Kubernetes中的应用被打包成与环境完全分离的容器镜像,并且自动配置应用并维护跟踪资源分配。
Kubernetes是以应用为中心的技术架构与思想理念,向下屏蔽基础设施差异,实现底层基础资源统一调度及编排;向上通过容器镜像标准化应用,实现应用负载自动化部署;中间通过Kubernetes通用的编排能力,开放API以及自定义CRD扩展能力,打造云原生操作系统能力,形成云计算新界面;助力研发团队快速构建标准化、弹性高可靠、松耦合、易管理维护的应用系统,提升交付效率,降低运维复杂度。Kubernetes在技术架构方面具备三个能力:
敏捷的弹性伸缩能力:不同于虚拟机分钟级的弹性伸缩响应,容器应用可实现秒级甚至毫秒级的弹性伸缩响应;
智能的服务故障自愈能力:容器应用具有极强的自愈能力,可实现应用故障的自动摘除与重构;
大规模的复制分发能力:容器应用标准化的交付制品,可实现跨平台、跨区域,云边一体规模化复制分发部署能力。
1.1.Kubernetes整体架构
Kubernetes是典型的主从分布式架构,由集中式管理节点(Master Node),分布式的工作节点(Worker Node)组成以及辅助工具组成。
集中式管理节点,对集群进行调度管理,有四大核心组件:
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等控制器。
分布式的工作节点,工作节点运行业务应用容器;默认会运行三大核心组件:
Kubelet:与管理节点通信并触发指令执行,管理驱动网络,存储及容器运行时;
Kube Proxy:通过DNS实现服务发现,借助iptables规则引导访问至服务IP,并将重定向至正确的后端应用,实现高可用负载均衡能力;
Container Runtime:容器运行时。为了扩展Kubernetes平台适配能力,同时也标准化整个生态,通过CNI与CSI标准规范网络及存储的扩展;通过CRI与OCI标准规范容器镜像及容器运行时的扩展;目前CRI支持的容器运行时有docker、rkt、cri-o、frankti、kata-containers和clear-containers等。
辅助工具,主要是辅助集群管理及网络扩展:
kubectl通过API Server进行交互,实现集群管理的命令行工具;
Dashboard 是Kubernetes的web用户管理监控界面&#