Kubernetes 架构:2022 年你需要知道的一切

已发表: 2021-01-05

目录

关于 Kubernetes

Kubernetes 是一个开源平台,具有资源最大化、自动部署过程和更新、自动扩展、自我修复、自动回滚和部署、容器编排器负载平衡、服务发现、自动重启、自动放置等功能。和自动复制等。Kubernetes不仅仅是一个容器编排器; 它也是基于云的应用程序的操作系统。

它就像一个运行应用程序的平台,类似于在 Windows、MacOS 或 Linux 上运行的其他应用程序,具有更大的灵活性。 它减少了编排的负载,并允许开发人员完全专注于以容器为中心的工作流,以实现自助操作。 开发人员在部署和应用程序管理方面具有高度自动化的优势。 它可以与任何环境集成以增强功能。

阅读:印度的 Kubernetes 工资

Kubernetes 架构

Kubernetes 架构由层组成:更高层和更低层。 在这个个体中,物理机或虚拟机被汇集到一个集群中。 共享网络用于每个服务器之间的通信。 Kubernetes 有一个(至少)一个主控作为控制平面,一个分布式存储系统。 多个集群节点也称为 Kubelets。

  • Kubernetes 的主控,控制平面,调度部署,公开 API 并管理整个 Kubernetes 集群。
  • 集群节点运行容器运行时、与主节点通信的代理以及其他监控组件、日志记录等。

Kubernetes架构Kubernetes 组件如下图所示。

资源

让我们看一下Kubernetes 组件

Kubernetes 组件

大师:Kubernetes 控制平面

Master 维护着 Kubernetes 中每个对象的数据。 由于它管理整个集群,因此它被称为 Master。 它控制对象状态,维护系统真实状态与所需状态的匹配,响应变化等。

它包含以下三个重要组成部分:

  • Kube- API 服务器: Kubernetes API 服务器
  • Kube-Scheduler:工作节点中的 Pod 调度
  • Kube-Controller:管理 pod 复制

如果有多个主节点,则这些组件将在所有主节点之间复制。

包括更新、扩展等在内的各种应用程序的生命周期编排由 API Server 完成。 它作为不在集群内的客户端的网关。 API 服务器进行身份验证。 它还充当 pod 和节点的中介。

控制器执行以下任务:

  • 运行核心控制循环
  • 将驾驶状态更改为所需状态。
  • 观察集群状态

它还通过集成到公共云中来提供路由、存储服务、负载平衡、DNS 网络服务、VM 实例。 驱动自动缩放状态的不同控制器、节点、服务和 Pod、命名空间。

整个节点的容器调度由集群内的Scheduler完成; 考虑不同的资源限制/保证,或反亲和/亲和规范。

Kubernetes 控制平面分类如下所示:

资源

集群节点:Kubelets

Kubelet 是负责运行容器的不同机器。 主节点管理集群节点。 它也被称为小黄人。 集群节点被认为是 Kubernetes 的主控制器。 它驱动容器的执行层 Docker。

它包含以下组件:

  • Pod:容器组
  • Docker:基于容器的技术,OS的用户空间
  • Kubelet:负责维护一组 pod 的容器代理。
  • Kube-proxy:路由从服务进入节点的流量。

Kubernetes 集群节点分类如下所示:

资源

Pod 和服务

Pod 是 Kubernetes 中开发人员与之交互的一个重要概念。 它代表正在运行的进程。 它可以托管垂直集成的应用程序堆栈,例如 WordPress LAMP 应用程序。 下面给出了不同的 pod 类型:

吊舱类型功能性
副本集简单的 Pod 类型

确保固定吊舱的运行

部署通过ReplicaSet的声明式方式管理 pod

包括滚动更新和回滚机制。

有状态集管理应该持续存在的 pod
守护进程确保每个节点运行一个 pod 实例。

管理集群服务,例如日志转发和健康监控。

