Kubernetes架构+核心组件最全介绍合集
本篇目标
分析为什么选择kubernetes
kubernetes概述
kubernetes架构介绍和分析
kubernetes核心概念POD,POD控制器,Service详解
下一篇完整安装Kubernetes
为什么需要Kubernetes
很多小伙伴儿对Kubernetes可能都是听过但没用过,然而如果你真的去落地微服务架构会发现,Kubernetes是绕不开的。在架构班压轴实战-微服务架构电商平台中,一共有15个微服务,7个定时作业processor,再加上Redis、RabbitMQ、MongoDB、ElasticSearch、Kafka、ELK、Apollo等各种组件,分别还得集群部署,算起来都得100多个进程了,怎么部署?当然是容器化的,但是100多容器真不是人能管的过来的。中途我演示了用docker-compose管理,写脚本都能让人崩溃,Kubernetes才是正解!
Kubernetes是什么
Kubernetes诞生之初就是个管理容器的工具,然而在管理好容器之后,又提供了各种进阶好用的功能,在架构班的实战中得到了很好的应用,下面一一介绍下:
自动发布与伸缩
可以通过声明式的配置文件定义想要部署的容器,Kubernetes将自动进行容器的部署,达到期望的结果;通过指定容器副本数,或者设置根据资源负载情况(如CPU、内存使用率),自动对容器组进行快速的伸缩——增大或缩小容器数量,做到流量自适应
滚动升级与灰度发布:采用逐步替换的策略实现滚动升级,使用Kubernetes也可以很轻易地管理系统的灰度发布
服务发现与负载均衡:Kubernetes通过DNS名称或IP地址暴露容器的访问方式,并且可在同一容器组内实现负载分发与均衡
存储编排:Kubernetes可以自动挂载指定的存储系统,如local storage/nfs/云存储等
故障恢复:Kubernetes自动重启已经停机的容器,替换不满足健康检查的容器
密钥与配置管理:Kubernetes可以存储与管理敏感信息,如Docker Registry的登录凭证,密码,ssh密钥等
Kubernetes架构:kubernetes是用于自动部署,扩展和管理容器化应用程序的开源系统。它源自Google15年生产环境的运维经验,他的灵活性能让我们在应对复杂系统时得心应手。

k8s核心组件:
etcd 保存了整个集群的状态;
apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
kubelet 负责维护容器的生命周期,同时也负责Volume(CSI)和网络(CNI)的管理;
Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);
kube-proxy负责为Service提供cluster内部的服务发现和负载均衡;
除了核心组件,还有一些推荐的插件,其中有的已经成为CNCF中的托管项目:
CoreDNS负责为整个集群提供DNS服务
Ingress Controller为服务提供外网入口
Prometheus提供资源监控
Dashboard提供GUI
Federation提供跨可用区的集群
Kubernetes架构示意图
整体架构

Master架构

Node架构

分层架构

说 明
核心层:Kubernetes最核心的功能,对外提供API构建高层的应用,对内提供插件式应用执行环境
应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS解析等)、Service Mesh(部分位于应用层)
管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等)、Service Mesh(部分位于管理层)
接口层:kubectl命令行工具、客户端SDK以及集群联邦
生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴
Kubernetes外部:日志、监控、配置管理、CI/CD、Workflow、FaaS、OTS应用、ChatOps、GitOps、SecOps等
Kubernetes内部:CRI、CNI、CSI、镜像仓库、Cloud Provider、集群自身的配置和管理等
K8S核心概念
POD是什么
POD是K8S创建、管理和部署的最小单元,其他资源对象都是支撑和扩展POD,一个POD包含一个或者多个容器。为了将容器的生命周期和进程的生命周期绑定,通常一个容器内只包含一个进程;当一个服务运行需要多个进程时,为了保持这个规则,因此需要比容器更高一级的对象,这就是POD。




POD 控 制 器
POD控制器是什么
为更好的使用POD,K8S一般不直接创建POD而是通过创建中间层POD控制器来使用POD。通过POD控制器可以更好的实现POD的保活、扩缩容和升级等操作。














Service&Ingress
Service是什么







本篇文章偏理论介绍,在下一篇将实操Kubernetes集群环境构建,一起来试试吧!