searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Kubernetes组件介绍

2023-08-28 02:47:18
17
0

局一幅图,内容全靠编

 其实学习Kubernetes就是几个组件,无非就就是kubelet、kubectl、API Server、Scheduler、Controller-Manager、ETCD、kube-proxy,还有就是域名解析组件CoreDNS,网络组件Flannel和Calico、IPtables,和网格组件istio,监控Prometheus,存储组件NFS、Gluster,再者就是各种资源如...

 emm那些都是后话,主要还是上面架构图这几个组件,别看这么多,其实,还有更多。

这几个都是比较核心的组件,想学好Kubernetes,就必须理解清楚,最好是能默写出来,当然不是真的靠背出来那种

关于kubernetes(k8s),这可能是讲的最通俗易懂的一次了_Sinnet-cloud的博客-CSDN博客_k8s通俗解释

Kubernetes

 关于Kubernetes的概念,这里就不再赘述了,就是一些组件组成的容器管理工具,功能非常强大,包括自动化装箱、自动恢复、扩缩容、负载均衡、灰度发布、版本回滚、存储编排等功能。

 所以这些组件就显得尤为重要了,这里就来简单介绍一下。

组件

1、kubectl

kubectl是Kubernetes的一个与用户交互的客户端命令行工具,负责传递请求,用户可以通过kubectl把一系列集群的请求命令传递给master,master接收到请求后就开始处理请求。

 当然也可以通过Web端、KubeSphere端的请求,但是其实底层的请求方式就是通过kubectl实现的。

2、Master Node

Master Node是Kubernetes的主节点,主节点一般不作为工作节点,就是不运行业务容器,只运行着一些重要组件,如Api Server、Scheduler、Controller-manager等,这些组件一旦挂了,整个集群可能就访问不了了。所以一般不在Master节点上部署其他容器。

 上图的Master Node只有一个,但是生产环境最好是集群形式的Master Node,这样才能实现高可用,以防出现Master Node的单点故障。

3、Work Node

Work Node,顾名思义就是工作节点,就是用来工作的,工具人。一个Master节点可以带着多个Worker节点,Worker节点就是处理请求的节点,

Master只管分配,分配到哪个Worker就是哪个Worker来部署这个容器,Master相当于董事会,Worker就是一群工具人。

我是工具人_工具表情 - 发表情 - fabiaoqing.com

4、Api Server

 Api Server是Kubernetes中一个非常非常重要的组件,这句话我只讲一遍。

 怎么个重要法呢?

Api Server是访问整个集群的唯一入口,所有组件都必须通过APIServer提供的API来操作资源数据,如果这个组件挂了,整个集群就访问不到了,所有请求都处理不了了。

 ApiServer主要负责处理请求使之生效,并把对象或结果等相关信息更新到ETCD中,并且也只能是APIServer能跟ETCD交互。并且,APIServer还要有监控、API版本控制、API注册和发现等功能。

 另外,APIServer 也是集群的网关,一般客户端通过APIServer对集群进行访问时需要通过认证,这个认证就是APIServer来做,APIServer就是访问Node和Pod的代理。

5、Scheduler

Scheduler,翻译为调度器,主要作用就是任务调度。

 APIServer接到请求后,并不是由APIServer直接分配调度任务的,而是通过Scheduler来处理。

 Scheduler会监测、收集和分析当前集群中所有节点的资源情况,根据请求资源的大小、顺序、是否可用等一系列约束条件来查找并分配到合适的Worker Node上。

调度主要过程:

  • 预选Node(没有合适Node):遍历集群中所有的Node,按照具体的预选策略筛选出符合要求的Node列表。如没有Node符合预选策略规则,该Pod就会被挂起,直到集群中出现符合要求的Node。
  • 优选Node(有一个或以上的合适Node):预选Node列表的基础上,按照优选策略为待选的Node进行打分和排序,从中获取最优Node。

PS:如果没有足够的资源或合适的条件,Pod不会被调度。

6、Controller-Manager

Controller-Manager是集群的管理中心,实现集群的故障检测和恢复的自动化工作,还有扩缩容,这也是Kubernetes的主要功能之一。

 主要负责集群内的Node、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(ServiceAccount)、资源定额(ResourceQuota)的管理,定期监测,如保证各个命名空间下的资源或某个service下挂载的pod跟实际运行的相对应。

7、kubelet

kubelet相当于Node上工具人,APIServer负责接活,而kubelet负责干活,主要是负责Node节点Pod的增删改查、监控等。

 kubelet可以当成APIServer与Node节点之间的桥梁,负责处理APIServer接收到的请求,当然kubelet也不直接和ETCD交互,而也是通过APIServer。

8、kube-proxy

