什么是Kubernetes架构(kubernetes基本概念)

什么是Kubernetes架构(kubernetes基本概念)

浏览次数:
信息来源: 用户投稿
更新日期: 2026-01-25
文章简介

Kubernetes是一种为跨集群的服务发现提供松散耦合机制的架构。一个Kubernetes集群有一个或多个控制平面,以及一个或多个计算节点。总体而言,控制平面负责管理整个集群,公开应用程序接口(AP

2025阿里云双十一服务器活动

Kubernetes是一种为跨集群的服务发现提供松散耦合机制的架构。一个Kubernetes集群有一个或多个控制平面,以及一个或多个计算节点。总体而言,控制平面负责管理整个集群,公开应用程序接口(API),并根据所需配置安排计算节点的启动和关闭。每个计算节点都运行像Docker一样的容器运行时,以及与控制平面通信的代理kubelet。每个节点可以是裸机服务器,也可以是本地或基于云的虚拟机(VM)。

什么是Kubernetes架构组件?

Kubernetes集群的主要组件包括:

  • 节点:节点是托管容器化应用程序的虚拟机或物理服务器。集群中的每个节点都可以运行一个或多个应用程序实例。可能只有一个节点,一个典型的Kubernetes集群将有多个节点(具有数百或更多节点的部署并不少见)。
  • ImageRegistry:容器镜像保存在注册表中,并由控制平面传输到节点,以便在容器pod中执行。
  • Pods:Pods是容器化应用程序运行的地方。它们可以包含一个或多个容器,并且是Kubernetes集群中应用程序的最小部署单元。
  • 什么是Kubernetes控制平面架构?

    Kubernetes控制平面是Kubernetes集群的控制平面。其组成部分包括:

  • kube-apiserver。顾名思义,API服务器公开了作为通信中心的KubernetesAPI。通过命令行界面(CLI)或其他用户界面(UI)的外部通信传递到kube-apiserver,所有控制平面到节点的通信也通过API服务器。
  • etcd:存储与集群相关的所有数据的键值存储。etcd具有高可用性和一致性,因为对etcd的所有访问都是通过API服务器进行的。etcd中的信息通常以人类可读的YAML格式(代表递归的“YAMLAin'tMarkupLanguage”)。
  • kube-scheduler:创建新Pod时,该组件会根据资源需求、策略和关于地理位置和与其他工作负载干扰的“亲和性”规范将其分配给节点执行。
  • kube-controller-manager:虽然Kubernetes集群有多个控制器功能,但它们都被编译成一个名为kube-controller-manager的二进制文件。
  • 此过程中包含的控制器功能包括:

  • 复制控制器:确保集群中运行的每个复制pod存在正确数量的pod
  • 节点控制器:监控每个节点的健康状况,并在节点上线或无响应时通知集群
  • Endpoints控制器:连接Pod和服务以填充Endpoints对象
  • 服务帐户和令牌控制器:将API访问令牌和默认帐户分配给集群中的新命名空间
  • cloud-controller-manager:如果集群部分或全部基于云,云控制器管理器会将集群链接到云提供商的API。只有那些特定于云提供商的控件才会运行。云控制器管理器不存在于完全在本地的集群上。可以在集群中运行多个云控制器管理器以实现容错或提高整体云性能。
  • 云控制器管理器的元素包括:

  • 节点控制器:确定已停止响应的基于云的节点的状态,即是否已被删除
  • 路由控制器:在云提供商基础设施中建立路由
  • 服务控制器:管理云提供商的负载均衡器
  • 什么是Kubernetes节点架构?

    节点是Kubernetes放置Pod执行的机器,无论是虚拟机还是物理服务器。节点组件包括:

    什么是Kubernetes架构,kubernetes基本概念

  • kube-proxy:每个节点上的网络代理,它维护网络节点,允许从Pod到网络会话的通信,无论是在集群内部还是外部,如果可用的话,使用操作系统(OS)数据包过滤。
  • 容器运行时:负责运行容器化应用程序的软件。尽管Docker是最流行的,但Kubernetes支持任何遵循KubernetesCRI(容器运行时接口)的运行时。
  • 其他Kubernetes基础设施组件是什么?

  • Pods:通过封装一个(或多个)应用程序容器,Pods是Kubernetes应用程序最基本的执行单元。每个Pod都包含执行所需的代码和存储资源,并拥有自己的IP地址。Pod也包含配置选项。通常,一个Pod包含一个或几个容器,这些容器耦合到一个应用程序或业务功能中,并共享一组资源和数据。
  • Deployments:一种部署容器化应用程序Pod的方法。Deployment中描述的期望状态将导致控制器更改集群的实际状态,以有序地实现该状态。了解有关Kubernetes部署的更多信息。
  • ReplicaSet:确保指定数量的相同Pod在任何给定时间点运行。
  • ClusterDNS:提供运行Kubernetes服务所需的DNS记录。
  • 容器资源监控:在中央数据库中捕获和记录容器指标。
  • Kubernetes架构最佳实践和设计原则是什么?

    Gartner的容器最佳实践提出了一种平台战略,该战略考虑了安全、治理、监控、存储、网络、容器生命周期管理和编排,如Kubernetes。以下是构建Kubernetes集群的一些最佳实践:

  • 确保您已更新到最新的Kubernetes版本(撰写本文时为1.18)。
  • 预先投资于开发人员和运营团队的培训。
  • 在企业范围内建立治理。确保工具和供应商与Kubernetes编排保持一致并集成。
  • 通过将图像扫描流程集成为CI/CD流程的一部分、在构建和运行阶段进行扫描来增强安全性。从Github存储库中提取的开源代码应始终被视为可疑代码。
  • 在集群中采用基于角色的访问控制(RBAC)。最小特权、零信任模型应该是标准。
  • 通过仅使用非root用户并使文件系统只读来进一步保护容器。
  • 避免使用默认值,因为简单的声明更不容易出错并且更清楚地展示意图。
  • 使用基本DockerHub映像时要小心,这些映像可能包含恶意软件或包含不必要的代码。从精简、干净的代码开始,然后从那里构建包。小图像构建速度更快,在磁盘上更小,图像拉取也更快。
  • 保持容器简单。每个容器一个进程将让编排器报告该进程是否健康。
  • 当有疑问时,崩溃。Kubernetes会重启一个失败的容器,所以不要在失败时重启。
  • 详细一点。描述性标签可以帮助当前的开发人员,并且对于开发人员追随他们的脚步非常宝贵。
  • 不要对微服务过于细化。并非逻辑代码组件中的每个功能都需要自己的微服务。
  • 自动化,在有意义的地方。自动化CI/CD管道可以让您完全避免手动Kubernetes部署。
  • 使用livenessProbe和readinessProbe来帮助管理Pod生命周期,否则pod可能会在初始化时终止,或者在它们准备好之前开始接收用户请求。
  • Kubernetes架构简单直观。控制平面和节点之间的松散耦合允许几乎无限的灵活性,并且应用程序能够几乎即时横向扩展以满足不断变化的需求,将用户迁移到新版本,并支持从本地迁移到基于云的节点或在多个云之间利用每个云提供商的所需功能。

    标签:
    共享IP与专用IP地址(共享ip地址是什么意思)
    « 上一篇
    返回列表
    下一篇 »

    如本文对您有帮助,就请抽根烟吧!