K8S中各个核心架构组件具体是什么?
摘要:一、写在前面 K8S的文章很多人都写过,若要想好好研读,系统的学习,真推荐去看官方文档。但是若是当上下班路上的爽文,可以看下我的笔记,我也会尽力多写点自己的理解进来。 推荐手机阅读原文,有动态表情图,阅读体验感更佳:https:mp.w
目录一、写在前面二、K8S为我们提供了怎样的能力三、架构3.1、MasterNode3.2、WorkerNode四、核心组件4.1、ApiServer4.1.1、概述4.1.2、是集群管理API的统一入口4.1.3、提供了完备的安全认证机制4.1.4、典型使用场景4.1.5、Api Proxy接口4.2、ControllerManager4.2.1、Replication Controller4.2.2、Node Controller4.2.3、ResourceQuota Controller4.2.4、Namespace Controller4.2.5、Service Controller - Endpoint Controller4.3、Scheduler4.4、Kubelet4.4.1、Node管理4.4.2、Pod管理4.4.3、容器健康检查4.5、KubeProxy4.5.1、k8s1.2版本前4.5.2、k8s1.2~1.7版本4.5.3、k8s1.8版本及之后五、网络组件5.1、CoreDNS5.2、CNI网络插件
一、写在前面
K8S的文章很多人都写过,若要想好好研读,系统的学习,真推荐去看官方文档。但是若是当上下班路上的爽文,可以看下我的笔记,我也会尽力多写点自己的理解进来。
推荐手机阅读原文,有动态表情图,阅读体验感更佳:https://mp.weixin.qq.com/s/bL-85BhOj8H5Dis_94lmrQ
推荐手机阅读原文,有动态表情图,阅读体验感更佳:https://mp.weixin.qq.com/s/bL-85BhOj8H5Dis_94lmrQ
推荐手机阅读原文,有动态表情图,阅读体验感更佳:https://mp.weixin.qq.com/s/bL-85BhOj8H5Dis_94lmrQ
二、K8S为我们提供了怎样的能力
大家都知道Docker,我们可以将自己的应用打包制作成Image,然后通过docker run命令将Image启动成Container对外提供服务。
点击查看白日们的Docker网络笔记
点击查看白日梦的视频教程-二十分钟彻底搞懂Docker网络!
基于此,K8S不仅能将用户提供的单个容器运行起来,将其对外暴露出去提供服务。还提供了:路由网关、集群监控、灾难恢复,以及应用的水平扩展等能力。
大家常听过一个词:微服务、云原生应用,如何理解这个词自然也是见仁见智。
如下图是SpringCloud的架构图:
在SpringCloud中有不同的组件,诸如提供服务发现能力的:Eureka、提供负载均衡机制的Ribbon、以及微服务的统一入口Zuul,基于这套框架做过开发的同学都知道,无论是Eureka还是Zuul,无论开发量大小,都需要程序员开发相应的代码,即使这些代码和业务本身并没有什么关系。
而在K8S中,像Eureka的服务发现能力,Zuul的网关能力、以及Ribbon的负载均衡能力,K8S都是原生支持的,开发人员只需要写好自己的业务代码,提供一个可执行的jar包,或者二进制文件即可部署进K8S中就行
当然不仅于此,K8S的服务网格组件如:Istio还提供了流量治理能力,比如按不同的请求头做不同比例的流量分发调度、亦或者是金丝雀发布。
说起容器编排,像Docker的Compose或者是Docker-Swarm都提供了简单的容器编排的能力。
点击查看白日梦的-玩转Docker容器编排-DockerCompose、Docker-Swarm
像Docker-Compose或者Docker-Swarm的通病就是过于以Docker核心,提供的能力也过于简单比如定义谁先启动谁后启动。
