Kubernetes架构介绍

251 阅读4分钟

阅读时间: 3 分钟

Kubernetes是一个用于部署和管理容器的开源平台。它提供了一个容器运行时间、容器编排、以容器为中心的基础设施编排、自愈机制、服务发现和负载平衡。它的主要应用是跨主机集群的应用容器的部署、扩展、管理和组合。

但Kubernetes不仅仅是一个容器编排器。它可以被认为是云原生应用程序的操作系统,因为它是应用程序运行的平台,就像桌面应用程序在MacOS、Windows或Linux上运行一样。

Kubernetes架构

从高层次来看,Kubernetes架构由一个控制平面(主控)、一个用于保持集群状态一致的分布式存储系统etcd),以及一些集群节点(Kubelets)。

Kubernetes控制平面

Kubernetes控制平面

控制平面是维护所有Kubernetes对象记录的系统。它持续管理对象的状态,对集群中的变化做出反应;它还致力于使系统对象的实际状态与期望状态相匹配。

控制平面由五个主要组件组成。

  • Kube-apiserver
  • Kube-controller-manager
  • Kube-scheduler
  • 等等
  • 云控制器-管理器

Kube-apiserver

API服务器提供API以支持不同类型的应用程序的生命周期协调(扩展、更新等)。它还充当集群的网关,所以API服务器必须能被集群外的客户端访问。

Kube-controller-manager

控制器管理器是一个运行核心控制循环的守护进程,观察集群的状态,并做出改变以推动状态朝向期望的状态。云控制器管理器集成到每个公共云中,以优化对可用性区域、虚拟机实例、存储服务以及DNS、路由和负载平衡的网络服务的支持。

Kube-scheduler

调度器负责集群中各节点的容器调度;它考虑到各种约束条件,如资源限制或保证,以及亲和与反亲和规范。

Etcd

一致高可用的键值存储,用作Kubernetes所有集群数据的备份存储。

如果你的Kubernetes集群使用etcd作为其备份存储,请确保你对这些数据有一个备份计划。

云控制器管理器

云控制器管理器让你把你的集群连接到云提供商的API中,并把与该云平台互动的组件与只与你的集群互动的组件分开。

注意: 如果你在自己的场所,或在自己的PC内的学习环境中运行Kubernetes,集群没有云控制器管理器。

以下控制器可以有云提供商的依赖性。

  • 节点控制器。用于检查云提供商,以确定一个节点在停止响应后是否已在云中被删除
  • 路由控制器。用于在底层云基础设施中设置路由
  • 服务控制器。用于创建、更新和删除云提供商的负载均衡器

集群节点

Kubernetes集群节点

集群节点是运行容器的机器,由主节点管理Kubelet是**Kubernetes中主要和最重要的控制器。**它负责驱动容器执行层,通常是Docker。

集群节点由三个主要部分组成。

  • Kubelet
  • Kube-proxy
  • 容器运行时间

Kubelet

一个在集群中每个节点上运行的代理。它确保容器在一个Pod中运行。

Kubelet通过各种机制提供一组PodSpecs,并确保这些PodSpecs中描述的容器正在运行和健康。kubelet不会管理不是由Kubernetes创建的容器。

Kube-Proxy

Kube代理是一个网络代理,运行在集群的每个节点上,实现了Kubernetes服务概念的一部分。

Kube-proxy维护节点上的网络规则。这些网络规则允许从集群内部或外部的网络会话与你的Pod进行网络通信。

Kube-proxy使用操作系统的数据包过滤层,如果有且可用的话。否则,kube-proxy会自己转发流量。

容器运行时间

容器运行时是负责运行容器的软件。

Kubernetes支持几种容器运行时间。DockercontainerdCRI-O,以及Kubernetes CRI(容器运行时接口)的任何实现。