kube-proxy是一个外部网络访问集群内跨节点的容器内部服务的代理,所以会运行在每个节点上。

 kube-proxy提供TCP/UDP的代理,每当创建一个Service,kube-proxy就会从ETCD中获取Service和Endpoints的配置信息,根据配置信息创建一个kube-proxy进程并监听对应的服务端口,当接到外部请求时,kube-proxy会根据随机、轮询等算法把请求发到对应的容器。

9、Pod

Pod是kubernetes集群里的最小管理单位,里面可以包含多个容器,这些容器共享存储、网络、命名空间等。

 在Pod中,所有容器都被统一安排和调度,并运行在共享的上下文中,对于具体应用而言,Pod就相当于容器中的应用的逻辑主机,而容器就相当于虚拟机。

 另外,每一个Pod都会被指派一个唯一的ip地址,在Pod中的每一个容器共享网络命名空间,包括ip和端口。

10、ETCD

 ETCD是一个跟Zookeeper类似的key-value型的键值对数据库,天生集群化高可用,也是通过Raft算法保持系统数据的CP和强一致性,也有一个watch的功能。

ETCD在kubernetes中不仅作为数据库存储着资源的信息,同时它还有集群的 服务发现、配置中心、集群监控等功能。

 ETCD只和APIServer交互,其他组件只能通过APIServer来间接和ETCD交互。

 需要注意的是watch功能,这个功能厉害了,可以理解为监控,Scheduler、Controller-Manager、kubelet等组件都需要通过watch来实现监测变化并及时作出响应。

10、Docker

    顺别提一嘴Docker,毕竟新版本的Kubernetes已经放弃了Docker作为基础容器组件。

    Docker架构图如上所示,Docker组件繁多,其实Kubernetes用到的主要就是红色框框部分,Kubernetes和Docker交互时需要通过上层的Docker Engine,性能差了还不好维护和迭代,每当Docker升级了Docker Engine后Kubernetes就需要做相应的调整,吃力不讨好,因此Docker也就慢慢被其他更加轻量便捷的方案替换。

总结:

简单来说,就是一堆组件完成了一堆功能,包括治愈、弹性伸缩、服务注册与发现、负载均衡、滚动升级、一键回滚等,方便快捷,运维的天堂,男人的加油站。

 所以搞定这堆组件就能搞掂Kubernetes。

 组件比较多,各司其职,理解就好办了,不是要求死记硬背,而是理解为什么要这样做,关键是理解。

 


0条评论
作者已关闭评论
w****n
3文章数
0粉丝数
w****n
3 文章 | 0 粉丝
w****n
3文章数
0粉丝数
w****n
3 文章 | 0 粉丝
原创

Kubernetes组件介绍

2023-08-28 02:47:18
17
0

局一幅图,内容全靠编

 其实学习Kubernetes就是几个组件,无非就就是kubelet、kubectl、API Server、Scheduler、Controller-Manager、ETCD、kube-proxy,还有就是域名解析组件CoreDNS,网络组件Flannel和Calico、IPtables,和网格组件istio,监控Prometheus,存储组件NFS、Gluster,再者就是各种资源如...

 emm那些都是后话,主要还是上面架构图这几个组件,别看这么多,其实,还有更多。

这几个都是比较核心的组件,想学好Kubernetes,就必须理解清楚,最好是能默写出来,当然不是真的靠背出来那种

关于kubernetes(k8s),这可能是讲的最通俗易懂的一次了_Sinnet-cloud的博客-CSDN博客_k8s通俗解释

Kubernetes

 关于Kubernetes的概念,这里就不再赘述了,就是一些组件组成的容器管理工具,功能非常强大,包括自动化装箱、自动恢复、扩缩容、负载均衡、灰度发布、版本回滚、存储编排等功能。

 所以这些组件就显得尤为重要了,这里就来简单介绍一下。

组件

1、kubectl

kubectl是Kubernetes的一个与用户交互的客户端命令行工具,负责传递请求,用户可以通过kubectl把一系列集群的请求命令传递给master,master接收到请求后就开始处理请求。

 当然也可以通过Web端、KubeSphere端的请求,但是其实底层的请求方式就是通过kubectl实现的。

2、Master Node

Master Node是Kubernetes的主节点,主节点一般不作为工作节点,就是不运行业务容器,只运行着一些重要组件,如Api Server、Scheduler、Controller-manager等,这些组件一旦挂了,整个集群可能就访问不了了。所以一般不在Master节点上部署其他容器。

 上图的Master Node只有一个,但是生产环境最好是集群形式的Master Node,这样才能实现高可用,以防出现Master Node的单点故障。

3、Work Node

Work Node,顾名思义就是工作节点,就是用来工作的,工具人。一个Master节点可以带着多个Worker节点,Worker节点就是处理请求的节点,

Master只管分配,分配到哪个Worker就是哪个Worker来部署这个容器,Master相当于董事会,Worker就是一群工具人。

我是工具人_工具表情 - 发表情 - fabiaoqing.com

