浅析Kubernetes的工作原理

转至 https://www.cnblogs.com/163yun/p/9518901.html

先放一张Kubernetes的架构图:

整体来看,是一个老大,多个干活的这种结构,基本上所有的分布式系统都是这样,但是里面的组件名称就纷繁复杂,下面将一一解析。

1、元数据存储与集群维护

作为一个集群系统,总要有一个统一的地方维护整个集群以及任务的元数据。而且作为集群系统的控制节点,为了高可用性,往往存在多个Master,在多个Master中间,总要有一个Leader。

在Kubernetes里面,统一的存储使用etcd来保存,Leader的选举也是通过etcd进行,因而有apiserver有参数--etcd-servers,controller和scheduler都有参数--master string指向apiserver,并且有参数--leader-elect选举出Leader,也会有熟悉的--address ip。

2、API层与命令行

作为一个分布式系统,每一层都会有自己的API,但是对外往往需要一个统一的API接口层,一般除了酷酷的界面之外,为了自动化,往往会有一个命令行可以执行操作,其实命令里面封装的也是对API的调用。

对于Kubernetes,API层是一个单独的进程apiserver提供,认证和鉴权也是在这一层实现的,所有对于kubernetes的管理平台的访问都是通过apiserver这一层进行的。

对于命令行,kubernetes是kubectl,通过向apiserver调用执行操作,例如pod,service,deployment等。Kubernetes也有自己的类似package的管理,Kubernetes Helm,但是命令就变成了helm了。

3、调度

当运行一个容器的时候,放在哪台节点上,这个过程是调度。对于Kubernetes,调度是由一个单独的进程scheduler负责的。

Kubernetes也支持通过对Node设置Label,从而将pod放在某些节点上。另外kubernetes还有NodeAffinity:

  • RequiredDuringSchedulingRequiredDuringExecution:在调度的时候必须部署到某些节点,运行期如果条件不满足则重新调度
  • RequiredDuringSchedulingIgnoredDuringExecution :在调度的时候必须部署到某些节点,运行期就算了。
  • PreferredDuringSchedulingIgnoredDuringExecution :在调度的时候最好部署到某些节点,运行期就算了。

4、副本与弹性伸缩

容器如果部署无状态服务,一个好处就是可以多副本,并且可以弹性伸缩。

在Kubernetes里面,副本数目是以pod为单位的,由controller进程控制,可以通过创建一个Deployment来控制副本数。

Kubernetes也可以实现autoscaling。有一个组件Horizontal Pod Autoscaling,可以通过监控CPU的使用情况动态调整Pod的数量。

5、编排

为了能够通过编排文件一键创建整个应用,需要有编排功能。Kubernetes的编排是基于yml文件。

6、服务发现与DNS

容器平台的一个重要的功能是服务发现,也即当容器的地址改变的时候,可以自动进行服务之间的关联。

一般的服务发现首先要通过DNS将服务名和应用关联起来,可以基于DNS对一个服务的多个应用进行内部负载均衡,也有直接加一个内部负载均衡器来做这件事情。

Kubernetes的DNS组件是通过skyDNS实现的,负载均衡是通过将DNS转化为VIP,有个内置的负载均衡器kube-proxy来完成这件事情。

7、容器

Kubernetes支持Docker、RKT等多种容器格式。

8、网络

容器的网络配置有Docker Libnetwork Container Network Model(CNM)和Container Network Interface(CNI)两个阵营。Docker Libnetwork的优势就是原生,而且和Docker容器生命周期结合紧密;缺点也可以理解为是原生,被Docker“绑架”。Kubernetes属于CNI阵营,CNI的优势是兼容其他容器技术(e.g. rkt)及上层编排系统(Kuberneres & Mesos),而且社区活跃势头迅猛,缺点是非Docker原生。

9、存储

Kubernetes可以创建Persistent Volumes,支持GCE,AWS,NFS,GlusterFS,Ceph等。

10、监控

容器的监控中Prometheus +cadvisor是主流的方案,而cadvisor来自Kubernetes的一个组件。

11、大数据与包管理

在kubernetes里面部署大数据可以参考https://github.com/kubernetes/examples

12、负载均衡

这里的负载均衡指的是外部负载均衡。在kubernetes中,外部负载均衡器是通过一个ingress controller根据请求进行创建,如果在云平台例如GCE,可创建云平台的负载均衡器,云平台的负载均衡器可通过NodePort连接到后端的Service。

13、节点

kubernetes的Node上跑的是kubelet。

14、升级与回滚

所有的容器平台对于容器多副本的升级全部都是要滚动升级,在Kubernetes里面,同样有对rolling update的支持。

原文地址:https://www.cnblogs.com/wintersoft/p/10767781.html

时间: 2024-11-14 13:16:40

浅析Kubernetes的工作原理的相关文章

Kubernetes NetworkPolicy工作原理浅析

