当前位置: 首页 > 科技观察

初学者Kubernetes架构介绍

时间:2023-03-18 23:02:41 科技观察

想要开始使用Kubernetes吗?查看这份关于Kubernetes架构基础知识的快速入门指南,以及入门时应该了解的关键事项Kubernetes作为一个强大的平台,尤其是对于云原生应用程序,它的声誉是当之无愧的。它提供了一组丰富的灵活功能。这种声誉还包括对初学者来说可能很陡峭的学习曲线,尤其是当您尝试使用开源平台开辟自己的道路时。Aquasecurity的联合创始人兼首席技术官AmirJerbi说:“Kubernetes最初的设置看似简单,但要根据您的需求、规模和安全性进行正确配置可能会非常复杂。”“作为一个开源项目,它有意松散了一些令人困惑的选项。”这些选项实际上是编排工具强大功能的一部分:您可以轻松获得很多功能,而且数量很多。从长远来看,Kubernetes可以减轻DevOps团队管理容器化工作负载的负担。如果没有编排平台,容器和微服务可能会产生巨大的运营开销。但在短期内,这可能会让人感到不知所措。Kubernetes架构。从哪里开始”,Kasten的工程主管TomManville说,“Kubernetes提供了一组非常丰富的抽象,有效的软件原语,可以自动化计算、存储、网络和其他基础设施服务的功能”“在很多方面,开发人员认为在这些方面较少,但他们需要学习Kubernetes如何定义和自动化这些功能,以便他们可以适当地调用这些功能。“今天,Kubernetes中并没有使底层系统更容易理解的抽象。它们只是让它们更易于使用。”RedHatOpenShift首席技术营销经理ChrisShort说。你和你的团队应该准备好从错误中学习,从笔记中学习。如果您刚刚起步,了解Kubernetes架构的基础知识并了解您需要做出选择的一些事情很重要。熟悉Kubernetes的老手可能会觉得这很容易,但是有成千上万的对平台还是新手的IT专业人员。这是Kubernetes架构基础知识的快速入门,以及一些您需要入门的其他关键知识。“Kubernetes有不同的架构组件,用户在提供这些功能时需要学习这些组件——Kubernetes的控制平面和在每个节点上运行的控制平面,”Manville说。“他们(还)需要了解如何保护主要组件的安全,包括API服务器,因为处理了许多关键功能。”让我们通过Manville等人的更多专家见解为这种理解奠定基础。Kubernetes基础知识:节点和集群Kubernetes本质上具有客户端-服务器架构——只是术语可能与您熟悉的其他系统略有不同。这里的一个关键概念是节点:每个Kubernetes集群都由一个主节点和至少一个工作节点组成。(一个集群通常会包含多个工作节点。)主节点本质上是操作的大脑:它控制你想要的状态,一切都来自它。工作节点是运行实际应用程序和工作负载的物理机或虚拟机。“Kubernetes有两个目标:成为集群管理员和资源管理员,”开发人员RaviLachhman解释道。Kubernetes使用master-to-worker模型,这意味着工作节点是可扩展且可用的。Kubernetes架构可以为不同的工作负载使用不同的工作节点大小,因此资源管理器部分将在您的集群中找到合适的位置来执行工作。“主节点包含三个关键组件:KubernetesAPI服务器、调度程序和控制器管理器。完整的Kubernetes控制平面还包括etcd和kubectl。后者是Kubernetes用于管理集群的命令行界面。本质上,是告诉主节点做什么的方式。同时,工作节点包括kubelet、kube-proxy和你运行的容器。Kubernetes官方文档提供了一个有用的图表(图1),显示了它们之间的关系master节点和worker节点各组件之间的关系,包括各个组件图1:Kubernetesmaster节点和worker节点的关系这是每个集群的基本设置:一个master节点和至少一个(可能多个)worker节点或工作机器,它可以是虚拟的或物理的。现在让我们谈谈平台和安全选择:评估重要的平台和安全选择考虑到这一点,您需要做出一些关键的设计选择。一个基本问题是:您是为Kubernetes中的每个应用程序运行一个单独的集群,还是在同一个集群中管理多个应用程序?两者皆有可能;来自AquaSecurity的Jerbi指出它是关键的架构考虑因素之一,通常它带有一些优点和缺点。“多租户模型有点复杂,通常使用K8s命名空间在应用程序之间创建管理隔离,但在资源利用方面效率更高,”Jerbi说。“另一方面,如果你的应用程序本身很大并且没有太多共同点,那么设置单独的集群会更容易,特别是对于初学者而言。”Jerbi还补充道:如果你使用的是商业或托管Kubernetes服务,后者尤其如此,并且还可以让你更好地调整特定应用程序的资源和安全要求。来自Kasten的Manville指出,即使你选择商业运行在开源Kubernetes项目之上的平台以减少日常管理工作,您仍然需要了解底层系统。采用这种方法并不能使他们摆脱对Kubernetes及其功能的了解。“安全是另一个问题Manville说:“你需要做出重要决定的领域。安全本身是Kubernetes的一个有趣的学习曲线。”该平台支持许多本机控件,但默认情况下不一定安全启用它们,而且它们不容易开始。“随着速度和规模的增长,请记住Kubernetes是‘可扩展的’和‘可插入的’。”这又回到了一个选择问题:它不是一个放之四海而皆准的工具。在Kubernetes平台内的意见或实现,你可以替换大多数项目。例如,不喜欢Kubernetes处理Ingress的方式?你可以换掉其他提供者,例如Istio或Traefik。“比较点:Kubernetes与云计算”Manville为抽象地思考Kubernetes提供了一个有趣的参考点:云本身。简而言之:既相似又不同。”在云的异同方面,它提供了有趣的比较。“Kubernetes就像云,因为它提供抽象和原语以编程方式配置基础设施功能,但Kubernetes与云的不同之处在于它不限于基础设施,而是具有可扩展的工作负载对象/资源模型——这些是标准化的对象,例如Deployments和Pod,还指定应用程序如何相互交互。“这是另一层令人眼花缭乱的选择菜单。从大局来看这是一件好事,包括提高安全性,但一开始可能会让人望而生畏。“开发人员可以使用这些功能在生命周期的早期确保更高的工作负载安全性,但他们也需要意识到保护环境所需的配置并不总是显而易见的。”