这篇文章主要讲解了“Kubernetes的工作机制”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Kubernetes的工作机制”吧!
青河网站制作公司哪家好,找成都创新互联公司!从网页设计、网站建设、微信开发、APP开发、响应式网站建设等网站项目制作,到程序开发,运营维护。成都创新互联公司从2013年开始到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联公司。
Kubernetes是一款开源的通用多容器管理软件,提供了基本的部署、弹性扩容,自愈能力、负载平衡和流量路由等能力,是微服务应用程序的协调管理利器。Kubernetes将整个数据中心视为一台超级计算机,可以管理符合OCI标准的任何类型的容器。(例如Docker、Core OS的rkt容器等等)。Kubernetes的主要功能包括自动调度、自我修复、自动部署、回滚、水平扩展和负载平衡。
Kubernetes 架构由两个关键组件组成: master节点和worker节点(Minions)。
Master节点的工作方式类似于一个团队的管理者,负责整个集群的管理和控制,分配工作负载,类似于对团队有绝对控制权的足球教练。Master节点负责并做出全局决定,安排某个节点处理用户请求。Kubernetes还可以使用多Master节点设置来避免单点故障(Multi-Master HA)。Master节点仅在Linux系统上运行,但不限于任何特定平台,可以是服务器裸机、VM、OpenStack的实例或者任何其他云实例,但是不要在Master节点上运行用户容器(user container)。
Master节有以下组件。
kube-apiserverKube-apiserver遵循横向扩展架构设计,是Master控制节点的前端,提供了面向外部的接口,通过REST API与外部世界进行通信,它是资源对象的唯一操作入口,其他所有组件都必须通过它提供的API来操作资源数据。
etcd - 群集存储etcd是kubernetes默认使用的分布式键值存储库,提供了一种可靠的方式来存储kubernetes集群中的数据,主要被用来共享配置和服务发现。集群的所有状态都存储在etcd实例中,本身具有监控的能力,因此当etcd中的信息发生变化时,能够快速的通知集群中相关的组件。etcd扮演的角色如此重要,因此,必须有一个可靠的备份计划。
kube-controller-manager
Kube-Controller Manager是集群的管理控制中心,维护集群中的所有控制器(controller),对维持集群的稳定和自我修复,实现高可用,副本控制等起关键作用。它是一个嵌入式控制器并负责命名空间创建和垃圾收集的守护进程,主要管理以下控制器:
Node Controller - 管理节点(创建,更新和删除)。
Replication controller - 根据清单维护pod的数量。
Service Account & Token controller - 为新名称空间创建默认帐户和API令牌。
Endpoints Controller - 管理服务于端点对象(服务,pod)。
kube-scheduler
kube-scheduler通过apiserver实时监听来自新建pod的请求,并将工作负载分配到合适的工作节点。它监控所有工作节点的资源利用率,并根据新pod的资源需求和现有工作节点的负载做出逻辑决策。Kube-scheduler还需要考虑管理员定义的规则(亲和性和反亲和性,约束)。
Nodes比Master节点简单得多,是集群最小的计算单元,简单地完成master节点分配下去的任务。如果节点出现故障或挂掉了,我们可以轻易的地将其与新节点交换,让业务恢复正常。换句话说,该节点提供了在其上运行pod的所有必要服务。node节点可以是裸机、虚拟机、OpenStack实例或云实例。
Node节点由以下组件组成:
Kubelet - Kuberbernets主要代理
Kubelet是Kubernetes中最主要的控制器,它在每个节点上运行,是Pod和Node API的主要实现者,并使从服务器可以与主服务器通信。它把Node节点注册到集群里,并监视Master kube- apiserver以接收指令进行工作分配。所在Node节点上的Pod的创建、修改、监控、删除等全生命周期管理都是它管理。同时Kubelet定时“上报”所在Node的状态信息到API Server里,如果pod存在问题,它会向Master报告。Kubelet对外暴露只读端口:10255,可以获取Kubelet监控状态信息,该端口是免认证非安全的。
/ spec endpoint - 提供有关运行节点的信息。
/ healthz endpoint - 其运行状况检查端点。
/ pods endpoint - 提供运行pod信息。
容器引擎 - 容器Run-time
Pods将容器打包到其中。要部署容器,你需要容器Run-time软件。在大多数情况下,它就是一个docker引擎,当然我们还可以使用其他容器运行时软件(例如:rkt)。容器引擎管理在pod上运行的容器,它将拉取镜像以进行部署并启动/停止容器上的容器。
Kube-proxy
kube-proxy是node节点的大脑,它确保每个pod可以获得唯一的IP。如果要在一个pod中打包多个容器,则pod中的所有容器共享一个IP。它还对服务中的所有pod进行负载均衡(通过iptables规则引导访问至服务IP,并将重定向至正确的后端应用,通过这种方式提供了一个高可用的负载均衡解决方案)。
下图显示了pod在工作节点中创建的流程。Kubectl是命令行实用程序,你可以在其中将命令传递给Kubernetes集群以创建和管理各种Kubernetes组件。
感谢各位的阅读,以上就是“Kubernetes的工作机制”的内容了,经过本文的学习后,相信大家对Kubernetes的工作机制这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!