Kubernetes能够把集群中不同Node节点上的Pod连接起来,并且默认情况下,每个Pod之间是可以相互访问的.但在某些场景中,不同的Pod不应该互通,这个时候就需要进行访问控制.那么如何实现呢? 简介 ??Kubernetes提供了NetworkPolicy的Feature,支持按Namespace和按Pod级别的网络访问控制.它利用label指定namespaces或pod,底层用iptables实现.这篇文章简单介绍Kubernetes NetworkPolicy在Calico上的工作

浅析CodeIgniter框架工作原理

CodeIgniter(以下简称CI,官网以及中国站)是一个流行的PHP框架,小巧但功能强大,简洁轻量同时拥有很好的扩展性,在国内也比较受欢迎.另一方面,CI却没有与时俱进,并不支持PHP5.3之后的一些特性,导致它更适合PHP5.2及之前的项目.虽然如此,但CI仍是一个优秀的框架,而且内核较小,源码优雅,适于学习. CI易于使用,可以方便的开发出web应用.先来复习一下CI的工作流程图(此处内容引用自http://codeigniter.org.cn/user_guide/overview/a

【Ceph浅析笔记】Ceph的工作原理

本章主要对Ceph的工作原理进行介绍. 寻址过程 如果Client来了一个请求,不管个请求是读还是写都需要先寻址,才能找到数据应该放哪里或者说需要从哪里去. 之前我们说过Ceph的寻址方式是基于计算的,这样就避免的查表,也避免了使用一个单独的元数据服务器. 概述 对于Client传来的一个File,为了方便处理,我们可以将其分割为若干大小相同的小块Object. 然后可以将这些Object映射到OSD上,如果使用一种固定的映射算法,则一个Object每次都会固定的映射到一组OSD上,那么如果这个

Sftp和ftp 区别、工作原理等(服务器被动就是被动模式,PORT模式建立数据传输通道是由服务器端发起的,在PASV模式中,数据传输的通道的建立是由FTP客户端发起的)good

Sftp和ftp over ssh2的区别 最近使用SecureFx,涉及了两个不同的安全文件传输协议: -sftp -ftp over SSH2 这两种协议是不同的.sftp是ssh内含的协议,只要sshd服务器启动了,它就可用,它本身不需要ftp服务器启动.ftp over SSH2则象一个二传手. 1.SFTP的工作模式: 图1显示了SFTP的工作模式,它是作为SSH2的一个子服务工作的. 图 1 SFTP工作模式 2.FTP over SSH2 此协议还是基于ftp协议的.在此协议中SS

Sftp和ftp 差别、工作原理等(汇总ing)

Sftp和ftp over ssh2的差别 近期使用SecureFx,涉及了两个不同的安全文件传输协议: -sftp -ftp over SSH2 这两种协议是不同的.sftp是ssh内含的协议,仅仅要sshdserver启动了,它就可用,它本身不须要ftpserver启动.ftp over SSH2则象一个二传手. 1.SFTP的工作模式: 图1显示了SFTP的工作模式,它是作为SSH2的一个子服务工作的. 图 1 SFTP工作模式 2.FTP over SSH2 此协议还是基于ftp协议的.

Android 4.4 Kitkat Phone工作流程浅析(十一)__PSensor工作流程浅析

本文代码以MTK平台Android 4.4为分析对象,与Google原生AOSP有些许差异,请读者知悉. 前置文章: <Android 4.4 Kitkat Phone工作流程浅析(一)__概要和学习计划> <Android 4.4 Kitkat Phone工作流程浅析(二)__UI结构分析> <Android 4.4 Kitkat Phone工作流程浅析(三)__MO(去电)流程分析> <Android 4.4 Kitkat Phone工作流程浅析(四)__RI

kubelet工作原理

在调度这一步完成后,Kubernetes 就需要负责将这个调度成功的 Pod,在宿主机上创建出来,并把它所定义的各个容器启动起来.这些,都是 kubelet 这个核心组件的主要功能. kubelet 本身,也是按照“控制器”模式来工作的.它实际的工作原理,可以用如下所示的一幅示意图来表示清楚. kubelet 的工作核心,就是一个控制循环,即:SyncLoop(图中的大圆圈).而驱动这个控制循环运行的事件,包括四种: 1.Pod 更新事件: 2.Pod 生命周期变化: 3.kubelet 本身设

浅谈k8s:k8s部署架构以及工作原理

对于每个想落地kubernetes应用的工程师来说,熟悉kubernetes的架构和工作原理是必经之路,也是必须知道的知识,只有了解kubernetes的架构和工作原理才能更好的应用kubernetes . kubernetes架构 Kubernetes最初源于谷歌内部的Borg,提供了面向应用的容器集群部署和管理系统,所以整体的架构和borg很相似,整个架构有api server,control manager,scheduler,etcd,kubelet,kube-proxy,network

PM2工作原理

PM2工作原理 要理解pm2就要理解god和santan的关系,god和santan的关系就相当于盖娅和黑底斯在pm2中的01世界中,每一行代码每一个字节都安静的工作god就是Daemon进程 守护进程,重启进程,守护node程序世界的安宁,santan就是进程的毁灭者,异常进程的退出,杀死进程,毁灭进程等工作,都是由这位大哥操手. 架构图如下: god和santan通讯的方式,就是RPC RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网