4、Api Server

 Api Server是Kubernetes中一个非常非常重要的组件,这句话我只讲一遍。

 怎么个重要法呢?

Api Server是访问整个集群的唯一入口,所有组件都必须通过APIServer提供的API来操作资源数据,如果这个组件挂了,整个集群就访问不到了,所有请求都处理不了了。

 ApiServer主要负责处理请求使之生效,并把对象或结果等相关信息更新到ETCD中,并且也只能是APIServer能跟ETCD交互。并且,APIServer还要有监控、API版本控制、API注册和发现等功能。

 另外,APIServer 也是集群的网关,一般客户端通过APIServer对集群进行访问时需要通过认证,这个认证就是APIServer来做,APIServer就是访问Node和Pod的代理。

5、Scheduler

Scheduler,翻译为调度器,主要作用就是任务调度。

 APIServer接到请求后,并不是由APIServer直接分配调度任务的,而是通过Scheduler来处理。

 Scheduler会监测、收集和分析当前集群中所有节点的资源情况,根据请求资源的大小、顺序、是否可用等一系列约束条件来查找并分配到合适的Worker Node上。

调度主要过程:

  • 预选Node(没有合适Node):遍历集群中所有的Node,按照具体的预选策略筛选出符合要求的Node列表。如没有Node符合预选策略规则,该Pod就会被挂起,直到集群中出现符合要求的Node。
  • 优选Node(有一个或以上的合适Node):预选Node列表的基础上,按照优选策略为待选的Node进行打分和排序,从中获取最优Node。

PS:如果没有足够的资源或合适的条件,Pod不会被调度。

6、Controller-Manager

Controller-Manager是集群的管理中心,实现集群的故障检测和恢复的自动化工作,还有扩缩容,这也是Kubernetes的主要功能之一。

 主要负责集群内的Node、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(ServiceAccount)、资源定额(ResourceQuota)的管理,定期监测,如保证各个命名空间下的资源或某个service下挂载的pod跟实际运行的相对应。

7、kubelet

kubelet相当于Node上工具人,APIServer负责接活,而kubelet负责干活,主要是负责Node节点Pod的增删改查、监控等。

 kubelet可以当成APIServer与Node节点之间的桥梁,负责处理APIServer接收到的请求,当然kubelet也不直接和ETCD交互,而也是通过APIServer。

8、kube-proxy

kube-proxy是一个外部网络访问集群内跨节点的容器内部服务的代理,所以会运行在每个节点上。

 kube-proxy提供TCP/UDP的代理,每当创建一个Service,kube-proxy就会从ETCD中获取Service和Endpoints的配置信息,根据配置信息创建一个kube-proxy进程并监听对应的服务端口,当接到外部请求时,kube-proxy会根据随机、轮询等算法把请求发到对应的容器。

9、Pod

Pod是kubernetes集群里的最小管理单位,里面可以包含多个容器,这些容器共享存储、网络、命名空间等。

 在Pod中,所有容器都被统一安排和调度,并运行在共享的上下文中,对于具体应用而言,Pod就相当于容器中的应用的逻辑主机,而容器就相当于虚拟机。

 另外,每一个Pod都会被指派一个唯一的ip地址,在Pod中的每一个容器共享网络命名空间,包括ip和端口。

10、ETCD

 ETCD是一个跟Zookeeper类似的key-value型的键值对数据库,天生集群化高可用,也是通过Raft算法保持系统数据的CP和强一致性,也有一个watch的功能。

ETCD在kubernetes中不仅作为数据库存储着资源的信息,同时它还有集群的 服务发现、配置中心、集群监控等功能。

 ETCD只和APIServer交互,其他组件只能通过APIServer来间接和ETCD交互。

 需要注意的是watch功能,这个功能厉害了,可以理解为监控,Scheduler、Controller-Manager、kubelet等组件都需要通过watch来实现监测变化并及时作出响应。

10、Docker

    顺别提一嘴Docker,毕竟新版本的Kubernetes已经放弃了Docker作为基础容器组件。

    Docker架构图如上所示,Docker组件繁多,其实Kubernetes用到的主要就是红色框框部分,Kubernetes和Docker交互时需要通过上层的Docker Engine,性能差了还不好维护和迭代,每当Docker升级了Docker Engine后Kubernetes就需要做相应的调整,吃力不讨好,因此Docker也就慢慢被其他更加轻量便捷的方案替换。

总结:

简单来说,就是一堆组件完成了一堆功能,包括治愈、弹性伸缩、服务注册与发现、负载均衡、滚动升级、一键回滚等,方便快捷,运维的天堂,男人的加油站。

 所以搞定这堆组件就能搞掂Kubernetes。

 组件比较多,各司其职,理解就好办了,不是要求死记硬背,而是理解为什么要这样做,关键是理解。

 


文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0