CronJob 和作业作为调度程序运行短暂的作业

一个 pod 可以由许多容器和外部卷组成。 pod的分类如下图所示:

资源

服务对 Pod 进行跟踪。 为了定义 pod 和服务关联,使用选择器或标签而不是 IP 地址分配。 这简化了向服务添加 pod 和发布新版本的过程。 以下是不同的服务类型:

服务类型功能性
集群IP 默认类型; 在内部 IP 上公开服务并使服务可访问
节点端口允许开发人员设置自己的负载均衡器
负载均衡器自动化他们的配置
外部名称常用于在 Kubernetes 中创建服务。

使用的典型云部署是 LoadBalancer 类型。 Kubernetes 支持抽象高级 Ingress 以解决复杂性。 用户可以通过使用相同的负载均衡器在相同的 IP 地址内显示不同的服务。

阅读更多: Openshift 与 Kubernetes:Openshift 与 Kubernetes 之间的区别

Kubernetes 网络

大多数情况下,CNI(容器网络接口)用于模糊基本网络。 Calico 是一个全路由选项,也可以使用。 在这两个选项中,通信都是在集群范围的 pod 网络上完成的,并由 Calico 或 Flannel(CNI 提供者)控制。 容器可以通过 localhost 在 pod 内进行通信,没有任何限制。 从外部源到服务或从 pod 到服务的移动是通过 Kube-proxy 完成的。

持久存储

包含一些数据的目录在 Kubernetes 中称为卷。 pod 可以访问这些目录。 Kubernetes 中有很多存储类型。 pod 中的容器可以消耗任何存储空间。 NFS、Amazon Elastic Block Store、Iscsi、CephFS 等公共云服务用于将文件和块存储挂载到 Pod。 PV (PersistentVolumes) 是与现有存储资源绑定的集群范围的对象。

在命名空间内,存储消耗请求由 PersistentVolumeClaim 发起。 PV 的不同状态有可用、绑定、释放和失败。 StorageClasses 是抽象层。 它区分底层存储质量并分离出各种特征。 pod 可以在 StorageClasses 和 PersistentVolumeClaim 的帮助下动态请求新的存储。

资源

发现和发布服务

根据集群的版本,Kubernetes 依赖 Kube-DNS 或 CoreDNS 来发现服务。 这些集成的 DNS 服务创建、更新和删除 DNS 记录。 它通过一致且简单的命名方案帮助应用程序以其他 pod 和服务为目标。

示例(来源

对于 Kubernetes 服务,DNS 记录可以是service.namespace.svc.cluster.local

DNS记录,一个pod可以有: 10.32.0.125.namespace.pod.cluster.local

资源

命名空间

包含虚拟集群的物理集群称为命名空间。 它为多个用户提供单独的虚拟环境以及对 Kubernetes 对象的各自访问权限。

标签

标签用于区分单个命名空间中存在的资源。 属性由键或值对定义。 标签用于将组织结构映射到 Kubernetes 对象上。 它可以描述环境、发布状态、应用层或客户标识。 它可以防止对象的硬链接。

注释

注释用于向对象添加任意未识别的行李或元数据。 它用作声明性配置工具。

必读: Kubernetes Vs。 Docker:你应该知道的主要区别

从世界顶级大学获得软件工程学位获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

结论

Kubernetes 的技术发展迅速,是面向未来的高性价比解决方案。 它为应用程序提供了极大的稳定性。

本文解释Kubernetes 架构Kubernetes 组件所有基本概念

如果您有兴趣了解有关 Kubernetes、大数据的更多信息,请查看 upGrad 和 IIIT-B 的全栈软件开发执行 PG 计划,该计划专为工作专业人士设计,提供 500 多个小时的严格培训、9 个以上的项目,以及任务、IIIT-B 校友身份、实用的实践顶点项目和顶级公司的工作协助。

为未来的职业做准备

立即申请全栈开发的执行 PG 计划