学习Kubernetes架构和组件 8分钟阅读 来源:
今天我们将介绍:
什么是Kubernetes?Kubernetes俗称K8 K8s是Google开发的生产级开源容器编排工具,可帮助您管理支持多个部署环境(例如本地,云或虚拟机)的容器化/泊坞窗化应用程序。
为什么选择K8s:K8S解决了什么问题?K8之所以如此受欢迎的主要原因之一是对企业不断增长的需求以支持其微服务驱动的架构需求。 微服务架构可帮助企业:
公司从传统的整体服务向微服务转移的愿望导致了大型容器化应用程序的创建。每个容器映像本身就是一个微服务,需要以较少的开销有效地进行管理和扩展,这种处理成千上万个容器的需求对于组织而言是一项繁琐的任务。这个问题导致K8演变为流行的容器编排工具之一。 该组织采用了诸如Kubernetes之类的容器编排工具,这具有以下主要优点: K8s提供什么功能?
既然我们已经了解了为什么必须使用K8,那么现在该对K8的基础体系结构进行解码了 Kubernetes集群的基本架构:Kubernetes集群的最基本架构具有两个主要节点
如果遵循Kubernetes的官方文档,那么掌握它们的概念将变得非常压倒性的。因此,我们将尝试通过必要的简化来理解相同的内容。 首先,让我们了解K8中的工作程序节点或从属节点如何工作,以及工作程序节点的关键组成部分是什么 K8s集群中的工作节点:图:2.0:K8s集群中的工作节点组件 作为开发人员或K8s管理员,大多数时候您将要处理工作节点,无论是必须部署容器化的应用程序还是必须对其进行自动伸缩,还是必须在生产级服务器上推出任何新的应用程序更新,通常会处理工作者节点。 由于此节点执行集群管理员或开发人员所需的实际工作,因此称为工作节点。工作节点可以具有一个或多个Pod,这些Pod是您对容器化应用程序的抽象。如图2.0所示,每个工作人员都运行这3个关键过程
容器运行时:您部署的每个微服务模块(micro-app)都打包到一个单独的容器中,该容器具有自己的容器运行时。需要将容器运行时安装到群集中的每个工作程序节点中,以便Pod可以在其中运行。 一些容器运行时示例是
kubelet:kubelet是工作程序节点的主要节点代理,它与节点和给定工作程序节点中的容器交互。 该kubelet负责
在一个Kubernetes集群中,kubelet手表PodSpecs通过Kubernetes API服务器。 PodSpec是一个描述Pod的YAML或JSON对象。所述kubelet采用一组通过各种机制(主要是通过提供的PodSpecs的API服务器),并确保在那些PodSpecs描述的容器正在运行和健康。
Kube 代理:K8集群可以有多个工作程序节点,并且每个节点有多个运行的Pod,因此,如果必须访问此Pod,则可以通过Kube-proxy进行访问。
为了通过k8s服务访问Pod,有一些网络策略允许从群集内部或外部的网络会话到Pod进行网络通信。这些规则是通过kube-proxy处理的 kube-proxy具有智能算法,可转发Pod访问所需的网络流量,从而最大程度地减少了开销,并使服务通信更加高效 到目前为止,我们已经看到这三个进程需要在您的工作程序节点中成功安装并运行,以便有效地管理您的容器化应用程序,但是更大的问题是
答案就在于“主节点”的概念,下面我们来探讨一下 K8s集群中的主节点:图:3.0 K8中的主节点进程 所述主节点也被称为一个控制平面,其负责有效地管理工人/从节点。他们与工作节点互动以
主节点流程:K8s集群中的每个主节点都运行以下关键过程
让我们详细研究每个流程 kube-apiserver:它是访问k8s集群并充当客户端级别身份验证的主要网守的主要网关,或者我们可以说kube-apiserve r是Kubernetes控制平面的前端。 所以只要你想
您需要向主节点的API服务器发出请求,该服务器随后会在访问工作节点中的进程之前验证您的请求。
K8s主节点中的kube-scheduler:每次作为K8s管理员/开发人员,如果您想在工作节点上安排新的Pod,您都需要将请求发送到主API服务器,该服务器随后将调用Kube-scheduler进程。此处的调度程序将智能地决定应将此Pod放置在哪个工作程序节点上。 因此,我们可以将kube-scheduler定义为:
基于每个节点的资源级别可用性,此决定应将新创建的Pod容纳在哪个工作节点上。调度程序进行资源级别查询并做出重要的调度决策。 调度程序级别决策的实际执行是由给定工作节点中的kubelet进程完成的 有关Pod调度的关键决定因素包括:
稍后我们将更详细地介绍k8,我们将了解上述限制和政策。 kube-controller-manager(Kubectl):它是监视任何工作节点级别故障状态的主节点中的关键过程之一。它会密切关注像这样的事件
并且,在检测到此类事件后,请求调度程序重新启动或重新计划任何已失效/失败的Pod。 主控制计划器的这些控制管理器组件具有以下类型的控制器:
K8s主节点中的etcd:主控平面中的etcd负责以键值对的形式存储各种集群级别的更改。 可以很容易地将其视为k8s集群的大脑,它记录着集群中发生的变化的每分钟细节。 例如,如果任何Pod在工作节点中崩溃,并且必须对其进行重新调度,则将其作为键值对存储在etcd中,并且节点上的Pod重新调度的事件也将记录在此处。 因此,数据与一些关键问题有关,例如
实际存储在此处,以确保我们的k8s集群意识到这一点,并据此采取明智的行动 注意! 诸如DB之类的应用程序级别数据未存储在etcd中。 Kubernetes组件:现在我们已经了解了K8s的体系结构过程,是时候研究K8s的一些关键组件了,这些组件可以帮助您进行产品级的容器编排。 我们将在这里列出这些组件,并在第二部分中详细介绍每个组件。 “第2部分:Kubernetes的关键组件和概念介绍了“ K8s的一些关键组件是:
下一步是什么?我们将研究上面列出的每个组件的概念,并将进行一些小型动手练习,以了解每个概念的实现。 因此,来考虑一下这个想法:
祝大家2021年生产力卓著,幸福#HappyNewYear (本文由闻数起舞翻译自文章《Kubernetes Fundamentals For Absolute Beginners: Architecture & Components》,转载请注明出处,原文链接: |
|
来自: 菌心说 > 《编程+、计算机、信息技术》